|
|
|
@ -399,8 +399,13 @@ static av_cold int ffat_create_decoder(AVCodecContext *avctx, AVPacket *pkt) |
|
|
|
|
static av_cold int ffat_init_decoder(AVCodecContext *avctx) |
|
|
|
|
{ |
|
|
|
|
ATDecodeContext *at = avctx->priv_data; |
|
|
|
|
at->extradata = avctx->extradata; |
|
|
|
|
at->extradata_size = avctx->extradata_size; |
|
|
|
|
if (avctx->extradata_size) { |
|
|
|
|
at->extradata = av_mallocz(avctx->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); |
|
|
|
|
if (!at->extradata) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
at->extradata_size = avctx->extradata_size; |
|
|
|
|
memcpy(at->extradata, avctx->extradata, avctx->extradata_size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ((avctx->channels && avctx->sample_rate) || ffat_usable_extradata(avctx)) |
|
|
|
|
return ffat_create_decoder(avctx, NULL); |
|
|
|
@ -599,6 +604,7 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx) |
|
|
|
|
av_packet_unref(&at->new_in_pkt); |
|
|
|
|
av_packet_unref(&at->in_pkt); |
|
|
|
|
av_free(at->decoded_data); |
|
|
|
|
av_free(at->extradata); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|