mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
support pcm_f32/64le in mov
Originally committed as revision 20649 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ba7c0ece61
commit
7c4b7d0f41
@ -185,7 +185,9 @@ const AVCodecTag codec_movaudio_tags[] = {
|
|||||||
{ CODEC_ID_PCM_S16LE, MKTAG('s', 'o', 'w', 't') }, /* */
|
{ CODEC_ID_PCM_S16LE, MKTAG('s', 'o', 'w', 't') }, /* */
|
||||||
{ CODEC_ID_PCM_S16LE, MKTAG('l', 'p', 'c', 'm') },
|
{ CODEC_ID_PCM_S16LE, MKTAG('l', 'p', 'c', 'm') },
|
||||||
{ CODEC_ID_PCM_F32BE, MKTAG('f', 'l', '3', '2') },
|
{ 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_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_S8, MKTAG('s', 'o', 'w', 't') },
|
||||||
{ CODEC_ID_PCM_U8, MKTAG('r', 'a', 'w', ' ') }, /* 8 bits unsigned */
|
{ CODEC_ID_PCM_U8, MKTAG('r', 'a', 'w', ' ') }, /* 8 bits unsigned */
|
||||||
{ CODEC_ID_PCM_U8, MKTAG('N', 'O', 'N', 'E') }, /* uncompressed */
|
{ CODEC_ID_PCM_U8, MKTAG('N', 'O', 'N', 'E') }, /* uncompressed */
|
||||||
|
@ -360,6 +360,14 @@ static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack *track) // Basic
|
|||||||
return updateSize(pb, pos);
|
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)
|
static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
|
||||||
{
|
{
|
||||||
int64_t pos = url_ftell(pb);
|
int64_t pos = url_ftell(pb);
|
||||||
@ -377,8 +385,7 @@ static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
|
|||||||
put_tag(pb, "mp4a");
|
put_tag(pb, "mp4a");
|
||||||
put_be32(pb, 0);
|
put_be32(pb, 0);
|
||||||
mov_write_esds_tag(pb, track);
|
mov_write_esds_tag(pb, track);
|
||||||
} else if (track->enc->codec_id == CODEC_ID_PCM_S24LE ||
|
} else if (mov_pcm_le_gt16(track->enc->codec_id)) {
|
||||||
track->enc->codec_id == CODEC_ID_PCM_S32LE) {
|
|
||||||
mov_write_enda_tag(pb);
|
mov_write_enda_tag(pb);
|
||||||
} else if (track->enc->codec_id == CODEC_ID_AMR_NB) {
|
} else if (track->enc->codec_id == CODEC_ID_AMR_NB) {
|
||||||
mov_write_amr_tag(pb, track);
|
mov_write_amr_tag(pb, track);
|
||||||
@ -442,9 +449,7 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack *track)
|
|||||||
if (mov_get_lpcm_flags(track->enc->codec_id))
|
if (mov_get_lpcm_flags(track->enc->codec_id))
|
||||||
tag = AV_RL32("lpcm");
|
tag = AV_RL32("lpcm");
|
||||||
version = 2;
|
version = 2;
|
||||||
} else if (track->audio_vbr ||
|
} else if (track->audio_vbr || mov_pcm_le_gt16(track->enc->codec_id)) {
|
||||||
track->enc->codec_id == CODEC_ID_PCM_S32LE ||
|
|
||||||
track->enc->codec_id == CODEC_ID_PCM_S24LE) {
|
|
||||||
version = 1;
|
version = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -505,9 +510,8 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack *track)
|
|||||||
(track->enc->codec_id == CODEC_ID_AAC ||
|
(track->enc->codec_id == CODEC_ID_AAC ||
|
||||||
track->enc->codec_id == CODEC_ID_AC3 ||
|
track->enc->codec_id == CODEC_ID_AC3 ||
|
||||||
track->enc->codec_id == CODEC_ID_AMR_NB ||
|
track->enc->codec_id == CODEC_ID_AMR_NB ||
|
||||||
track->enc->codec_id == CODEC_ID_PCM_S24LE ||
|
track->enc->codec_id == CODEC_ID_ALAC ||
|
||||||
track->enc->codec_id == CODEC_ID_PCM_S32LE ||
|
mov_pcm_le_gt16(track->enc->codec_id)))
|
||||||
track->enc->codec_id == CODEC_ID_ALAC))
|
|
||||||
mov_write_wave_tag(pb, track);
|
mov_write_wave_tag(pb, track);
|
||||||
else if(track->tag == MKTAG('m','p','4','a'))
|
else if(track->tag == MKTAG('m','p','4','a'))
|
||||||
mov_write_esds_tag(pb, track);
|
mov_write_esds_tag(pb, track);
|
||||||
|
Loading…
Reference in New Issue
Block a user