Lines 30-39
Link Here
|
30 |
|
30 |
|
31 |
} // namespace |
31 |
} // namespace |
32 |
|
32 |
|
33 |
// Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are |
33 |
// Why AV_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are |
34 |
// padded. Check here to ensure FFmpeg only receives data padded to its |
34 |
// padded. Check here to ensure FFmpeg only receives data padded to its |
35 |
// specifications. |
35 |
// specifications. |
36 |
static_assert(DecoderBuffer::kPaddingSize >= FF_INPUT_BUFFER_PADDING_SIZE, |
36 |
static_assert(DecoderBuffer::kPaddingSize >= AV_INPUT_BUFFER_PADDING_SIZE, |
37 |
"DecoderBuffer padding size does not fit ffmpeg requirement"); |
37 |
"DecoderBuffer padding size does not fit ffmpeg requirement"); |
38 |
|
38 |
|
39 |
// Alignment requirement by FFmpeg for input and output buffers. This need to |
39 |
// Alignment requirement by FFmpeg for input and output buffers. This need to |
Lines 444-454
Link Here
|
444 |
} else { |
444 |
} else { |
445 |
codec_context->extradata_size = config.extra_data().size(); |
445 |
codec_context->extradata_size = config.extra_data().size(); |
446 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
446 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
447 |
av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE)); |
447 |
av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE)); |
448 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
448 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
449 |
config.extra_data().size()); |
449 |
config.extra_data().size()); |
450 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
450 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
451 |
FF_INPUT_BUFFER_PADDING_SIZE); |
451 |
AV_INPUT_BUFFER_PADDING_SIZE); |
452 |
} |
452 |
} |
453 |
} |
453 |
} |
454 |
|
454 |
|
Lines 585-595
Link Here
|
585 |
} else { |
585 |
} else { |
586 |
codec_context->extradata_size = config.extra_data().size(); |
586 |
codec_context->extradata_size = config.extra_data().size(); |
587 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
587 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
588 |
av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE)); |
588 |
av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE)); |
589 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
589 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
590 |
config.extra_data().size()); |
590 |
config.extra_data().size()); |
591 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
591 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
592 |
FF_INPUT_BUFFER_PADDING_SIZE); |
592 |
AV_INPUT_BUFFER_PADDING_SIZE); |
593 |
} |
593 |
} |
594 |
} |
594 |
} |
595 |
|
595 |
|