File tree Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Original file line number Diff line number Diff line change 4
4
5
5
#include < stdexcept>
6
6
7
+ #ifndef FF_INPUT_BUFFER_PADDING_SIZE
8
+ #define FF_INPUT_BUFFER_PADDING_SIZE 16
9
+ #endif
10
+
7
11
namespace avtranscoder
8
12
{
9
13
@@ -37,6 +41,14 @@ IOutputStream& OutputFile::addVideoStream( const VideoCodec& videoDesc )
37
41
stream.codec ->profile = videoDesc.getAVCodecContext ().profile ;
38
42
stream.codec ->level = videoDesc.getAVCodecContext ().level ;
39
43
44
+ // some codecs need/can use extradata to decode
45
+ uint8_t * srcExtradata = videoDesc.getAVCodecContext ().extradata ;
46
+ const int srcExtradataSize = videoDesc.getAVCodecContext ().extradata_size ;
47
+ stream.codec ->extradata = (uint8_t *) av_malloc ( srcExtradataSize + FF_INPUT_BUFFER_PADDING_SIZE );
48
+ memcpy ( stream.codec ->extradata , srcExtradata, srcExtradataSize );
49
+ memset ( ((uint8_t *) stream.codec ->extradata ) + srcExtradataSize, 0 , FF_INPUT_BUFFER_PADDING_SIZE );
50
+ stream.codec ->extradata_size = videoDesc.getAVCodecContext ().extradata_size ;
51
+
40
52
// need to set the time_base on the AVCodecContext and the AVStream
41
53
// compensating the frame rate with the ticks_per_frame and keeping
42
54
// a coherent reading speed.
You can’t perform that action at this time.
0 commit comments