[vlc-commits] demux: mp4: add support for isoflac
Francois Cartegnie
git at videolan.org
Thu Apr 6 17:30:49 CEST 2017
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Apr 6 17:28:40 2017 +0200| [08a2eb612cfec72bbdff30a89200f9a9998038f3] | committer: Francois Cartegnie
demux: mp4: add support for isoflac
3rd flavour of metadata storing. yay
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=08a2eb612cfec72bbdff30a89200f9a9998038f3
---
modules/demux/mp4/essetup.c | 18 ++++++++++++++++++
modules/demux/mp4/libmp4.c | 2 ++
modules/demux/mp4/libmp4.h | 2 ++
3 files changed, 22 insertions(+)
diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 5a7f36d..1feb6fb 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -905,6 +905,24 @@ int SetupAudioES( demux_t *p_demux, mp4_track_t *p_track, MP4_Box_t *p_sample )
}
break;
}
+ case ATOM_fLaC:
+ {
+ const MP4_Box_t *p_dfLa = MP4_BoxGet( p_sample, "dfLa", 0 );
+ if( p_dfLa && p_dfLa->data.p_binary->i_blob > 4 &&
+ GetDWBE(p_dfLa->data.p_binary->p_blob) == 0 ) /* fullbox header, avoids creating dedicated parser */
+ {
+ size_t i_extra = p_dfLa->data.p_binary->i_blob;
+ uint8_t *p_extra = malloc(i_extra);
+ {
+ p_track->fmt.i_extra = i_extra;
+ p_track->fmt.p_extra = p_extra;
+ memcpy( p_extra, p_dfLa->data.p_binary->p_blob, p_dfLa->data.p_binary->i_blob);
+ memcpy( p_extra, "fLaC", 4 );
+ p_track->fmt.i_codec = VLC_CODEC_FLAC;
+ }
+ }
+ break;
+ }
case( ATOM_eac3 ):
{
const MP4_Box_t *p_dec3 = MP4_BoxGet( p_sample, "dec3", 0 );
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 8d2701c..fe09925 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -4221,6 +4221,7 @@ static const struct
{ ATOM_esds, MP4_ReadBox_esds, ATOM_mp4v },
{ ATOM_esds, MP4_ReadBox_esds, ATOM_mp4s },
{ ATOM_dcom, MP4_ReadBox_dcom, 0 },
+ { ATOM_dfLa, MP4_ReadBox_Binary, ATOM_fLaC },
{ ATOM_cmvd, MP4_ReadBox_cmvd, 0 },
{ ATOM_avcC, MP4_ReadBox_avcC, ATOM_avc1 },
{ ATOM_avcC, MP4_ReadBox_avcC, ATOM_avc3 },
@@ -4277,6 +4278,7 @@ static const struct
{ ATOM_agsm, MP4_ReadBox_sample_soun, ATOM_stsd },
{ ATOM_ac3, MP4_ReadBox_sample_soun, ATOM_stsd },
{ ATOM_eac3, MP4_ReadBox_sample_soun, ATOM_stsd },
+ { ATOM_fLaC, MP4_ReadBox_sample_soun, ATOM_stsd },
{ ATOM_lpcm, MP4_ReadBox_sample_soun, ATOM_stsd },
{ ATOM_ms02, MP4_ReadBox_sample_soun, ATOM_stsd },
{ ATOM_ms11, MP4_ReadBox_sample_soun, ATOM_stsd },
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index c4cbb94..de4e0e0 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -193,6 +193,8 @@ typedef int64_t stime_t;
#define ATOM_fl32 VLC_FOURCC( 'f', 'l', '3', '2' )
#define ATOM_fl64 VLC_FOURCC( 'f', 'l', '6', '4' )
#define ATOM_Opus VLC_FOURCC( 'O', 'p', 'u', 's' )
+#define ATOM_fLaC VLC_FOURCC( 'f', 'L', 'a', 'C' )
+#define ATOM_dfLa VLC_FOURCC( 'd', 'f', 'L', 'a' )
/* XiphQT */
#define ATOM_fCtS VLC_FOURCC( 'f', 'C', 't', 'S' )
More information about the vlc-commits
mailing list