Chromium Code Reviews| Index: webrtc/media/engine/webrtcvideoframe.cc |
| diff --git a/webrtc/media/engine/webrtcvideoframe.cc b/webrtc/media/engine/webrtcvideoframe.cc |
| index 3a2d2def0e3af094681610aab54803ad0a98eba1..a2edfdc0a1dfcabeba3fe324a2d4f7df535ffb51 100644 |
| --- a/webrtc/media/engine/webrtcvideoframe.cc |
| +++ b/webrtc/media/engine/webrtcvideoframe.cc |
| @@ -22,17 +22,17 @@ using webrtc::kVPlane; |
| namespace cricket { |
| -WebRtcVideoFrame::WebRtcVideoFrame(): |
| - time_stamp_ns_(0), |
| - rotation_(webrtc::kVideoRotation_0) {} |
| +WebRtcVideoFrame::WebRtcVideoFrame() |
| + : timestamp_us_(0), rotation_(webrtc::kVideoRotation_0) {} |
| WebRtcVideoFrame::WebRtcVideoFrame( |
| const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer, |
| int64_t time_stamp_ns, |
| webrtc::VideoRotation rotation) |
| : video_frame_buffer_(buffer), |
| - time_stamp_ns_(time_stamp_ns), |
| rotation_(rotation) { |
| + // Convert to usecs. |
| + SetTimeStamp(time_stamp_ns); |
| } |
| WebRtcVideoFrame::~WebRtcVideoFrame() {} |
| @@ -46,17 +46,24 @@ bool WebRtcVideoFrame::Init(uint32_t format, |
| size_t sample_size, |
| int64_t time_stamp_ns, |
| webrtc::VideoRotation rotation) { |
| - return Reset(format, w, h, dw, dh, sample, sample_size, |
| - time_stamp_ns, rotation, |
| - true /*apply_rotation*/); |
| + if (!Reset(format, w, h, dw, dh, sample, sample_size, rotation, |
| + true /*apply_rotation*/)) |
| + return false; |
| + |
| + SetTimeStamp(time_stamp_ns); |
| + return true; |
| } |
| bool WebRtcVideoFrame::Init(const CapturedFrame* frame, int dw, int dh, |
| bool apply_rotation) { |
| - return Reset(frame->fourcc, frame->width, frame->height, dw, dh, |
| - static_cast<uint8_t*>(frame->data), frame->data_size, |
| - frame->time_stamp, |
| - frame->rotation, apply_rotation); |
| + if (!Reset(frame->fourcc, frame->width, frame->height, dw, dh, |
| + static_cast<uint8_t*>(frame->data), frame->data_size, |
| + frame->rotation, apply_rotation)) { |
| + return false; |
| + } |
| + SetTimeStamp(frame->time_stamp); |
| + |
| + return true; |
| } |
| bool WebRtcVideoFrame::InitToBlack(int w, int h, |
| @@ -127,7 +134,9 @@ WebRtcVideoFrame::GetVideoFrameBuffer() const { |
| VideoFrame* WebRtcVideoFrame::Copy() const { |
| WebRtcVideoFrame* new_frame = new WebRtcVideoFrame( |
| - video_frame_buffer_, time_stamp_ns_, rotation_); |
| + video_frame_buffer_, 0 /* Dummy timestamp, overwridden below */, |
|
pbos-webrtc
2016/04/13 12:04:04
That seems weird? rtc::kNumNanosecsPerMicrosec * t
nisse-webrtc
2016/04/13 13:02:12
I added a constructor with us timestamp (and argum
|
| + rotation_); |
| + new_frame->set_timestamp_us(timestamp_us_); |
| return new_frame; |
| } |
| @@ -147,7 +156,6 @@ bool WebRtcVideoFrame::Reset(uint32_t format, |
| int dh, |
| uint8_t* sample, |
| size_t sample_size, |
| - int64_t time_stamp_ns, |
| webrtc::VideoRotation rotation, |
| bool apply_rotation) { |
| if (!Validate(format, w, h, sample, sample_size)) { |
| @@ -166,8 +174,7 @@ bool WebRtcVideoFrame::Reset(uint32_t format, |
| new_height = dw; |
| } |
| - InitToEmptyBuffer(new_width, new_height, |
| - time_stamp_ns); |
| + InitToEmptyBuffer(new_width, new_height); |
| rotation_ = apply_rotation ? webrtc::kVideoRotation_0 : rotation; |
| int horiz_crop = ((w - dw) / 2) & ~1; |
| @@ -197,16 +204,21 @@ bool WebRtcVideoFrame::Reset(uint32_t format, |
| VideoFrame* WebRtcVideoFrame::CreateEmptyFrame( |
| int w, int h, |
|
pbos-webrtc
2016/04/13 12:04:04
git cl format here
nisse-webrtc
2016/04/13 13:02:12
Done.
|
| - int64_t time_stamp_ns) const { |
| + int64_t timestamp_us) const { |
| WebRtcVideoFrame* frame = new WebRtcVideoFrame(); |
| - frame->InitToEmptyBuffer(w, h, time_stamp_ns); |
| + frame->InitToEmptyBuffer(w, h, rtc::kNumNanosecsPerMicrosec * timestamp_us); |
| return frame; |
| } |
| +void WebRtcVideoFrame::InitToEmptyBuffer(int w, int h) { |
| + video_frame_buffer_ = new rtc::RefCountedObject<webrtc::I420Buffer>(w, h); |
| + rotation_ = webrtc::kVideoRotation_0; |
| +} |
| + |
| void WebRtcVideoFrame::InitToEmptyBuffer(int w, int h, |
| int64_t time_stamp_ns) { |
| video_frame_buffer_ = new rtc::RefCountedObject<webrtc::I420Buffer>(w, h); |
| - time_stamp_ns_ = time_stamp_ns; |
| + SetTimeStamp(time_stamp_ns); |
| rotation_ = webrtc::kVideoRotation_0; |
| } |
| @@ -237,8 +249,8 @@ const VideoFrame* WebRtcVideoFrame::GetCopyWithRotationApplied() const { |
| rotated_height = orig_width; |
| } |
| - rotated_frame_.reset(CreateEmptyFrame(rotated_width, rotated_height, |
| - GetTimeStamp())); |
| + rotated_frame_.reset( |
| + CreateEmptyFrame(rotated_width, rotated_height, timestamp_us_)); |
| // TODO(guoweis): Add a function in webrtc_libyuv.cc to convert from |
| // VideoRotation to libyuv::RotationMode. |