OpenTera WebRTC API (C++) 1.2.6
VideoCodecFactories.h
1 #ifndef OPENTERA_WEBRTC_NATIVE_CLIENT_CODECS_VIDEO_CODEC_H
2 #define OPENTERA_WEBRTC_NATIVE_CLIENT_CODECS_VIDEO_CODEC_H
3 
4 #include <OpenteraWebrtcNativeClient/Configurations/VideoStreamConfiguration.h>
5 #include <OpenteraWebrtcNativeClient/Utils/ClassMacro.h>
6 
7 #include <api/video_codecs/video_decoder_factory.h>
8 #include <api/video_codecs/video_encoder_factory.h>
9 
10 namespace opentera
11 {
12  class ForcedCodecVideoDecoderFactory : public webrtc::VideoDecoderFactory
13  {
14  std::unique_ptr<webrtc::VideoDecoderFactory> m_factory;
15  std::unordered_set<VideoStreamCodec> m_forcedCodecs;
16 
17  public:
19  std::unique_ptr<webrtc::VideoDecoderFactory> factory,
20  std::unordered_set<VideoStreamCodec> forcedCodecs);
21  ~ForcedCodecVideoDecoderFactory() override = default;
22 
23  DECLARE_NOT_COPYABLE(ForcedCodecVideoDecoderFactory);
24  DECLARE_NOT_MOVABLE(ForcedCodecVideoDecoderFactory);
25 
26  std::vector<webrtc::SdpVideoFormat> GetSupportedFormats() const override;
27  CodecSupport QueryCodecSupport(const webrtc::SdpVideoFormat& format, bool referenceScaling) const override;
28  std::unique_ptr<webrtc::VideoDecoder> Create(
29  const webrtc::Environment& env,
30  const webrtc::SdpVideoFormat& format) override;
31  };
32 
33  class ForcedCodecVideoEncoderFactory : public webrtc::VideoEncoderFactory
34  {
35  std::unique_ptr<webrtc::VideoEncoderFactory> m_factory;
36  std::unordered_set<VideoStreamCodec> m_forcedCodecs;
37 
38  public:
40  std::unique_ptr<webrtc::VideoEncoderFactory> factory,
41  std::unordered_set<VideoStreamCodec> forcedCodecs);
42  ~ForcedCodecVideoEncoderFactory() override = default;
43 
44  DECLARE_NOT_COPYABLE(ForcedCodecVideoEncoderFactory);
45  DECLARE_NOT_MOVABLE(ForcedCodecVideoEncoderFactory);
46 
47  std::vector<webrtc::SdpVideoFormat> GetSupportedFormats() const override;
48 
49  CodecSupport QueryCodecSupport(
50  const webrtc::SdpVideoFormat& format,
51  absl::optional<std::string> scalabilityMode) const override;
52 
53  // Creates a VideoEncoder for the specified format.
54  std::unique_ptr<webrtc::VideoEncoder> Create(
55  const webrtc::Environment& env,
56  const webrtc::SdpVideoFormat& format) override;
57  };
58 
59  std::unique_ptr<webrtc::VideoDecoderFactory>
60  createVideoDecoderFactory(const VideoStreamConfiguration& configuration);
61  std::unique_ptr<webrtc::VideoEncoderFactory>
62  createVideoEncoderFactory(const VideoStreamConfiguration& configuration);
63 }
64 
65 #endif
Definition: VideoCodecFactories.h:13
Definition: VideoCodecFactories.h:34
Represents a video stream configuration.
Definition: VideoStreamConfiguration.h:26