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

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

Issue 2402853002: Revert of Make cricket::VideoFrame inherit webrtc::VideoFrame. (Closed)
Patch Set: Created 4 years, 2 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/webrtcvideoengine2.cc ('k') | webrtc/media/engine/webrtcvideoframe.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvideoframe.h
diff --git a/webrtc/media/engine/webrtcvideoframe.h b/webrtc/media/engine/webrtcvideoframe.h
index 3c36b005d6bca131e712a50295d0c5ed6aa96179..79ad571236cfd922898989fd453f461daecc12db 100644
--- a/webrtc/media/engine/webrtcvideoframe.h
+++ b/webrtc/media/engine/webrtcvideoframe.h
@@ -7,10 +7,6 @@
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
-
-// TODO(nisse): Deprecated, replace cricket::WebRtcVideoFrame with
-// webrtc::VideoFrame everywhere, then delete this file. See
-// https://bugs.chromium.org/p/webrtc/issues/detail?id=5682.
#ifndef WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOFRAME_H_
#define WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOFRAME_H_
@@ -26,22 +22,100 @@
namespace cricket {
+// TODO(nisse): This class will be deleted when the cricket::VideoFrame and
+// webrtc::VideoFrame classes are merged. See
+// https://bugs.chromium.org/p/webrtc/issues/detail?id=5682. Try to use only the
+// preferred constructor, and the non-deprecated methods of the VideoFrame base
+// class.
class WebRtcVideoFrame : public VideoFrame {
public:
- WebRtcVideoFrame() : VideoFrame() {}
- WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
- webrtc::VideoRotation rotation,
- int64_t timestamp_us)
- : VideoFrame(buffer, rotation, timestamp_us) {}
+ // TODO(nisse): Deprecated. Using the default constructor violates the
+ // reasonable assumption that video_frame_buffer() returns a valid buffer.
+ WebRtcVideoFrame();
+
+ // Preferred constructor.
WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
webrtc::VideoRotation rotation,
int64_t timestamp_us,
- uint32_t transport_frame_id)
- : VideoFrame(buffer, rotation, timestamp_us) {
- // For now, transport_frame_id and rtp timestamp are the same.
- // TODO(nisse): Must be handled differently for QUIC.
- set_timestamp(transport_frame_id);
- }
+ uint32_t transport_frame_id);
+
+ // Alternative constructor, when not knowing or caring about the
+ // transport_frame_id. Which is set to zero.
+ WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
+ webrtc::VideoRotation rotation,
+ int64_t timestamp_us);
+
+ // TODO(nisse): Deprecated, delete as soon as all callers have switched to the
+ // above constructor with microsecond timestamp.
+ WebRtcVideoFrame(const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer,
+ int64_t timestamp_ns,
+ webrtc::VideoRotation rotation);
+
+ ~WebRtcVideoFrame();
+
+ // TODO(nisse): Init (and its helpers Reset and Validate) are used
+ // only by the LoadFrame function used in the VideoFrame unittests.
+ // Rewrite tests, and delete this function.
+
+ // Creates a frame from a raw sample with FourCC "format" and size "w" x "h".
+ // "h" can be negative indicating a vertically flipped image.
+ // "dh" is destination height if cropping is desired and is always positive.
+ // Returns "true" if successful.
+ bool Init(uint32_t format,
+ int w,
+ int h,
+ int dw,
+ int dh,
+ uint8_t* sample,
+ size_t sample_size,
+ int64_t timestamp_ns,
+ webrtc::VideoRotation rotation);
+
+ void InitToEmptyBuffer(int w, int h);
+
+ int width() const override;
+ int height() const override;
+
+ const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& video_frame_buffer()
+ const override;
+
+ uint32_t transport_frame_id() const override;
+
+ int64_t timestamp_us() const override;
+ void set_timestamp_us(int64_t time_us) override;
+
+ webrtc::VideoRotation rotation() const override;
+
+ protected:
+ // Creates a frame from a raw sample with FourCC |format| and size |w| x |h|.
+ // |h| can be negative indicating a vertically flipped image.
+ // |dw| is destination width; can be less than |w| if cropping is desired.
+ // |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 timestamp_us,
+ webrtc::VideoRotation rotation,
+ bool apply_rotation);
+
+ private:
+ // Tests mutate |rotation_|, so the base test class is a friend.
+ friend class WebRtcVideoFrameTest;
+
+ // An opaque reference counted handle that stores the pixel data.
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> video_frame_buffer_;
+ int64_t timestamp_us_;
+ uint32_t transport_frame_id_;
+ webrtc::VideoRotation rotation_;
+
+ // This is mutable as the calculation is expensive but once calculated, it
+ // remains const.
+ mutable std::unique_ptr<VideoFrame> rotated_frame_;
};
} // namespace cricket
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | webrtc/media/engine/webrtcvideoframe.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698