comparison movenc.c @ 1438:76ae91843087 libavformat

simplify
author bcoudurier
date Wed, 01 Nov 2006 17:56:22 +0000
parents 6f4a44ab3f2a
children ad3b03b7b142
comparison
equal deleted inserted replaced
1437:6f4a44ab3f2a 1438:76ae91843087
343 }; 343 };
344 344
345 static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track) 345 static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track)
346 { 346 {
347 offset_t pos = url_ftell(pb); 347 offset_t pos = url_ftell(pb);
348 int vbr= track->mode == MODE_MOV && 348 int version = track->mode == MODE_MOV &&
349 (track->enc->codec_id == CODEC_ID_AAC || 349 (track->audio_vbr ||
350 track->enc->codec_id == CODEC_ID_MP3 || 350 track->enc->codec_id == CODEC_ID_PCM_S32LE ||
351 track->enc->codec_id == CODEC_ID_AMR_NB); 351 track->enc->codec_id == CODEC_ID_PCM_S24LE);
352 int version = vbr ||
353 track->enc->codec_id == CODEC_ID_PCM_S32LE ||
354 track->enc->codec_id == CODEC_ID_PCM_S24LE;
355 352
356 put_be32(pb, 0); /* size */ 353 put_be32(pb, 0); /* size */
357 put_le32(pb, track->tag); // store it byteswapped 354 put_le32(pb, track->tag); // store it byteswapped
358 put_be32(pb, 0); /* Reserved */ 355 put_be32(pb, 0); /* Reserved */
359 put_be16(pb, 0); /* Reserved */ 356 put_be16(pb, 0); /* Reserved */
366 363
367 put_be16(pb, track->mode == MODE_MOV ? track->enc->channels : 2); /* Number of channels */ 364 put_be16(pb, track->mode == MODE_MOV ? track->enc->channels : 2); /* Number of channels */
368 /* FIXME 8 bit for 'raw ' in mov */ 365 /* FIXME 8 bit for 'raw ' in mov */
369 put_be16(pb, 16); /* Reserved */ 366 put_be16(pb, 16); /* Reserved */
370 367
371 put_be16(pb, vbr ? 0xfffe : 0); /* compression ID */ 368 put_be16(pb, track->mode == MODE_MOV && track->audio_vbr ? -2 : 0); /* compression ID */
372 put_be16(pb, 0); /* packet size (= 0) */ 369 put_be16(pb, 0); /* packet size (= 0) */
373 put_be16(pb, track->timescale); /* Time scale */ 370 put_be16(pb, track->timescale); /* Time scale */
374 put_be16(pb, 0); /* Reserved */ 371 put_be16(pb, 0); /* Reserved */
375 372
376 if(version == 1) { /* SoundDescription V1 extended info */ 373 if(version == 1) { /* SoundDescription V1 extended info */
377 if (vbr)
378 track->sampleSize = 0;
379 put_be32(pb, track->enc->frame_size); /* Samples per packet */ 374 put_be32(pb, track->enc->frame_size); /* Samples per packet */
380 put_be32(pb, track->sampleSize / track->enc->channels); /* Bytes per packet */ 375 put_be32(pb, track->sampleSize / track->enc->channels); /* Bytes per packet */
381 put_be32(pb, track->sampleSize); /* Bytes per frame */ 376 put_be32(pb, track->sampleSize); /* Bytes per frame */
382 put_be32(pb, 2); /* Bytes per sample */ 377 put_be32(pb, 2); /* Bytes per sample */
383 } 378 }