Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / content / renderer / media / webrtc / webrtc_video_frame_adapter.h
blobc7f83d8916462c461ea7002dbbb4568627c4c047
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
3 // found in the LICENSE file.
5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_
6 #define CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_
8 #include "media/base/video_frame.h"
9 #include "third_party/webrtc/common_video/interface/video_frame_buffer.h"
11 namespace content {
12 // Thin adapter from media::VideoFrame to webrtc::VideoFrameBuffer. This
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
15 // different threads, but that's safe since it's read-only.
16 class WebRtcVideoFrameAdapter : public webrtc::VideoFrameBuffer {
17 public:
18 explicit WebRtcVideoFrameAdapter(
19 const scoped_refptr<media::VideoFrame>& frame);
21 private:
22 int width() const override;
23 int height() const override;
25 const uint8_t* data(webrtc::PlaneType type) const override;
27 int stride(webrtc::PlaneType type) const override;
29 void* native_handle() const override;
31 rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer() override;
33 friend class rtc::RefCountedObject<WebRtcVideoFrameAdapter>;
35 protected:
36 ~WebRtcVideoFrameAdapter() override;
38 scoped_refptr<media::VideoFrame> frame_;
41 } // namespace content
43 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_VIDEO_FRAME_ADAPTER_H_