| Index: webrtc/media/engine/webrtcvideoframe.h
|
| diff --git a/webrtc/media/engine/webrtcvideoframe.h b/webrtc/media/engine/webrtcvideoframe.h
|
| index 0e1d8099bcae34b37fdfc9a658b8b2670df78b77..a2034ec77d5911e5dbeaccbd98a948de0dc67399 100644
|
| --- a/webrtc/media/engine/webrtcvideoframe.h
|
| +++ b/webrtc/media/engine/webrtcvideoframe.h
|
| @@ -27,6 +27,13 @@ struct CapturedFrame;
|
| class WebRtcVideoFrame : public VideoFrame {
|
| public:
|
| WebRtcVideoFrame();
|
| +
|
| + // Preferred construction, with microsecond timestamp.
|
| + WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
|
| + webrtc::VideoRotation rotation,
|
| + int64_t timestamp_us);
|
| +
|
| + // TODO(nisse): Deprecate/delete.
|
| WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
|
| int64_t time_stamp_ns,
|
| webrtc::VideoRotation rotation);
|
| @@ -47,8 +54,13 @@ class WebRtcVideoFrame : public VideoFrame {
|
| int64_t time_stamp_ns,
|
| webrtc::VideoRotation rotation);
|
|
|
| + // The timestamp of the captured frame is expected to use the same
|
| + // timescale and epoch as rtc::Time.
|
| + // TODO(nisse): Consider adding a warning message, or even an RTC_DCHECK, if
|
| + // the time is too far off.
|
| bool Init(const CapturedFrame* frame, int dw, int dh, bool apply_rotation);
|
|
|
| + void InitToEmptyBuffer(int w, int h);
|
| void InitToEmptyBuffer(int w, int h, int64_t time_stamp_ns);
|
|
|
| bool InitToBlack(int w, int h, int64_t time_stamp_ns);
|
| @@ -69,10 +81,9 @@ class WebRtcVideoFrame : public VideoFrame {
|
| rtc::scoped_refptr<webrtc::VideoFrameBuffer> video_frame_buffer()
|
| const override;
|
|
|
| - int64_t GetTimeStamp() const override { return time_stamp_ns_; }
|
| - void SetTimeStamp(int64_t time_stamp_ns) override {
|
| - time_stamp_ns_ = time_stamp_ns;
|
| - }
|
| + /* System monotonic clock */
|
| + int64_t timestamp_us() const override { return timestamp_us_; }
|
| + void set_timestamp_us(int64_t time_us) override { timestamp_us_ = time_us; };
|
|
|
| webrtc::VideoRotation rotation() const override { return rotation_; }
|
|
|
| @@ -95,15 +106,15 @@ class WebRtcVideoFrame : public VideoFrame {
|
| // |dh| is destination height, like |dw|, but must be a positive number.
|
| // Returns whether the function succeeded or failed.
|
| bool Reset(uint32_t format,
|
| - int w,
|
| - int h,
|
| - int dw,
|
| - int dh,
|
| - uint8_t* sample,
|
| - size_t sample_size,
|
| - int64_t time_stamp_ns,
|
| - webrtc::VideoRotation rotation,
|
| - bool apply_rotation);
|
| + int w,
|
| + int h,
|
| + int dw,
|
| + int dh,
|
| + uint8_t* sample,
|
| + size_t sample_size,
|
| + int64_t timestamp_us,
|
| + webrtc::VideoRotation rotation,
|
| + bool apply_rotation);
|
|
|
| private:
|
| VideoFrame* CreateEmptyFrame(int w, int h,
|
| @@ -111,7 +122,7 @@ class WebRtcVideoFrame : public VideoFrame {
|
|
|
| // An opaque reference counted handle that stores the pixel data.
|
| rtc::scoped_refptr<webrtc::VideoFrameBuffer> video_frame_buffer_;
|
| - int64_t time_stamp_ns_;
|
| + int64_t timestamp_us_;
|
| webrtc::VideoRotation rotation_;
|
|
|
| // This is mutable as the calculation is expensive but once calculated, it
|
|
|