1 // Copyright 2013 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. 4 5 #ifndef CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_H_ 6 #define CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_H_ 7 8 #include "base/message_loop/message_loop_proxy.h" 9 #include "base/threading/thread.h" 10 #include "content/common/content_export.h" 11 #include "third_party/libjingle/source/talk/media/webrtc/webrtcvideodecoderfactory.h" 12 #include "third_party/webrtc/modules/video_coding/codecs/interface/video_codec_interface.h" 13 14 namespace webrtc { 15 class VideoDecoder; 16 } // namespace webrtc 17 18 namespace media { 19 class GpuVideoAcceleratorFactories; 20 } // namespace media 21 22 namespace content { 23 24 // TODO(wuchengli): add unittest. 25 class CONTENT_EXPORT RTCVideoDecoderFactory NON_EXPORTED_BASE(public cricket::WebRtcVideoDecoderFactory)26 : NON_EXPORTED_BASE(public cricket::WebRtcVideoDecoderFactory) { 27 public: 28 explicit RTCVideoDecoderFactory( 29 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories); 30 virtual ~RTCVideoDecoderFactory(); 31 32 // Runs on Chrome_libJingle_WorkerThread. The child thread is blocked while 33 // this runs. 34 virtual webrtc::VideoDecoder* CreateVideoDecoder(webrtc::VideoCodecType type) 35 OVERRIDE; 36 37 // Runs on Chrome_libJingle_WorkerThread. The child thread is blocked while 38 // this runs. 39 virtual void DestroyVideoDecoder(webrtc::VideoDecoder* decoder) OVERRIDE; 40 41 private: 42 scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories_; 43 44 DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoderFactory); 45 }; 46 47 } // namespace content 48 49 #endif // CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_H_ 50