[vlc-commits] demux: mp4: read vp8/9/10 content light level

2018-03-06 Thread Francois Cartegnie
vlc/vlc-3.0 | branch: master | Francois Cartegnie  | Mon Mar  
5 17:10:30 2018 +0100| [b9a9971d3ca96af0eaddd7007ae9e618209b5ff7] | committer: 
Francois Cartegnie

demux: mp4: read vp8/9/10 content light level

(cherry picked from commit a238a38812ae83df5a855434d3860c47e11875a2)

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=b9a9971d3ca96af0eaddd7007ae9e618209b5ff7
---

 modules/demux/mp4/essetup.c |  7 +++
 modules/demux/mp4/libmp4.c  | 10 ++
 modules/demux/mp4/libmp4.h  |  8 
 3 files changed, 25 insertions(+)

diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index c6dff52d81..3377373874 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -727,6 +727,13 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, 
MP4_Box_t *p_sample )
 p_track->fmt.video.mastering.max_luminance = 
BOXDATA(p_SmDm)->i_luminanceMax;
 p_track->fmt.video.mastering.min_luminance = 
BOXDATA(p_SmDm)->i_luminanceMin;
 }
+
+const MP4_Box_t *p_CoLL = MP4_BoxGet( p_sample, "CoLL" );
+if( p_CoLL && BOXDATA(p_CoLL) )
+{
+p_track->fmt.video.lighting.MaxCLL = 
BOXDATA(p_CoLL)->i_maxCLL;
+p_track->fmt.video.lighting.MaxFALL = 
BOXDATA(p_CoLL)->i_maxFALL;
+}
 }
 }
 break;
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index eacbf420b9..ff1178c1ea 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -2008,6 +2008,15 @@ static int MP4_ReadBox_SmDm( stream_t *p_stream, 
MP4_Box_t *p_box )
 MP4_READBOX_EXIT( 1 );
 }
 
+static int MP4_ReadBox_CoLL( stream_t *p_stream, MP4_Box_t *p_box )
+{
+MP4_READBOX_ENTER( MP4_Box_data_CoLL_t, NULL );
+MP4_Box_data_CoLL_t *p_CoLL = p_box->data.p_CoLL;
+MP4_GET2BYTES( p_CoLL->i_maxCLL );
+MP4_GET2BYTES( p_CoLL->i_maxFALL );
+MP4_READBOX_EXIT( 1 );
+}
+
 static void MP4_FreeBox_WMA2( MP4_Box_t *p_box )
 {
 FREENULL( p_box->data.p_WMA2->p_extra );
@@ -4441,6 +4450,7 @@ static const struct
 { ATOM_vpcC,MP4_ReadBox_vpcC, ATOM_vp09 },
 { ATOM_vpcC,MP4_ReadBox_vpcC, ATOM_vp10 },
 { ATOM_SmDm,MP4_ReadBox_SmDm, ATOM_vpcC }, /* vpx mastering 
display */
+{ ATOM_CoLL,MP4_ReadBox_CoLL, ATOM_vpcC }, /* vpx light level 
*/
 { ATOM_dac3,MP4_ReadBox_dac3, 0 },
 { ATOM_dec3,MP4_ReadBox_dec3, 0 },
 { ATOM_dvc1,MP4_ReadBox_dvc1, ATOM_vc1  },
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index dd65e8da1d..7f2988ba14 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -385,6 +385,7 @@ typedef int64_t stime_t;
 #define ATOM_gstd VLC_FOURCC( 'g', 's', 't', 'd' )
 #define ATOM_colr VLC_FOURCC( 'c', 'o', 'l', 'r' )
 #define ATOM_SmDm VLC_FOURCC( 'S', 'm', 'D', 'm' )
+#define ATOM_CoLL VLC_FOURCC( 'C', 'o', 'L', 'L' )
 
 #define ATOM_0x40PRM VLC_FOURCC( '@', 'P', 'R', 'M' )
 #define ATOM_0x40PRQ VLC_FOURCC( '@', 'P', 'R', 'Q' )
@@ -1294,6 +1295,12 @@ typedef struct
 
 typedef struct
 {
+uint16_t i_maxCLL;
+uint16_t i_maxFALL;
+} MP4_Box_data_CoLL_t;
+
+typedef struct
+{
 WAVEFORMATEX Format;
 uint32_t i_extra;
 char*p_extra;
@@ -1692,6 +1699,7 @@ typedef union MP4_Box_data_s
 MP4_Box_data_load_t *p_load;
 MP4_Box_data_vpcC_t *p_vpcC;
 MP4_Box_data_SmDm_t *p_SmDm;
+MP4_Box_data_CoLL_t *p_CoLL;
 
 MP4_Box_data_tfra_t *p_tfra;
 MP4_Box_data_mfro_t *p_mfro;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] demux: mp4: read vp8/9/10 content light level

2018-03-05 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Mon Mar  5 
17:10:30 2018 +0100| [a238a38812ae83df5a855434d3860c47e11875a2] | committer: 
Francois Cartegnie

demux: mp4: read vp8/9/10 content light level

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a238a38812ae83df5a855434d3860c47e11875a2
---

 modules/demux/mp4/essetup.c |  7 +++
 modules/demux/mp4/libmp4.c  | 10 ++
 modules/demux/mp4/libmp4.h  |  8 
 3 files changed, 25 insertions(+)

diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 8880a4126b..c8f340c1e8 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -728,6 +728,13 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, 
MP4_Box_t *p_sample )
 p_track->fmt.video.mastering.max_luminance = 
