1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1452c5c708de6f5bcf9c2a58cece45013aa5efacd7pbos@webrtc.org#include <map> 1552c5c708de6f5bcf9c2a58cece45013aa5efacd7pbos@webrtc.org 167e5dc8741fbd5f07a709e6fd4d2cd8b08b7cee94pbos@webrtc.org#include "webrtc/engine_configurations.h" 177e5dc8741fbd5f07a709e6fd4d2cd8b08b7cee94pbos@webrtc.org#include "webrtc/modules/video_render/include/video_render.h" 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc { 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass CriticalSectionWrapper; 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass IncomingVideoStream; 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass IVideoRender; 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Class definitions 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ModuleVideoRenderImpl: public VideoRender 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * VideoRenderer constructor/destructor 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 31e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org ModuleVideoRenderImpl(const int32_t id, 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const VideoRenderType videoRenderType, 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void* window, const bool fullscreen); 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual ~ModuleVideoRenderImpl(); 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Change the unique identifier of this object 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 40e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t ChangeUniqueId(const int32_t id); 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 42e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t TimeUntilNextProcess(); 43e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t Process(); 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns the render window 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual void* Window(); 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Change render window 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 53e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t ChangeWindow(void* window); 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns module id 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 58e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org int32_t Id(); 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /************************************************************************** 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Incoming Streams 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ***************************************************************************/ 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Add incoming render stream 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual VideoRenderCallback 70e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org * AddIncomingRenderStream(const uint32_t streamId, 71e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t zOrder, 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float left, const float top, 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const float right, const float bottom); 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Delete incoming render stream 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 77e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t 78e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org DeleteIncomingRenderStream(const uint32_t streamId); 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Add incoming render callback, used for external rendering 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 83e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t 84e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org AddExternalRenderCallback(const uint32_t streamId, 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org VideoRenderCallback* renderObject); 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Get the porperties for an incoming render stream 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 90e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t 91e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org GetIncomingRenderStreamProperties(const uint32_t streamId, 92e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint32_t& zOrder, 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& left, float& top, 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org float& right, float& bottom) const; 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Incoming frame rate for the specified stream. 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 98e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual uint32_t GetIncomingFrameRate(const uint32_t streamId); 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns the number of incoming streams added to this render module 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 103e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual uint32_t GetNumIncomingRenderStreams() const; 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns true if this render module has the streamId added, false otherwise. 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 108e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual bool HasIncomingRenderStream(const uint32_t streamId) const; 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 113e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t 114e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org RegisterRawFrameCallback(const uint32_t streamId, 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org VideoRenderCallback* callbackObj); 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 117e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t GetLastRenderedFrame(const uint32_t streamId, 118e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org I420VideoFrame &frame) const; 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 120e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetExpectedRenderDelay(uint32_t stream_id, 121e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org int32_t delay_ms); 122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /************************************************************************** 124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Start/Stop 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ***************************************************************************/ 128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Starts rendering the specified stream 131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 132e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t StartRender(const uint32_t streamId); 133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Stops the renderer 136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 137e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t StopRender(const uint32_t streamId); 138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Sets the renderer in start state, no streams removed. 141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 142e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t ResetRender(); 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /************************************************************************** 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Properties 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ***************************************************************************/ 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns the prefered render video type 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual RawVideoType PreferredVideoType() const; 154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returns true if the renderer is in fullscreen mode, otherwise false. 157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual bool IsFullScreen(); 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Gets screen resolution in pixels 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 163e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t 164e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org GetScreenResolution(uint32_t& screenWidth, 165e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org uint32_t& screenHeight) const; 166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Get the actual render rate for this stream. I.e rendered frame rate, 169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * not frames delivered to the renderer. 170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 171e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual uint32_t RenderFrameRate(const uint32_t streamId); 172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* 174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Set cropping of incoming stream 175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 176e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetStreamCropping(const uint32_t streamId, 177e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float left, const float top, 178e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float right, const float bottom); 179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 180e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t ConfigureRenderer(const uint32_t streamId, 181e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const unsigned int zOrder, 182e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float left, const float top, 183e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float right, const float bottom); 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 185e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetTransparentBackground(const bool enable); 186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 187e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t FullScreenRender(void* window, const bool enable); 188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 189e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetBitmap(const void* bitMap, 190e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint8_t pictureId, 191e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const void* colorKey, 192e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float left, const float top, 193e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float right, const float bottom); 194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 195e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetText(const uint8_t textId, 196e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint8_t* text, 197e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const int32_t textLength, 198e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t textColorRef, 199e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t backgroundColorRef, 200e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float left, const float top, 201e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const float right, const float bottom); 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 203e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetStartImage(const uint32_t streamId, 204e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const I420VideoFrame& videoFrame); 205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 206e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t SetTimeoutImage(const uint32_t streamId, 207e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const I420VideoFrame& videoFrame, 208e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const uint32_t timeout); 209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 210e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org virtual int32_t MirrorRenderStream(const int renderId, 211e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const bool enable, 212e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const bool mirrorXAxis, 213e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org const bool mirrorYAxis); 214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 216e1ca446434022ad0d05ebd5ed2feafb08ae940e3pbos@webrtc.org int32_t _id; 217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionWrapper& _moduleCrit; 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void* _ptrWindow; 219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _fullScreen; 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org IVideoRender* _ptrRenderer; 22252c5c708de6f5bcf9c2a58cece45013aa5efacd7pbos@webrtc.org typedef std::map<uint32_t, IncomingVideoStream*> IncomingVideoStreamMap; 22352c5c708de6f5bcf9c2a58cece45013aa5efacd7pbos@webrtc.org IncomingVideoStreamMap _streamRenderMap; 224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2263b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_ 229