OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ |
6 #define CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ | 6 #define CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ |
7 | 7 |
8 #include "media/base/video_frame.h" | 8 #include "media/base/video_frame.h" |
9 #include "third_party/webrtc/common_video/interface/video_frame_buffer.h" | 9 #include "third_party/webrtc/common_video/interface/video_frame_buffer.h" |
10 | 10 |
11 namespace content { | 11 namespace content { |
12 // Thin adapter from media::VideoFrame to webrtc::VideoFrameBuffer. This | 12 // Thin adapter from media::VideoFrame to webrtc::VideoFrameBuffer. This |
13 // implementation is read-only and will return null if trying to get a | 13 // implementation is read-only and will return null if trying to get a |
14 // non-const pointer to the pixel data. This object will be accessed from | 14 // non-const pointer to the pixel data. This object will be accessed from |
15 // different threads, but that's safe since it's read-only. | 15 // different threads, but that's safe since it's read-only. |
16 class WebRtcVideoFrameAdapter : public webrtc::VideoFrameBuffer { | 16 class WebRtcVideoFrameAdapter : public webrtc::VideoFrameBuffer { |
17 public: | 17 public: |
18 explicit WebRtcVideoFrameAdapter( | 18 explicit WebRtcVideoFrameAdapter( |
19 const scoped_refptr<media::VideoFrame>& frame); | 19 const scoped_refptr<media::VideoFrame>& frame); |
20 | 20 |
21 private: | 21 private: |
22 int width() const override; | 22 int width() const override; |
23 int height() const override; | 23 int height() const override; |
24 | 24 |
25 const uint8_t* data(webrtc::PlaneType type) const override; | 25 const uint8_t* data(webrtc::PlaneType type) const override; |
26 | 26 |
27 uint8_t* data(webrtc::PlaneType type) override; | |
28 | |
29 int stride(webrtc::PlaneType type) const override; | 27 int stride(webrtc::PlaneType type) const override; |
30 | 28 |
31 void* native_handle() const override; | 29 void* native_handle() const override; |
32 | 30 |
33 rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer() override; | 31 rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer() override; |
34 | 32 |
35 friend class rtc::RefCountedObject<WebRtcVideoFrameAdapter>; | 33 friend class rtc::RefCountedObject<WebRtcVideoFrameAdapter>; |
36 | 34 |
37 protected: | 35 protected: |
38 ~WebRtcVideoFrameAdapter() override; | 36 ~WebRtcVideoFrameAdapter() override; |
39 | 37 |
40 scoped_refptr<media::VideoFrame> frame_; | 38 scoped_refptr<media::VideoFrame> frame_; |
41 }; | 39 }; |
42 | 40 |
43 } // namespace content | 41 } // namespace content |
44 | 42 |
45 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ | 43 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_ |
OLD | NEW |