Intel® Collaboration Suite for WebRTC  version 4.3.1
Open WebRTC Toolkit (OWT) Client SDK for Windows*
videorendererinterface.h
1 // Copyright (C) <2018> Intel Corporation
2 //
3 // SPDX-License-Identifier: Apache-2.0
4 #ifndef OWT_BASE_VIDEORENDERERINTERFACE_H_
5 #define OWT_BASE_VIDEORENDERERINTERFACE_H_
6 #include <memory>
7 #include "owt/base/commontypes.h"
8 #if defined(WEBRTC_WIN)
9 #include <Windows.h>
10 #endif
11 #if defined(WEBRTC_LINUX)
12 #include <X11/Xlib.h>
13 #endif
14 namespace owt {
15 namespace base {
16 enum class VideoBufferType {
17  kI420,
18  kARGB,
19 };
20 enum class VideoRendererType {
21  kI420,
22  kARGB,
23 };
25 struct VideoBuffer {
27  uint8_t* buffer;
30  // Buffer type
31  VideoBufferType type;
32  ~VideoBuffer() { delete[] buffer; }
33 };
35 #if defined(WEBRTC_WIN)
37  public:
38  VideoRenderWindow() : wnd_(nullptr) {}
39  virtual ~VideoRenderWindow() {}
44  void SetWindowHandle(HWND wnd) { wnd_ = wnd; }
49  HWND GetWindowHandle() { return wnd_; }
50  private:
51  HWND wnd_;
52 };
53 #endif
54 #if defined(WEBRTC_LINUX)
55 class VideoRenderWindow {
56  public:
57  VideoRenderWindow() : wnd_(0) {}
58  virtual ~VideoRenderWindow() {}
63  void SetWindowHandle(Window wnd) { wnd_ = wnd; }
68  Window GetWindowHandle() { return wnd_; }
69  private:
70  Window wnd_;
71 };
72 #endif
73 class VideoRendererInterface {
75  public:
77  virtual void RenderFrame(std::unique_ptr<VideoBuffer> buffer) {}
78  virtual ~VideoRendererInterface() {}
80  virtual VideoRendererType Type() = 0;
81 };
82 } // namespace base
83 } // namespace owt
84 #endif // OWT_BASE_VIDEORENDERERINTERFACE_H_
void SetWindowHandle(HWND wnd)
Definition: videorendererinterface.h:44
HWND GetWindowHandle()
Definition: videorendererinterface.h:49
virtual VideoRendererType Type()=0
Render type that indicates the VideoBufferType the renderer would receive.
Definition: audioplayerinterface.h:8
Video buffer and its information.
Definition: videorendererinterface.h:25
VideoRenderWindow wraps a native Window handle.
Definition: videorendererinterface.h:36
virtual void RenderFrame(std::unique_ptr< VideoBuffer > buffer)
Passes video buffer to renderer.
Definition: videorendererinterface.h:77
Resolution resolution
Resolution for the Video buffer.
Definition: videorendererinterface.h:29
This class represents a resolution value.
Definition: commontypes.h:40
Interface for rendering VideoFrames in ARGB/I420 format from a VideoTrack.
Definition: videorendererinterface.h:74
uint8_t * buffer
Video buffer.
Definition: videorendererinterface.h:27