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);
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) */
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 */
}