Twitch SDK (Internal)
ivideoencoderplugin.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 
11 #include "broadcasttypes.h"
13 
14 
16 {
17 public:
18  virtual size_t Append(uint8_t* data, size_t dataSize) = 0;
19  virtual size_t Reserve(size_t newSize) = 0;
20  virtual uint8_t* Data() = 0;
21  virtual const uint8_t* Data() const = 0;
22  virtual size_t Size() = 0;
23 };
24 
25 
33 {
34 public:
39  struct EncodeInput
40  {
47  const uint8_t* source;
48 
57  const uint8_t* yuvPlanes[4];
58 
65  uint64_t timeStamp;
66  };
71  struct EncodeOutput
72  {
79 
83  bool isKeyFrame;
84 
89  uint64_t frameTimeStamp;
90  };
91 
98  virtual TTV_ErrorCode Start(const ttv::broadcast::VideoParams& videoParams) = 0;
99 
121  virtual TTV_ErrorCode EncodeFrame(const EncodeInput& input, EncodeOutput& output) = 0;
122 
128  virtual TTV_ErrorCode GetSpsPps(ITTVBuffer* outSps, ITTVBuffer* outPps) = 0;
129 
135  virtual ttv::broadcast::YUVFormat GetRequiredYUVFormat() const = 0;
136 
141  virtual const char* GetName() const = 0;
142 
143 };
Definition: ivideoencoderplugin.h:32
Definition: ivideoencoderplugin.h:39
bool isKeyFrame
Definition: ivideoencoderplugin.h:83
virtual uint8_t * Data()=0
Definition: ivideoencoderplugin.h:71
uint64_t timeStamp
Definition: ivideoencoderplugin.h:65
Definition: ivideoencoderplugin.h:15
uint64_t frameTimeStamp
Definition: ivideoencoderplugin.h:89
Definition: broadcasttypes.h:80
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
ITTVBuffer * frameData
Definition: ivideoencoderplugin.h:78
YUVFormat
Definition: broadcasttypes.h:58
virtual size_t Size()=0
virtual size_t Reserve(size_t newSize)=0
const uint8_t * source
Definition: ivideoencoderplugin.h:47
virtual size_t Append(uint8_t *data, size_t dataSize)=0