|
|
@@ -353,9 +353,11 @@ static const CodecTag codec_movaudio_tags[] = { |
|
|
|
static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track) |
|
|
|
{ |
|
|
|
offset_t pos = url_ftell(pb); |
|
|
|
int vbr= track->enc->codec_id == CODEC_ID_AAC || |
|
|
|
track->enc->codec_id == CODEC_ID_MP3 || |
|
|
|
track->enc->codec_id == CODEC_ID_AMR_NB; |
|
|
|
int version = track->mode == MODE_MOV && |
|
|
|
(track->enc->codec_id == CODEC_ID_AAC || |
|
|
|
track->enc->codec_id == CODEC_ID_MP3 || |
|
|
|
(vbr || |
|
|
|
track->enc->codec_id == CODEC_ID_PCM_S32LE || |
|
|
|
track->enc->codec_id == CODEC_ID_PCM_S24LE); |
|
|
|
|
|
|
@@ -375,9 +377,7 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track) |
|
|
|
to be a good way to get number of bits of audio */ |
|
|
|
put_be16(pb, 0x10); /* Reserved */ |
|
|
|
|
|
|
|
if(track->enc->codec_id == CODEC_ID_AAC || |
|
|
|
track->enc->codec_id == CODEC_ID_MP3 || |
|
|
|
track->enc->codec_id == CODEC_ID_AMR_NB) { |
|
|
|
if(vbr) { |
|
|
|
put_be16(pb, 0xfffe); /* compression ID (vbr)*/ |
|
|
|
} else { |
|
|
|
put_be16(pb, 0); /* compression ID (= 0) */ |
|
|
@@ -387,13 +387,10 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track) |
|
|
|
put_be16(pb, 0); /* Reserved */ |
|
|
|
|
|
|
|
if(version == 1) { /* SoundDescription V1 extended info */ |
|
|
|
/* Parameters tested on quicktime 6.5, 7 */ |
|
|
|
if (track->enc->codec_id == CODEC_ID_MP3) |
|
|
|
track->sampleSize = 666; |
|
|
|
if (track->enc->codec_id == CODEC_ID_AAC) |
|
|
|
track->sampleSize = 2; |
|
|
|
if (vbr) |
|
|
|
track->sampleSize = 0; |
|
|
|
put_be32(pb, track->enc->frame_size); /* Samples per packet */ |
|
|
|
put_be32(pb, track->sampleSize / 2); /* Bytes per packet */ |
|
|
|
put_be32(pb, track->sampleSize / track->enc->channels); /* Bytes per packet */ |
|
|
|
put_be32(pb, track->sampleSize); /* Bytes per frame */ |
|
|
|
put_be32(pb, 2); /* Bytes per sample */ |
|
|
|
} |
|
|
|