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 14namespace webrtc { 15class VideoDecoder; 16} // namespace webrtc 17 18namespace media { 19class GpuVideoAcceleratorFactories; 20} // namespace media 21 22namespace content { 23 24// TODO(wuchengli): add unittest. 25class CONTENT_EXPORT RTCVideoDecoderFactory 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