Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1215)

Unified Diff: content/renderer/media/video_track_recorder.cc

Issue 1610473002: MediaRecorder: wire the bitRate settings in Blink and content (2nd go) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/video_track_recorder.cc
diff --git a/content/renderer/media/video_track_recorder.cc b/content/renderer/media/video_track_recorder.cc
index 9c923cc11f705d417e78d110f7a59dc10e1c058b..00ecbee9363b308a0211fed2cba4af7a162b76fc 100644
--- a/content/renderer/media/video_track_recorder.cc
+++ b/content/renderer/media/video_track_recorder.cc
@@ -78,7 +78,9 @@ class VideoTrackRecorder::VpxEncoder final
static void ShutdownEncoder(scoped_ptr<base::Thread> encoding_thread,
ScopedVpxCodecCtxPtr encoder);
- VpxEncoder(bool use_vp9, const OnEncodedVideoCB& on_encoded_video_callback);
+ VpxEncoder(bool use_vp9,
+ const OnEncodedVideoCB& on_encoded_video_callback,
+ int32_t bits_per_second);
void StartFrameEncode(const scoped_refptr<VideoFrame>& frame,
base::TimeTicks capture_timestamp);
@@ -107,15 +109,17 @@ class VideoTrackRecorder::VpxEncoder final
// Force usage of VP9 for encoding, instead of VP8 which is the default.
const bool use_vp9_;
+ // This callback should be exercised on IO thread.
+ const OnEncodedVideoCB on_encoded_video_callback_;
+
+ const int32_t bits_per_second_;
Peter Beverloo 2016/01/20 18:35:35 nit: all other members have documentation
mcasas 2016/01/20 21:13:22 Done.
+
// Used to shutdown properly on the same thread we were created.
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
// Task runner where frames to encode and reply callbacks must happen.
scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner_;
- // This callback should be exercised on IO thread.
- const OnEncodedVideoCB on_encoded_video_callback_;
-
// Thread for encoding. Active for the lifetime of VpxEncoder. All variables
// below this are used in this thread.
scoped_ptr<base::Thread> encoding_thread_;
@@ -143,11 +147,13 @@ void VideoTrackRecorder::VpxEncoder::ShutdownEncoder(
VideoTrackRecorder::VpxEncoder::VpxEncoder(
bool use_vp9,
- const OnEncodedVideoCB& on_encoded_video_callback)
+ const OnEncodedVideoCB& on_encoded_video_callback,
+ int32_t bits_per_second)
: paused_(false),
use_vp9_(use_vp9),
- main_task_runner_(base::MessageLoop::current()->task_runner()),
on_encoded_video_callback_(on_encoded_video_callback),
+ bits_per_second_(bits_per_second),
+ main_task_runner_(base::MessageLoop::current()->task_runner()),
encoding_thread_(new base::Thread("EncodingThread")) {
DCHECK(!on_encoded_video_callback_.is_null());
@@ -258,13 +264,18 @@ void VideoTrackRecorder::VpxEncoder::ConfigureEncoding(const gfx::Size& size) {
0 /* reserved */);
DCHECK_EQ(VPX_CODEC_OK, result);
- // Adjust default bit rate to account for the actual size.
DCHECK_EQ(320u, codec_config_.g_w);
DCHECK_EQ(240u, codec_config_.g_h);
DCHECK_EQ(256u, codec_config_.rc_target_bitrate);
- codec_config_.rc_target_bitrate = size.GetArea() *
- codec_config_.rc_target_bitrate /
- codec_config_.g_w / codec_config_.g_h;
+ // Use the selected bitrate or adjust default bit rate to account for the
+ // actual size.
+ if (bits_per_second_ > 0) {
+ codec_config_.rc_target_bitrate = bits_per_second_;
+ } else {
+ codec_config_.rc_target_bitrate = size.GetArea() *
+ codec_config_.rc_target_bitrate /
+ codec_config_.g_w / codec_config_.g_h;
+ }
// Both VP8/VP9 configuration should be Variable BitRate by default.
DCHECK_EQ(VPX_VBR, codec_config_.rc_end_usage);
if (use_vp9_) {
@@ -348,9 +359,11 @@ base::TimeDelta VideoTrackRecorder::VpxEncoder::CalculateFrameDuration(
VideoTrackRecorder::VideoTrackRecorder(
bool use_vp9,
const blink::WebMediaStreamTrack& track,
- const OnEncodedVideoCB& on_encoded_video_callback)
+ const OnEncodedVideoCB& on_encoded_video_callback,
+ int32_t bits_per_second)
: track_(track),
- encoder_(new VpxEncoder(use_vp9, on_encoded_video_callback)) {
+ encoder_(
+ new VpxEncoder(use_vp9, on_encoded_video_callback, bits_per_second)) {
DCHECK(main_render_thread_checker_.CalledOnValidThread());
DCHECK(!track_.isNull());
DCHECK(track_.extraData());

Powered by Google App Engine
This is Rietveld 408576698