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

Unified Diff: webrtc/media/engine/webrtcvideoframe.cc

Issue 1865283002: Use microsecond timestamp in cricket::VideoFrame. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add missing override, intending to reland. Created 4 years, 8 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
« no previous file with comments | « webrtc/media/engine/webrtcvideoframe.h ('k') | webrtc/media/engine/webrtcvideoframe_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvideoframe.cc
diff --git a/webrtc/media/engine/webrtcvideoframe.cc b/webrtc/media/engine/webrtcvideoframe.cc
index b7d87a5bded645df9a5d6e233216e73de7ab21a3..9c18235bb67de87291d341a2fbd0c7951a09cf61 100644
--- a/webrtc/media/engine/webrtcvideoframe.cc
+++ b/webrtc/media/engine/webrtcvideoframe.cc
@@ -22,18 +22,24 @@ 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,
+ webrtc::VideoRotation rotation,
+ int64_t timestamp_us)
+ : video_frame_buffer_(buffer),
+ timestamp_us_(timestamp_us),
+ rotation_(rotation) {}
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) {
-}
+ : WebRtcVideoFrame(buffer,
+ rotation,
+ time_stamp_ns / rtc::kNumNanosecsPerMicrosec) {}
WebRtcVideoFrame::~WebRtcVideoFrame() {}
@@ -47,7 +53,7 @@ bool WebRtcVideoFrame::Init(uint32_t format,
int64_t time_stamp_ns,
webrtc::VideoRotation rotation) {
return Reset(format, w, h, dw, dh, sample, sample_size,
- time_stamp_ns, rotation,
+ time_stamp_ns / rtc::kNumNanosecsPerMicrosec, rotation,
true /*apply_rotation*/);
}
@@ -55,7 +61,7 @@ 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->time_stamp / rtc::kNumNanosecsPerMicrosec,
frame->rotation, apply_rotation);
}
@@ -126,9 +132,7 @@ WebRtcVideoFrame::video_frame_buffer() const {
}
VideoFrame* WebRtcVideoFrame::Copy() const {
- WebRtcVideoFrame* new_frame = new WebRtcVideoFrame(
- video_frame_buffer_, time_stamp_ns_, rotation_);
- return new_frame;
+ return new WebRtcVideoFrame(video_frame_buffer_, rotation_, timestamp_us_);
}
size_t WebRtcVideoFrame::ConvertToRgbBuffer(uint32_t to_fourcc,
@@ -147,7 +151,7 @@ bool WebRtcVideoFrame::Reset(uint32_t format,
int dh,
uint8_t* sample,
size_t sample_size,
- int64_t time_stamp_ns,
+ int64_t timestamp_us,
webrtc::VideoRotation rotation,
bool apply_rotation) {
if (!Validate(format, w, h, sample, sample_size)) {
@@ -166,8 +170,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;
@@ -192,21 +195,27 @@ bool WebRtcVideoFrame::Reset(uint32_t format,
<< " return code : " << r;
return false;
}
+ timestamp_us_ = timestamp_us;
return true;
}
-VideoFrame* WebRtcVideoFrame::CreateEmptyFrame(
- int w, int h,
- int64_t time_stamp_ns) const {
+VideoFrame* WebRtcVideoFrame::CreateEmptyFrame(int w,
+ int h,
+ 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 +246,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.
« no previous file with comments | « webrtc/media/engine/webrtcvideoframe.h ('k') | webrtc/media/engine/webrtcvideoframe_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698