[FFmpeg-cvslog] r20649 - in trunk/libavformat: isom.c movenc.c
bcoudurier
subversion
Sun Nov 29 03:27:09 CET 2009
Author: bcoudurier
Date: Sun Nov 29 03:27:08 2009
New Revision: 20649
Log:
support pcm_f32/64le in mov
Modified:
trunk/libavformat/isom.c
trunk/libavformat/movenc.c
Modified: trunk/libavformat/isom.c
==============================================================================
--- trunk/libavformat/isom.c Sun Nov 29 03:04:44 2009 (r20648)
+++ trunk/libavformat/isom.c Sun Nov 29 03:27:08 2009 (r20649)
@@ -185,7 +185,9 @@ const AVCodecTag codec_movaudio_tags[] =
{ CODEC_ID_PCM_S16LE, MKTAG('s', 'o', 'w', 't') }, /* */
{ CODEC_ID_PCM_S16LE, MKTAG('l', 'p', 'c', 'm') },
{ CODEC_ID_PCM_F32BE, MKTAG('f', 'l', '3', '2') },
+ { CODEC_ID_PCM_F32LE, MKTAG('f', 'l', '3', '2') },
{ CODEC_ID_PCM_F64BE, MKTAG('f', 'l', '6', '4') },
+ { CODEC_ID_PCM_F64LE, MKTAG('f', 'l', '6', '4') },
{ CODEC_ID_PCM_S8, MKTAG('s', 'o', 'w', 't') },
{ CODEC_ID_PCM_U8, MKTAG('r', 'a', 'w', ' ') }, /* 8 bits unsigned */
{ CODEC_ID_PCM_U8, MKTAG('N', 'O', 'N', 'E') }, /* uncompressed */
Modified: trunk/libavformat/movenc.c
==============================================================================
--- trunk/libavformat/movenc.c Sun Nov 29 03:04:44 2009 (r20648)
+++ trunk/libavformat/movenc.c Sun Nov 29 03:27:08 2009 (r20649)
@@ -360,6 +360,14 @@ static int mov_write_esds_tag(ByteIOCont
return updateSize(pb, pos);
}
+static int mov_pcm_le_gt16(enum CodecID codec_id)
+{
+ return codec_id == CODEC_ID_PCM_S24LE ||
+ codec_id == CODEC_ID_PCM_S32LE ||
+ codec_id == CODEC_ID_PCM_F32LE ||
+ codec_id == CODEC_ID_PCM_F64LE;
+}
+
static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
{
int64_t pos = url_ftell(pb);
@@ -377,8 +385,7 @@ static int mov_write_wave_tag(ByteIOCont
put_tag(pb, "mp4a");
put_be32(pb, 0);
mov_write_esds_tag(pb, track);
- } else if (track->enc->codec_id == CODEC_ID_PCM_S24LE ||
- track->enc->codec_id == CODEC_ID_PCM_S32LE) {
+ } else if (mov_pcm_le_gt16(track->enc->codec_id)) {
mov_write_enda_tag(pb);
} else if (track->enc->codec_id == CODEC_ID_AMR_NB) {
mov_write_amr_tag(pb, track);
@@ -442,9 +449,7 @@ static int mov_write_audio_tag(ByteIOCon
if (mov_get_lpcm_flags(track->enc->codec_id))
tag = AV_RL32("lpcm");
version = 2;
- } else if (track->audio_vbr ||
- track->enc->codec_id == CODEC_ID_PCM_S32LE ||
- track->enc->codec_id == CODEC_ID_PCM_S24LE) {
+ } else if (track->audio_vbr || mov_pcm_le_gt16(track->enc->codec_id)) {
version = 1;
}
}
@@ -505,9 +510,8 @@ static int mov_write_audio_tag(ByteIOCon
(track->enc->codec_id == CODEC_ID_AAC ||
track->enc->codec_id == CODEC_ID_AC3 ||
track->enc->codec_id == CODEC_ID_AMR_NB ||
- track->enc->codec_id == CODEC_ID_PCM_S24LE ||
- track->enc->codec_id == CODEC_ID_PCM_S32LE ||
- track->enc->codec_id == CODEC_ID_ALAC))
+ track->enc->codec_id == CODEC_ID_ALAC ||
+ mov_pcm_le_gt16(track->enc->codec_id)))
mov_write_wave_tag(pb, track);
else if(track->tag == MKTAG('m','p','4','a'))
mov_write_esds_tag(pb, track);
More information about the ffmpeg-cvslog
mailing list