[FFmpeg-devel] [PATCH] Fix ADPCM MS in mov muxing

Alex Converse alex.converse
Sat Jan 22 21:57:20 CET 2011


2011/1/22 M?ns Rullg?rd <mans at mansr.com>:
> Alex Converse <alex.converse at gmail.com> writes:
>
>> ---
>> ?libavformat/movenc.c | ? 13 ++++++++++++-
>> ?1 files changed, 12 insertions(+), 1 deletions(-)
>>
>>
>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
>> index 5230938..a464238 100644
>> --- a/libavformat/movenc.c
>> +++ b/libavformat/movenc.c
>> @@ -339,6 +339,13 @@ static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
>> ? ? ? ? ?mov_write_ac3_tag(pb, track);
>> ? ? ?} else if (track->enc->codec_id == CODEC_ID_ALAC) {
>> ? ? ? ? ?mov_write_extradata_tag(pb, track);
>> + ? ?} else if (track->enc->codec_id == CODEC_ID_ADPCM_MS) {
>> + ? ? ? ?int64_t pos = url_ftell(pb);
>> + ? ? ? ?put_be32(pb, 0);
>> + ? ? ? ?put_le32(pb, track->tag); // store it byteswapped
>> + ? ? ? ?track->enc->codec_tag = ((track->tag >> 8) & 0xFF00) + ((track->tag >> 24) & 0xFF);
>
> av_bswap16(track->tag >> 16) would be easier to understand at a glance.
>

Thanks that's what I was looking for

>> + ? ? ? ?ff_put_wav_header(pb, track->enc);
>> + ? ? ? ?updateSize(pb, pos);
>> ? ? ?}
>>
>> ? ? ?put_be32(pb, 8); ? ? /* size */
> [...]
>> @@ -2108,6 +2118,7 @@ static int mov_write_header(AVFormatContext *s)
>> ? ? ? ? ? ? ?if(!st->codec->frame_size && !av_get_bits_per_sample(st->codec->codec_id)) {
>> ? ? ? ? ? ? ? ? ?av_log(s, AV_LOG_ERROR, "track %d: codec frame size is not set\n", i);
>> ? ? ? ? ? ? ? ? ?goto error;
>> + ? ? ? ? ? ?}else if(st->codec->codec_id == CODEC_ID_ADPCM_MS) {
>> ? ? ? ? ? ? ?}else if(st->codec->frame_size > 1){ /* assume compressed audio */
>> ? ? ? ? ? ? ? ? ?track->audio_vbr = 1;
>> ? ? ? ? ? ? ?}else{
>
> This looks a bit odd.
>

It means it's not either of the cases below. If it turns out that
other ACM codecs need to be muxed like MS ADPCM we could set a flag
there.

Regards,
Alex Converse



More information about the ffmpeg-devel mailing list