BOXDATA(p_SmDm)->i_luminanceMax;
 p_track->fmt.video.mastering.min_luminance = 
BOXDATA(p_SmDm)->i_luminanceMin;
 }
+
+const MP4_Box_t *p_CoLL = MP4_BoxGet( p_sample, "CoLL" );
+if( p_CoLL && BOXDATA(p_CoLL) )
+{
+p_track->fmt.video.lighting.MaxCLL = 
BOXDATA(p_CoLL)->i_maxCLL;
+p_track->fmt.video.lighting.MaxFALL = 
BOXDATA(p_CoLL)->i_maxFALL;
+}
 }
 }
 break;
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 22b8f72ff2..e290c8d780 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -2040,6 +2040,15 @@ static int MP4_ReadBox_SmDm( stream_t *p_stream, 
MP4_Box_t *p_box )
 MP4_READBOX_EXIT( 1 );
 }
 
+static int MP4_ReadBox_CoLL( stream_t *p_stream, MP4_Box_t *p_box )
+{
+MP4_READBOX_ENTER( MP4_Box_data_CoLL_t, NULL );
+MP4_Box_data_CoLL_t *p_CoLL = p_box->data.p_CoLL;
+MP4_GET2BYTES( p_CoLL->i_maxCLL );
+MP4_GET2BYTES( p_CoLL->i_maxFALL );
+MP4_READBOX_EXIT( 1 );
+}
+
 static void MP4_FreeBox_WMA2( MP4_Box_t *p_box )
 {
 free( p_box->data.p_WMA2->p_extra );
@@ -4401,6 +4410,7 @@ static const struct
 { ATOM_vpcC,MP4_ReadBox_vpcC, ATOM_vp09 },
 { ATOM_vpcC,MP4_ReadBox_vpcC, ATOM_vp10 },
 { ATOM_SmDm,MP4_ReadBox_SmDm, ATOM_vpcC }, /* vpx mastering 
display */
+{ ATOM_CoLL,MP4_ReadBox_CoLL, ATOM_vpcC }, /* vpx light level 
*/
 { ATOM_dac3,MP4_ReadBox_dac3, 0 },
 { ATOM_dec3,MP4_ReadBox_dec3, 0 },
 { ATOM_dvc1,MP4_ReadBox_dvc1, ATOM_vc1  },
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index 47f65e9834..f676dc0cac 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -385,6 +385,7 @@ typedef int64_t stime_t;
 #define ATOM_gstd VLC_FOURCC( 'g', 's', 't', 'd' )
 #define ATOM_colr VLC_FOURCC( 'c', 'o', 'l', 'r' )
 #define ATOM_SmDm VLC_FOURCC( 'S', 'm', 'D', 'm' )
+#define ATOM_CoLL VLC_FOURCC( 'C', 'o', 'L', 'L' )
 
 #define ATOM_0x40PRM VLC_FOURCC( '@', 'P', 'R', 'M' )
 #define ATOM_0x40PRQ VLC_FOURCC( '@', 'P', 'R', 'Q' )
@@ -1277,6 +1278,12 @@ typedef struct
 
 typedef struct
 {
+uint16_t i_maxCLL;
+uint16_t i_maxFALL;
+} MP4_Box_data_CoLL_t;
+
+typedef struct
+{
 WAVEFORMATEX Format;
 uint32_t i_extra;
 char*p_extra;
@@ -1675,6 +1682,7 @@ typedef union MP4_Box_data_s
 MP4_Box_data_load_t *p_load;
 MP4_Box_data_vpcC_t *p_vpcC;
 MP4_Box_data_SmDm_t *p_SmDm;
+MP4_Box_data_CoLL_t *p_CoLL;
 
 MP4_Box_data_tfra_t *p_tfra;
 MP4_Box_data_mfro_t *p_mfro;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits