|
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 429-439
Link Here
|
| 429 |
} else { |
429 |
} else { |
| 430 |
codec_context->extradata_size = config.extra_data().size(); |
430 |
codec_context->extradata_size = config.extra_data().size(); |
| 431 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
431 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
| 432 |
av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE)); |
432 |
av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE)); |
| 433 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
433 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
| 434 |
config.extra_data().size()); |
434 |
config.extra_data().size()); |
| 435 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
435 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
| 436 |
FF_INPUT_BUFFER_PADDING_SIZE); |
436 |
AV_INPUT_BUFFER_PADDING_SIZE); |
| 437 |
} |
437 |
} |
| 438 |
} |
438 |
} |
| 439 |
|
439 |
|
|
Lines 561-571
Link Here
|
| 561 |
} else { |
561 |
} else { |
| 562 |
codec_context->extradata_size = config.extra_data().size(); |
562 |
codec_context->extradata_size = config.extra_data().size(); |
| 563 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
563 |
codec_context->extradata = reinterpret_cast<uint8_t*>( |
| 564 |
av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE)); |
564 |
av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE)); |
| 565 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
565 |
memcpy(codec_context->extradata, &config.extra_data()[0], |
| 566 |
config.extra_data().size()); |
566 |
config.extra_data().size()); |
| 567 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
567 |
memset(codec_context->extradata + config.extra_data().size(), '\0', |
| 568 |
FF_INPUT_BUFFER_PADDING_SIZE); |
568 |
AV_INPUT_BUFFER_PADDING_SIZE); |
| 569 |
} |
569 |
} |
| 570 |
} |
570 |
} |
| 571 |
|
571 |
|