Home | History | Annotate | Download | only in media
      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_ENCODER_FACTORY_H_
      6 #define CONTENT_RENDERER_MEDIA_RTC_VIDEO_ENCODER_FACTORY_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "base/memory/ref_counted.h"
     12 #include "content/common/content_export.h"
     13 #include "third_party/libjingle/source/talk/media/webrtc/webrtcvideoencoderfactory.h"
     14 
     15 namespace media {
     16 
     17 class GpuVideoAcceleratorFactories;
     18 
     19 }  // namespace media
     20 
     21 namespace content {
     22 
     23 // This class creates RTCVideoEncoder instances (each wrapping a
     24 // media::VideoEncodeAccelerator) on behalf of the WebRTC stack.
     25 class CONTENT_EXPORT RTCVideoEncoderFactory
     26     : NON_EXPORTED_BASE(public cricket::WebRtcVideoEncoderFactory) {
     27  public:
     28   explicit RTCVideoEncoderFactory(
     29       const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories);
     30   virtual ~RTCVideoEncoderFactory();
     31 
     32   // cricket::WebRtcVideoEncoderFactory implementation.
     33   virtual webrtc::VideoEncoder* CreateVideoEncoder(
     34       webrtc::VideoCodecType type) OVERRIDE;
     35   virtual void AddObserver(Observer* observer) OVERRIDE;
     36   virtual void RemoveObserver(Observer* observer) OVERRIDE;
     37   virtual const std::vector<VideoCodec>& codecs() const OVERRIDE;
     38   virtual void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) OVERRIDE;
     39 
     40  private:
     41   const scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories_;
     42 
     43   // Codec support list of cricket::WebRtcVideoEncoderFactory::VideoCodec
     44   // instances.
     45   std::vector<VideoCodec> codecs_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(RTCVideoEncoderFactory);
     48 };
     49 
     50 }  // namespace content
     51 
     52 #endif  //  CONTENT_RENDERER_MEDIA_RTC_VIDEO_ENCODER_FACTORY_H_
     53