mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-19 13:50:58 +00:00
lavc: check that extended_data is properly set in avcodec_encode_audio2().
This commit is contained in:
parent
a5117a2444
commit
c22953b8a3
@ -908,6 +908,7 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
|
||||
const AVFrame *frame,
|
||||
int *got_packet_ptr)
|
||||
{
|
||||
AVFrame tmp;
|
||||
AVFrame *padded_frame = NULL;
|
||||
int ret;
|
||||
int user_packet = !!avpkt->data;
|
||||
@ -920,6 +921,22 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ensure that extended_data is properly set */
|
||||
if (frame && !frame->extended_data) {
|
||||
if (av_sample_fmt_is_planar(avctx->sample_fmt) &&
|
||||
avctx->channels > AV_NUM_DATA_POINTERS) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Encoding to a planar sample format, "
|
||||
"with more than %d channels, but extended_data is not set.\n",
|
||||
AV_NUM_DATA_POINTERS);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
av_log(avctx, AV_LOG_WARNING, "extended_data is not set.\n");
|
||||
|
||||
tmp = *frame;
|
||||
tmp.extended_data = tmp.data;
|
||||
frame = &tmp;
|
||||
}
|
||||
|
||||
/* check for valid frame size */
|
||||
if (frame) {
|
||||
if (avctx->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) {
|
||||
|
Loading…
Reference in New Issue
Block a user