Twitch SDK (Internal)
passthroughvideoencoder.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
12 
13 #include <vector>
14 
15 namespace ttv
16 {
17  namespace broadcast
18  {
19  class IFrameWriter;
20  class VideoFrame;
21  class PassThroughVideoEncoder;
22  class IPreEncodedVideoFrameReceiver;
23  }
24 }
25 
27 {
28 public:
29  using AdjustTargetBitRateFunc = std::function<TTV_ErrorCode(uint32_t kbps)>;
30 
31 public:
33  virtual ~PassThroughVideoEncoder();
34 
35  TTV_ErrorCode SetSps(const std::vector<uint8_t>& sps);
36  TTV_ErrorCode SetPps(const std::vector<uint8_t>& pps);
38 
39  // IVideoEncoder Implementation
40  virtual std::string GetName() const override;
41  virtual bool SupportsBitRateAdjustment() const override;
42  virtual TTV_ErrorCode SetFrameWriter(const std::shared_ptr<IFrameWriter>& frameWriter) override;
43  virtual TTV_ErrorCode ValidateVideoParams(const VideoParams& videoParams) const override;
44  virtual TTV_ErrorCode Initialize() override;
45  virtual TTV_ErrorCode Shutdown() override;
46  virtual TTV_ErrorCode Start(uint32_t streamIndex, const VideoParams& videoParams) override;
47  virtual TTV_ErrorCode SubmitFrame(const std::shared_ptr<VideoFrame>& videoFrame) override;
48  virtual TTV_ErrorCode Stop() override;
49  virtual TTV_ErrorCode GetSpsPps(std::vector<uint8_t>& sps, std::vector<uint8_t>& pps) override;
50  virtual TTV_ErrorCode ValidateFrame(const std::shared_ptr<VideoFrame>& videoframe) override;
51  virtual TTV_ErrorCode SetTargetBitRate(uint32_t kbps) override;
52  virtual bool SupportsReceiverProtocol(IVideoFrameReceiver::ReceiverTypeId typeId) const override;
53  virtual std::shared_ptr<IVideoFrameReceiver> GetReceiverImplementation(IVideoFrameReceiver::ReceiverTypeId typeId) override;
54 
55 private:
56  std::shared_ptr<IFrameWriter> mFrameWriter;
57  std::shared_ptr<IPreEncodedVideoFrameReceiver> mReceiver;
59  std::vector<uint8_t> mSps;
60  std::vector<uint8_t> mPps;
61  uint32_t mStreamIndex;
62  bool mStarted;
63 };
bool SupportsReceiverProtocol() const
Definition: ivideoencoder.h:100
virtual TTV_ErrorCode ValidateFrame(const std::shared_ptr< VideoFrame > &videoframe) override
virtual TTV_ErrorCode SetTargetBitRate(uint32_t kbps) override
TTV_ErrorCode SetAdjustTargetBitRateFunc(AdjustTargetBitRateFunc &&func)
uint32_t mStreamIndex
Definition: passthroughvideoencoder.h:61
virtual std::string GetName() const override
AdjustTargetBitRateFunc mAdjustTargetBitRateFunc
Definition: passthroughvideoencoder.h:58
virtual TTV_ErrorCode GetSpsPps(std::vector< uint8_t > &sps, std::vector< uint8_t > &pps) override
bool mStarted
Definition: passthroughvideoencoder.h:62
std::function< TTV_ErrorCode(uint32_t kbps)> AdjustTargetBitRateFunc
Definition: passthroughvideoencoder.h:29
virtual bool SupportsBitRateAdjustment() const override
TTV_ErrorCode SetSps(const std::vector< uint8_t > &sps)
std::shared_ptr< IFrameWriter > mFrameWriter
Definition: passthroughvideoencoder.h:56
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
std::shared_ptr< IPreEncodedVideoFrameReceiver > mReceiver
Definition: passthroughvideoencoder.h:57
std::vector< uint8_t > mPps
Definition: passthroughvideoencoder.h:60
virtual TTV_ErrorCode Start(uint32_t streamIndex, const VideoParams &videoParams) override
virtual TTV_ErrorCode Initialize() override
TTV_ErrorCode SetPps(const std::vector< uint8_t > &pps)
Definition: broadcasttypes.h:80
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
Definition: passthroughvideoencoder.h:26
Definition: ivideoencoder.h:40
virtual TTV_ErrorCode Shutdown() override
virtual std::shared_ptr< IVideoFrameReceiver > GetReceiverImplementation(IVideoFrameReceiver::ReceiverTypeId typeId) override
virtual TTV_ErrorCode Stop() override
size_t ReceiverTypeId
Definition: ivideoframereceiver.h:28
std::vector< uint8_t > mSps
Definition: passthroughvideoencoder.h:59
virtual TTV_ErrorCode SetFrameWriter(const std::shared_ptr< IFrameWriter > &frameWriter) override
virtual TTV_ErrorCode ValidateVideoParams(const VideoParams &videoParams) const override
virtual TTV_ErrorCode SubmitFrame(const std::shared_ptr< VideoFrame > &videoFrame) override