mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
matroskadec: move ALAC extradata creation bellow AAC one
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
33fb22f800
commit
9644fc95be
@ -1684,18 +1684,6 @@ static int matroska_read_header(AVFormatContext *s)
|
||||
&& (track->codec_priv.data != NULL)) {
|
||||
fourcc = AV_RL32(track->codec_priv.data);
|
||||
codec_id = ff_codec_get_id(ff_codec_movvideo_tags, fourcc);
|
||||
} else if (codec_id == AV_CODEC_ID_ALAC && track->codec_priv.size && track->codec_priv.size < INT_MAX - 12 - FF_INPUT_BUFFER_PADDING_SIZE) {
|
||||
/* Only ALAC's magic cookie is stored in Matroska's track headers.
|
||||
Create the "atom size", "tag", and "tag version" fields the
|
||||
decoder expects manually. */
|
||||
extradata_size = 12 + track->codec_priv.size;
|
||||
extradata = av_mallocz(extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (extradata == NULL)
|
||||
return AVERROR(ENOMEM);
|
||||
AV_WB32(extradata, extradata_size);
|
||||
memcpy(&extradata[4], "alac", 4);
|
||||
AV_WB32(&extradata[8], 0);
|
||||
memcpy(&extradata[12], track->codec_priv.data, track->codec_priv.size);
|
||||
} else if (codec_id == AV_CODEC_ID_PCM_S16BE) {
|
||||
switch (track->audio.bitdepth) {
|
||||
case 8: codec_id = AV_CODEC_ID_PCM_U8; break;
|
||||
@ -1726,6 +1714,19 @@ static int matroska_read_header(AVFormatContext *s)
|
||||
extradata_size = 5;
|
||||
} else
|
||||
extradata_size = 2;
|
||||
} else if (codec_id == AV_CODEC_ID_ALAC && track->codec_priv.size && track->codec_priv.size < INT_MAX - 12 - FF_INPUT_BUFFER_PADDING_SIZE) {
|
||||
/* Only ALAC's magic cookie is stored in Matroska's track headers.
|
||||
Create the "atom size", "tag", and "tag version" fields the
|
||||
decoder expects manually. */
|
||||
extradata_size = 12 + track->codec_priv.size;
|
||||
extradata = av_mallocz(extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (extradata == NULL)
|
||||
return AVERROR(ENOMEM);
|
||||
AV_WB32(extradata, extradata_size);
|
||||
memcpy(&extradata[4], "alac", 4);
|
||||
AV_WB32(&extradata[8], 0);
|
||||
memcpy(&extradata[12], track->codec_priv.data,
|
||||
track->codec_priv.size);
|
||||
} else if (codec_id == AV_CODEC_ID_TTA) {
|
||||
extradata_size = 30;
|
||||
extradata = av_mallocz(extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
Loading…
Reference in New Issue
Block a user