[vlc-commits] mp4: save the multiview_mode meta-data encoded with the spatial media specification v1

2017-07-26 Thread Adrien Maglo
vlc | branch: master | Adrien Maglo  | Wed Jul 26 
21:24:27 2017 +0200| [0fe27309aedb10c01288a41dcd9556efa12618a4] | committer: 
Francois Cartegnie

mp4: save the multiview_mode meta-data encoded with the spatial media 
specification v1

https://github.com/google/spatial-media/blob/master/docs/spherical-video-rfc.md#stereo-mode

Signed-off-by: Francois Cartegnie 

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

 modules/demux/mp4/essetup.c | 14 ++
 modules/demux/mp4/libmp4.c  |  6 ++
 modules/demux/mp4/libmp4.h  |  5 +
 3 files changed, 25 insertions(+)

diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 94ae10c7e2..8e53e204f4 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -356,7 +356,21 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, 
MP4_Box_t *p_sample )
 if( p_uuid->i_type == ATOM_uuid
 && !CmpUUID( _uuid->i_uuid,  )
 && p_uuid->data.p_360 )
+{
 p_track->fmt.video.projection_mode = 
p_uuid->data.p_360->i_projection_mode;
+switch (p_uuid->data.p_360->e_stereo_mode)
+{
+case XML360_STEREOSCOPIC_TOP_BOTTOM:
+p_track->fmt.video.multiview_mode = MULTIVIEW_STEREO_TB;
+break;
+case XML360_STEREOSCOPIC_LEFT_RIGHT:
+p_track->fmt.video.multiview_mode = MULTIVIEW_STEREO_SBS;
+break;
+default:
+p_track->fmt.video.multiview_mode = MULTIVIEW_2D;
+break;
+}
+}
 }
 
 const MP4_Box_t *p_st3d = MP4_BoxGet( p_sample, "st3d" );
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index ba9fe06fda..7f85541332 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -742,10 +742,16 @@ static int MP4_ReadBox_XML360( stream_t *p_stream, 
MP4_Box_t *p_box )
 
 /* Try to find the stero mode. */
 if ( strcasestr( psz_rdf, "left-right" ) )
+{
 msg_Dbg( p_stream, "Left-right stereo mode" );
+p_360_data->e_stereo_mode = XML360_STEREOSCOPIC_LEFT_RIGHT;
+}
 
 if ( strcasestr( psz_rdf, "top-bottom" ) )
+{
 msg_Dbg( p_stream, "Top-bottom stereo mode" );
+p_360_data->e_stereo_mode = XML360_STEREOSCOPIC_TOP_BOTTOM;
+}
 
 free( psz_rdf );
 
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index 56f71c0309..a37d6fd0da 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -1579,6 +1579,11 @@ typedef struct
 typedef struct
 {
 uint32_t i_projection_mode;
+enum {
+XML360_MONOSCOPIC = 0,
+XML360_STEREOSCOPIC_TOP_BOTTOM = 1,
+XML360_STEREOSCOPIC_LEFT_RIGHT = 2,
+} e_stereo_mode;
 } MP4_Box_data_360_t;
 
 

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


[vlc-commits] demux: mp4: enable 3DDS multiview

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
23:51:05 2017 +0200| [eb46716d050c28af2132e4f59c34f0ca5b6ff127] | committer: 
Francois Cartegnie

demux: mp4: enable 3DDS multiview

Early PS3 sequential 3D

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

 modules/demux/mp4/essetup.c | 16 
 1 file changed, 16 insertions(+)

diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 6f995568a7..94ae10c7e2 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -378,6 +378,22 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, 
MP4_Box_t *p_sample )
 break;
 }
 }
+else
+{
+for( p_uuid = MP4_BoxGet( p_sample, "uuid" ); p_uuid;
+ p_uuid = p_uuid->p_next )
+{
+if( p_uuid->i_type == ATOM_uuid &&
+   !CmpUUID( _uuid->i_uuid,  ) &&
+p_uuid->data.p_binary &&
+p_uuid->data.p_binary->i_blob == 4 &&
+!memcmp( p_uuid->data.p_binary->p_blob, "\x82\x81\x10\x02", 4 
) )
+{
+p_track->fmt.video.multiview_mode = MULTIVIEW_STEREO_FRAME;
+break;
+}
+}
+}
 
 const MP4_Box_t *p_prhd = MP4_BoxGet( p_sample, "sv3d/proj/prhd" );
 if (p_prhd && BOXDATA(p_prhd))

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


[vlc-commits] packetizer: hxxx: parse frame_packing

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
21:41:51 2017 +0200| [89347c3e2d67bc0b42e24fa6fd51d2a870f41f33] | committer: 
Francois Cartegnie

packetizer: hxxx: parse frame_packing

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

 modules/packetizer/hxxx_sei.c | 19 +++
 modules/packetizer/hxxx_sei.h | 20 
 2 files changed, 39 insertions(+)

diff --git a/modules/packetizer/hxxx_sei.c b/modules/packetizer/hxxx_sei.c
index e1529bf654..393d07f3a7 100644
--- a/modules/packetizer/hxxx_sei.c
+++ b/modules/packetizer/hxxx_sei.c
@@ -135,6 +135,25 @@ void HxxxParseSEI(const uint8_t *p_buf, size_t i_buf,
 free( p_t35 );
 } break;
 
+case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
+{
+bs_read_ue(  );
+if ( !bs_read1(  ) )
+{
+sei_data.frame_packing.type = bs_read( , 7 );
+bs_read( , 1 );
+if( bs_read( , 6 ) == 2 ) /*intpr type*/
+sei_data.frame_packing.b_left_first = false;
+else
+sei_data.frame_packing.b_left_first = true;
+sei_data.frame_packing.b_flipped = bs_read1(  );
+sei_data.frame_packing.b_fields = bs_read1(  );
+sei_data.frame_packing.b_frame0 = bs_read1(  );
+}
+else sei_data.frame_packing.type = FRAME_PACKING_CANCEL;
+
+} break;
+
 /* Look for SEI recovery point */
 case HXXX_SEI_RECOVERY_POINT:
 {
diff --git a/modules/packetizer/hxxx_sei.h b/modules/packetizer/hxxx_sei.h
index e2f1603361..6691fb8b67 100644
--- a/modules/packetizer/hxxx_sei.h
+++ b/modules/packetizer/hxxx_sei.h
@@ -26,6 +26,7 @@ enum hxxx_sei_type_e
 HXXX_SEI_PIC_TIMING = 1,
 HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35 = 4,
 HXXX_SEI_RECOVERY_POINT = 6,
+HXXX_SEI_FRAME_PACKING_ARRANGEMENT = 45,
 HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME = 137, /* SMPTE ST 2086 */
 HXXX_SEI_CONTENT_LIGHT_LEVEL = 144,
 };
@@ -55,6 +56,25 @@ typedef struct
 } itu_t35;
 struct
 {
+enum
+{
+FRAME_PACKING_CANCEL = -1,
+FRAME_PACKING_INTERLEAVED_CHECKERBOARD = 0,
+FRAME_PACKING_INTERLEAVED_COLUMN,
+FRAME_PACKING_INTERLEAVED_ROW,
+FRAME_PACKING_SIDE_BY_SIDE,
+FRAME_PACKING_TOP_BOTTOM,
+FRAME_PACKING_TEMPORAL,
+FRAME_PACKING_NONE_2D,
+FRAME_PACKING_TILED,
+} type;
+bool b_flipped;
+bool b_left_first;
+bool b_fields;
+bool b_frame0;
+} frame_packing;
+struct
+{
 int i_frames;
 } recovery;
 struct

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


[vlc-commits] packetizer: mpegvideo: parse/set multiview

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
22:55:51 2017 +0200| [d23e9e287c468e3c32021e3007203606e7c368e7] | committer: 
Francois Cartegnie

packetizer: mpegvideo: parse/set multiview

untested

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

 modules/packetizer/mpegvideo.c | 21 -
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c
index e4c9cbc8d0..a116839193 100644
--- a/modules/packetizer/mpegvideo.c
+++ b/modules/packetizer/mpegvideo.c
@@ -817,8 +817,27 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t 
*p_frag )
 
 }
 }
-else if( p_frag->p_buffer[3] == 0xb2 && p_frag->i_buffer > 4 )
+else if( p_frag->p_buffer[3] == 0xb2 && p_frag->i_buffer > 8 )
 {
+/* Frame Packing extension identifier as H262 2012 Amd4 Annex L */
+if( !memcmp( _frag->p_buffer[4], "JP3D", 4 ) &&
+p_frag->i_buffer > 11 && p_frag->p_buffer[8] == 0x03 &&
+p_dec->fmt_in.video.multiview_mode == MULTIVIEW_2D )
+{
+video_multiview_mode_t mode;
+switch( p_frag->p_buffer[9] & 0x7F )
+{
+case 0x03:
+mode = MULTIVIEW_STEREO_SBS; break;
+case 0x04:
+mode = MULTIVIEW_STEREO_TB; break;
+case 0x08:
+default:
+mode = MULTIVIEW_2D; break;
+}
+p_dec->fmt_out.video.multiview_mode = mode;
+}
+else
 cc_ProbeAndExtract( _sys->cc, p_sys->i_top_field_first,
 _frag->p_buffer[4], p_frag->i_buffer - 4 );
 }

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


[vlc-commits] packetizer: h264: set multiview

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
21:42:06 2017 +0200| [adec0c3850f8342bf42baca5c0dd20df13232045] | committer: 
Francois Cartegnie

packetizer: h264: set multiview

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

 modules/packetizer/h264.c | 27 +++
 1 file changed, 27 insertions(+)

diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index 0ed0de91d4..f219253e07 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -1101,6 +1101,33 @@ static bool ParseSeiCallback( const hxxx_sei_data_t 
*p_sei_data, void *cbdata )
 }
 } break;
 
+case HXXX_SEI_FRAME_PACKING_ARRANGEMENT:
+{
+if( p_dec->fmt_in.video.multiview_mode == MULTIVIEW_2D )
+{
+video_multiview_mode_t mode;
+switch( p_sei_data->frame_packing.type )
+{
+case FRAME_PACKING_INTERLEAVED_CHECKERBOARD:
+mode = MULTIVIEW_STEREO_CHECKERBOARD; break;
+case FRAME_PACKING_INTERLEAVED_COLUMN:
+mode = MULTIVIEW_STEREO_COL; break;
+case FRAME_PACKING_INTERLEAVED_ROW:
+mode = MULTIVIEW_STEREO_ROW; break;
+case FRAME_PACKING_SIDE_BY_SIDE:
+mode = MULTIVIEW_STEREO_SBS; break;
+case FRAME_PACKING_TOP_BOTTOM:
+mode = MULTIVIEW_STEREO_TB; break;
+case FRAME_PACKING_TEMPORAL:
+mode = MULTIVIEW_STEREO_FRAME; break;
+case FRAME_PACKING_TILED:
+default:
+mode = MULTIVIEW_2D; break;
+}
+p_dec->fmt_out.video.multiview_mode = mode;
+}
+} break;
+
 /* Look for SEI recovery point */
 case HXXX_SEI_RECOVERY_POINT:
 {

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


[vlc-commits] demux: libmp4: add and parse 3DDS uuid

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
23:53:39 2017 +0200| [9e8a1481e95d8165f0fd6538f9a12f393a5e8cc3] | committer: 
Francois Cartegnie

demux: libmp4: add and parse 3DDS uuid

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

 modules/demux/mp4/libmp4.c | 2 ++
 modules/demux/mp4/libmp4.h | 5 +
 2 files changed, 7 insertions(+)

diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 254ac79c57..ba9fe06fda 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -4174,6 +4174,8 @@ static int MP4_ReadBox_uuid( stream_t *p_stream, 
MP4_Box_t *p_box )
 return MP4_ReadBox_tfxd( p_stream, p_box );
 if( !CmpUUID( _box->i_uuid,  ) )
 return MP4_ReadBox_XML360( p_stream, p_box );
+if( !CmpUUID( _box->i_uuid,  ) && p_box->i_size == 28 )
+return MP4_ReadBox_Binary( p_stream, p_box );
 
 #ifdef MP4_VERBOSE
 msg_Warn( p_stream, "Unknown uuid type box: "
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index 7d7285b4b2..56f71c0309 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -1896,6 +1896,11 @@ static const UUID_t XML360BoxUUID = {
 { 0xff, 0xcc, 0x82, 0x63, 0xf8, 0x55, 0x4a, 0x93,
   0x88, 0x14, 0x58, 0x7a, 0x02, 0x52, 0x1f, 0xdd } };
 
+/* PS3 3D by HMMP video encoder */
+static const UUID_t PS3DDSBoxUUID = {
+{ 0x33, 0x44, 0x44, 0x53, 0x21, 0xd2, 0x4f, 0xce,
+  0xbb, 0x88, 0x69, 0x5c, 0xfa, 0xc9, 0xc7, 0x40 } };
+
 /*
  * MP4_Seek : non seekable stream safe seek
  /

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


[vlc-commits] demux: libmp4: move uuid parsing

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
23:52:26 2017 +0200| [78f07cef022379050c936faed8150d81f83a4b88] | committer: 
Francois Cartegnie

demux: libmp4: move uuid parsing

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

 modules/demux/mp4/libmp4.c | 48 --
 1 file changed, 25 insertions(+), 23 deletions(-)

diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 0eeac770b0..254ac79c57 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -752,29 +752,6 @@ static int MP4_ReadBox_XML360( stream_t *p_stream, 
MP4_Box_t *p_box )
 MP4_READBOX_EXIT( 1 );
 }
 
-static int MP4_ReadBox_uuid( stream_t *p_stream, MP4_Box_t *p_box )
-{
-if( !CmpUUID( _box->i_uuid,  ) )
-return MP4_ReadBox_tfrf( p_stream, p_box );
-if( !CmpUUID( _box->i_uuid,  ) )
-return MP4_ReadBox_tfxd( p_stream, p_box );
-if( !CmpUUID( _box->i_uuid,  ) )
-return MP4_ReadBox_XML360( p_stream, p_box );
-
-#ifdef MP4_VERBOSE
-msg_Warn( p_stream, "Unknown uuid type box: "
-"0x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x"
-"%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x",
-p_box->i_uuid.b[0],  p_box->i_uuid.b[1],  p_box->i_uuid.b[2],  
p_box->i_uuid.b[3],
-p_box->i_uuid.b[4],  p_box->i_uuid.b[5],  p_box->i_uuid.b[6],  
p_box->i_uuid.b[7],
-p_box->i_uuid.b[8],  p_box->i_uuid.b[9],  p_box->i_uuid.b[10], 
p_box->i_uuid.b[11],
-p_box->i_uuid.b[12], p_box->i_uuid.b[13], p_box->i_uuid.b[14], 
p_box->i_uuid.b[15] );
-#else
-msg_Warn( p_stream, "Unknown uuid type box" );
-#endif
-return 1;
-}
-
 static int MP4_ReadBox_st3d( stream_t *p_stream, MP4_Box_t *p_box )
 {
 MP4_READBOX_ENTER( MP4_Box_data_st3d_t, NULL );
@@ -4188,6 +4165,31 @@ unknown:
 }
 
 / --- /
+
+static int MP4_ReadBox_uuid( stream_t *p_stream, MP4_Box_t *p_box )
+{
+if( !CmpUUID( _box->i_uuid,  ) )
+return MP4_ReadBox_tfrf( p_stream, p_box );
+if( !CmpUUID( _box->i_uuid,  ) )
+return MP4_ReadBox_tfxd( p_stream, p_box );
+if( !CmpUUID( _box->i_uuid,  ) )
+return MP4_ReadBox_XML360( p_stream, p_box );
+
+#ifdef MP4_VERBOSE
+msg_Warn( p_stream, "Unknown uuid type box: "
+"%2.2x%2.2x%2.2x%2.2x-%2.2x%2.2x-%2.2x%2.2x-"
+"%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x",
+p_box->i_uuid.b[0],  p_box->i_uuid.b[1],  p_box->i_uuid.b[2],  
p_box->i_uuid.b[3],
+p_box->i_uuid.b[4],  p_box->i_uuid.b[5],  p_box->i_uuid.b[6],  
p_box->i_uuid.b[7],
+p_box->i_uuid.b[8],  p_box->i_uuid.b[9],  p_box->i_uuid.b[10], 
p_box->i_uuid.b[11],
+p_box->i_uuid.b[12], p_box->i_uuid.b[13], p_box->i_uuid.b[14], 
p_box->i_uuid.b[15] );
+#else
+msg_Warn( p_stream, "Unknown uuid type box" );
+#endif
+return 1;
+}
+
+/ --- /
 /   "Higher level" Functions  /
 / --- /
 

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


[vlc-commits] packetizer: mpegvideo: add missing mapping

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
21:41:19 2017 +0200| [e285e13f66c6deaad45f6cdd7a4e93cb0ecc7900] | committer: 
Francois Cartegnie

packetizer: mpegvideo: add missing mapping

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

 modules/packetizer/mpegvideo.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c
index d8e988c2ec..e4c9cbc8d0 100644
--- a/modules/packetizer/mpegvideo.c
+++ b/modules/packetizer/mpegvideo.c
@@ -807,6 +807,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t 
*p_frag )
 break;
 case 5: /* BT.470BG */
 case 6: /* SMPTE 170 M */
+case 7: /* SMPTE 240 M */
 p_dec->fmt_out.video.space = COLOR_SPACE_BT601;
 break;
 default:

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


[vlc-commits] macOS build.sh: Build gettext before contribs

2017-07-26 Thread David Fuhrmann
vlc | branch: master | David Fuhrmann  | Wed Jul 26 
21:07:31 2017 +0200| [98f88252005c6197c255f39d02bbe3f9a80a02a9] | committer: 
David Fuhrmann

macOS build.sh: Build gettext before contribs

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

 extras/package/macosx/build.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/extras/package/macosx/build.sh b/extras/package/macosx/build.sh
index cbd3b0fa2b..28a8ffe5b4 100755
--- a/extras/package/macosx/build.sh
+++ b/extras/package/macosx/build.sh
@@ -157,6 +157,7 @@ if [ "$REBUILD" = "yes" ]; then
 fi
 if [ "$CONTRIBFROMSOURCE" = "yes" ]; then
 make fetch
+make -j$jobs .gettext
 make -j$jobs
 else
 if [ ! -e "../$TRIPLET" ]; then

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


[vlc-commits] macOS build.sh: Enable -Werror=partial-availability for contribs

2017-07-26 Thread David Fuhrmann
vlc | branch: master | David Fuhrmann  | Wed Jul 26 
21:07:52 2017 +0200| [f87eeb29b6b0d34754e6c66309dd246f15294853] | committer: 
David Fuhrmann

macOS build.sh: Enable -Werror=partial-availability for contribs

Usually, contribs do not support runtime handling of partial
availability well. Turning this warning into an error has several
advantages:
- It fixes feature detection for custom build scripts: If a custom
build script includes the correct header, the check will now fail
to build and replacements will be enabled. This is the case for
ffmpeg, for instance.
- Even if configure check might not fail, the build will fail
for correctly annotated functions, once they are used in the code.
This makes it very visible if new partial symbols are added, so
that they can be fixed or disabled subsequently.

refs #18476

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

 extras/package/macosx/build.sh | 20 ++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/extras/package/macosx/build.sh b/extras/package/macosx/build.sh
index 28a8ffe5b4..43cb0a9066 100755
--- a/extras/package/macosx/build.sh
+++ b/extras/package/macosx/build.sh
@@ -122,8 +122,9 @@ export ac_cv_func_mkostemps=no
 export ac_cv_func_ffsll=no
 export ac_cv_func_flsll=no
 export ac_cv_func_fdopendir=no
-export ac_cv_func_openat=no # Disables fstatat as well
-
+export ac_cv_func_openat=no
+export ac_cv_func_fstatat=no
+export ac_cv_func_readlinkat=no
 
 # libnetwork does not exist yet on 10.7 (used by libcddb)
 export ac_cv_lib_network_connect=no
@@ -148,6 +149,17 @@ let jobs=$core_count+1
 # vlc/contribs
 #
 
+# Usually, VLCs contrib libraries do not support partial availability at 
runtime.
+# Forcing those errors has two reasons:
+# - Some custom configure scripts include the right header for testing 
availability.
+#   Those configure checks fail (correctly) with those errors, and 
replacements are
+#   enabled. (e.g. ffmpeg)
+# - This will fail the build if a partially available symbol is added later on
+#   in contribs and not mentioned in the list of symbols above.
+export CFLAGS="-Werror=partial-availability"
+export CXXFLAGS="-Werror=partial-availability"
+export OBJCFLAGS="-Werror=partial-availability"
+
 info "Building contribs"
 spushd "${vlcroot}/contrib"
 mkdir -p contrib-$TRIPLET && cd contrib-$TRIPLET
@@ -166,6 +178,10 @@ fi
 fi
 spopd
 
+unset CFLAGS
+unset CXXFLAGS
+unset OBJCFLAGS
+
 
 #
 # vlc/bootstrap

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


[vlc-commits] vout: handle error without aborting

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
22:07:54 2017 +0300| [7c6e3bf9ffcc5db77b8f6e8f09826b8a93efeb47] | committer: 
Rémi Denis-Courmont

vout: handle error without aborting

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

 src/video_output/display.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/video_output/display.c b/src/video_output/display.c
index fe2c86e75c..b2f6f4d3d7 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -415,8 +415,6 @@ static int VoutDisplayCreateRender(vout_display_t *vd)
 {
 vout_display_owner_sys_t *osys = vd->owner.sys;
 
-osys->filters = NULL;
-
 video_format_t v_src = vd->source;
 v_src.i_sar_num = 0;
 v_src.i_sar_den = 0;
@@ -433,8 +431,10 @@ static int VoutDisplayCreateRender(vout_display_t *vd)
 v_dst_cmp.i_chroma = v_src.i_chroma;
 
 const bool convert = memcmp(_src, _dst_cmp, sizeof(v_src)) != 0;
-if (!convert)
+if (!convert) {
+osys->filters = NULL;
 return 0;
+}
 
 msg_Dbg(vd, "A filter to adapt decoder %4.4s to display %4.4s is needed",
 (const char *)_src.i_chroma, (const char *)_dst.i_chroma);
@@ -448,7 +448,7 @@ static int VoutDisplayCreateRender(vout_display_t *vd)
 
 osys->filters = filter_chain_NewVideo(vd, false, );
 if (unlikely(osys->filters == NULL))
-abort(); /* TODO critical */
+return -1;
 
 /* */
 es_format_t src;

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


[vlc-commits] vout: make vout_FilterDisplay() work always

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:54:56 2017 +0300| [5908911afb80b6c274525018c1fbf55ebebac594] | committer: 
Rémi Denis-Courmont

vout: make vout_FilterDisplay() work always

Deal with the trivial case whereby the vout is unfiltered. Simplify the
call sites accordingly.

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

 src/video_output/display.c  |  8 +---
 src/video_output/video_output.c | 16 
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/video_output/display.c b/src/video_output/display.c
index 055bb7d01d..fe2c86e75c 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -1092,11 +1092,14 @@ picture_t *vout_FilterDisplay(vout_display_t *vd, 
picture_t *picture)
 {
 vout_display_owner_sys_t *osys = vd->owner.sys;
 
-assert(osys->filters);
+if (osys->filters == NULL)
+return picture;
+
 if (filter_chain_IsEmpty(osys->filters)) {
 picture_Release(picture);
 return NULL;
 }
+
 return filter_chain_VideoFilter(osys->filters, picture);
 }
 
@@ -1451,8 +1454,7 @@ static void SplitterPrepare(vout_display_t *vd,
 }
 
 for (int i = 0; i < sys->count; i++) {
-if (vout_IsDisplayFiltered(sys->display[i]))
-sys->picture[i] = vout_FilterDisplay(sys->display[i], 
sys->picture[i]);
+sys->picture[i] = vout_FilterDisplay(sys->display[i], sys->picture[i]);
 if (sys->picture[i])
 vout_display_Prepare(sys->display[i], sys->picture[i], NULL);
 }
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 336b97e7ba..640232a0ea 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1045,17 +1045,17 @@ static int ThreadDisplayRenderPicture(vout_thread_t 
*vout, bool is_forced)
 
 /* Render the direct buffer */
 vout_UpdateDisplaySourceProperties(vd, >format);
+
+todisplay = vout_FilterDisplay(vd, todisplay);
+if (todisplay == NULL) {
+if (subpic != NULL)
+subpicture_Delete(subpic);
+return VLC_EGENERIC;
+}
+
 if (sys->display.use_dr) {
 vout_display_Prepare(vd, todisplay, subpic);
 } else {
-todisplay = vout_FilterDisplay(vd, todisplay);
-if (todisplay == NULL)
-{
-if (subpic != NULL)
-subpicture_Delete(subpic);
-return VLC_EGENERIC;
-}
-
 if (!do_dr_spu && !do_early_spu && vout->p->spu_blend && subpic)
 picture_BlendSubpicture(todisplay, vout->p->spu_blend, subpic);
 vout_display_Prepare(vd, todisplay, do_dr_spu ? subpic : NULL);

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


[vlc-commits] vout: remove redundant test

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:47:02 2017 +0300| [bff9042430d3fd173f9f7a2d66ee38ff03e88400] | committer: 
Rémi Denis-Courmont

vout: remove redundant test

If the vout is unfiltered (in this context), then use_dr is true.

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

 src/video_output/video_output.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 63ca06f6ea..336b97e7ba 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -940,7 +940,6 @@ static int ThreadDisplayRenderPicture(vout_thread_t *vout, 
bool is_forced)
   (vd->info.is_slow ||
sys->display.use_dr ||
do_snapshot ||
-   !vout_IsDisplayFiltered(vd) ||
vd->fmt.i_width * vd->fmt.i_height <= 
vd->source.i_width * vd->source.i_height);
 
 const vlc_fourcc_t *subpicture_chromas;

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


[vlc-commits] filter_chain: remove useless length member

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:26:52 2017 +0300| [5f164b8a6ead6e1be6f4e16a1d9b7b3c414d0bd8] | committer: 
Rémi Denis-Courmont

filter_chain: remove useless length member

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

 src/misc/filter_chain.c | 8 +---
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index 3e7d4fb08f..552ed9e587 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -58,7 +58,6 @@ struct filter_chain_t
 
 es_format_t fmt_in; /**< Chain input format (constant) */
 es_format_t fmt_out; /**< Chain current output format */
-unsigned length; /**< Number of filters */
 bool b_allow_fmt_out_change; /**< Can the output format be changed? */
 const char *filter_cap; /**< Filter modules capability */
 const char *conv_cap; /**< Converter modules capability */
@@ -87,7 +86,6 @@ static filter_chain_t *filter_chain_NewInner( const 
filter_owner_t *callbacks,
 chain->last = NULL;
 es_format_Init( >fmt_in, cat, 0 );
 es_format_Init( >fmt_out, cat, 0 );
-chain->length = 0;
 chain->b_allow_fmt_out_change = fmt_out_change;
 chain->filter_cap = cap;
 chain->conv_cap = conv_cap;
@@ -243,7 +241,6 @@ static filter_t *filter_chain_AppendInner( filter_chain_t 
*chain,
 chained->prev = chain->last;
 chain->last = chained;
 chained->next = NULL;
-chain->length++;
 
 vlc_mouse_t *mouse = malloc( sizeof(*mouse) );
 if( likely(mouse != NULL) )
@@ -304,9 +301,6 @@ void filter_chain_DeleteFilter( filter_chain_t *chain, 
filter_t *filter )
 chain->last = chained->prev;
 }
 
-assert( chain->length > 0 );
-chain->length--;
-
 module_unneed( filter, filter->p_module );
 
 msg_Dbg( obj, "Filter %p removed from chain", (void *)filter );
@@ -381,7 +375,7 @@ int filter_chain_ForEach( filter_chain_t *chain,
 
 bool filter_chain_IsEmpty(const filter_chain_t *chain)
 {
-return chain->length == 0;
+return chain->first == NULL;
 }
 
 const es_format_t *filter_chain_GetFmtOut( filter_chain_t *p_chain )

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


[vlc-commits] filter_chain: use container_of()

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:04:47 2017 +0300| [8e11a7c3bcf55978a8d0be1e0bcee203013c8743] | committer: 
Rémi Denis-Courmont

filter_chain: use container_of()

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

 src/misc/filter_chain.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index 02e389d4ef..1b93ddce8c 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -43,9 +43,9 @@ typedef struct chained_filter_t
 } chained_filter_t;
 
 /* Only use this with filter objects from _this_ C module */
-static inline chained_filter_t *chained (filter_t *filter)
+static inline chained_filter_t *chained(filter_t *filter)
 {
-return (chained_filter_t *)filter;
+return container_of(filter, chained_filter_t, filter);
 }
 
 /* */

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


[vlc-commits] filter_chain: replace GetLength with IsEmpty

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:25:15 2017 +0300| [9f74ef90bec7bacbc527ba20f38c33560f8af321] | committer: 
Rémi Denis-Courmont

filter_chain: replace GetLength with IsEmpty

Nothing cares about the actual length if it is non-zero. Also constify.

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

 include/vlc_filter.h | 6 +++---
 modules/stream_out/transcode/video.c | 2 +-
 src/libvlccore.sym   | 2 +-
 src/misc/filter_chain.c  | 4 ++--
 src/video_output/display.c   | 2 +-
 src/video_output/video_output.c  | 2 +-
 src/video_output/vout_subpictures.c  | 2 +-
 7 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/include/vlc_filter.h b/include/vlc_filter.h
index 8b290c5f66..3b30dbb562 100644
--- a/include/vlc_filter.h
+++ b/include/vlc_filter.h
@@ -395,12 +395,12 @@ VLC_API void filter_chain_DeleteFilter(filter_chain_t 
*chain,
filter_t *filter);
 
 /**
- * Get the number of filters in the filter chain.
+ * Checks if the filter chain is empty.
  *
  * \param chain pointer to filter chain
- * \return number of filters in this filter chain
+ * \return true if and only if there are no filters in this filter chain
  */
-VLC_API int filter_chain_GetLength(filter_chain_t *chain);
+VLC_API bool filter_chain_IsEmpty(const filter_chain_t *chain);
 
 /**
  * Get last output format of the last element in the filter chain.
diff --git a/modules/stream_out/transcode/video.c 
b/modules/stream_out/transcode/video.c
index 3b5c5e25ff..de36922b87 100644
--- a/modules/stream_out/transcode/video.c
+++ b/modules/stream_out/transcode/video.c
@@ -706,7 +706,7 @@ static void OutputFrame( sout_stream_t *p_stream, picture_t 
*p_pic, sout_stream_
 /* Overlay subpicture */
 if( p_subpic )
 {
-if( picture_IsReferenced( p_pic ) && !filter_chain_GetLength( 
id->p_f_chain ) )
+if( picture_IsReferenced( p_pic ) && filter_chain_IsEmpty( 
id->p_f_chain ) )
 {
 /* We can't modify the picture, we need to duplicate it,
  * in this point the picture is already p_encoder->fmt.in 
format*/
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 8d9bb53d3c..5faf32c2b0 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -108,7 +108,7 @@ filter_chain_AppendFromString
 filter_chain_Delete
 filter_chain_DeleteFilter
 filter_chain_GetFmtOut
-filter_chain_GetLength
+filter_chain_IsEmpty
 filter_chain_MouseFilter
 filter_chain_MouseEvent
 filter_chain_NewVideo
diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index 1b93ddce8c..3e7d4fb08f 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -379,9 +379,9 @@ int filter_chain_ForEach( filter_chain_t *chain,
 return VLC_SUCCESS;
 }
 
-int filter_chain_GetLength( filter_chain_t *p_chain )
+bool filter_chain_IsEmpty(const filter_chain_t *chain)
 {
-return p_chain->length;
+return chain->length == 0;
 }
 
 const es_format_t *filter_chain_GetFmtOut( filter_chain_t *p_chain )
diff --git a/src/video_output/display.c b/src/video_output/display.c
index 960f08e66e..055bb7d01d 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -1093,7 +1093,7 @@ picture_t *vout_FilterDisplay(vout_display_t *vd, 
picture_t *picture)
 vout_display_owner_sys_t *osys = vd->owner.sys;
 
 assert(osys->filters);
-if (filter_chain_GetLength(osys->filters) <= 0) {
+if (filter_chain_IsEmpty(osys->filters)) {
 picture_Release(picture);
 return NULL;
 }
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index a5cc3ce8b1..63ca06f6ea 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -684,7 +684,7 @@ static picture_t *VoutVideoFilterStaticNewPicture(filter_t 
*filter)
 vout_thread_t *vout = filter->owner.sys;
 
 vlc_assert_locked(>p->filter.lock);
-if (filter_chain_GetLength(vout->p->filter.chain_interactive) == 0)
+if (filter_chain_IsEmpty(vout->p->filter.chain_interactive))
 return VoutVideoFilterInteractiveNewPicture(filter);
 
 return picture_NewFromFormat(>fmt_out.video);
diff --git a/src/video_output/vout_subpictures.c 
b/src/video_output/vout_subpictures.c
index 3a66e0ddd8..0a64bd4e0a 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -1440,7 +1440,7 @@ void spu_PutSubpicture(spu_t *spu, subpicture_t *subpic)
 /* "sub-source"  was formerly "sub-filter", so now the "sub-filter"
 configuration may contain sub-filters or sub-sources configurations.
 if the filters chain was left empty it may indicate that it's a 
sub-source configuration */
-is_left_empty = (filter_chain_GetLength(spu->p->filter_chain) == 0);
+is_left_empty = filter_chain_IsEmpty(spu->p->filter_chain);
 

[vlc-commits] spu: remove useless check

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
21:07:48 2017 +0300| [3917462779e0009e070b2c95d48782c4f806289f] | committer: 
Rémi Denis-Courmont

spu: remove useless check

filter_chain_Reset(NULL, NULL) is a no-op on an empty chain.

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

 src/video_output/vout_subpictures.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/video_output/vout_subpictures.c 
b/src/video_output/vout_subpictures.c
index acc0173518..3a66e0ddd8 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -1434,7 +1434,7 @@ void spu_PutSubpicture(spu_t *spu, subpicture_t *subpic)
  SubFilterAddProxyCallbacks,
  sys->vout);
 }
-else if (filter_chain_GetLength(spu->p->filter_chain) > 0)
+else
 filter_chain_Reset(sys->filter_chain, NULL, NULL);
 
 /* "sub-source"  was formerly "sub-filter", so now the "sub-filter"

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


[vlc-commits] caopengllayer: set HDR mode on 10.12 and later only (closes #17763)

2017-07-26 Thread Felix Paul Kühne
vlc | branch: master | Felix Paul Kühne  | Wed Jul 26 
18:35:17 2017 +0200| [44ae5e72db59afc31996e35c11022f3dd5d2d153] | committer: 
Felix Paul Kühne

caopengllayer: set HDR mode on 10.12 and later only (closes #17763)

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

 modules/video_output/caopengllayer.m | 15 +--
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/modules/video_output/caopengllayer.m 
b/modules/video_output/caopengllayer.m
index dd47cd7b4c..2a3cca5712 100644
--- a/modules/video_output/caopengllayer.m
+++ b/modules/video_output/caopengllayer.m
@@ -1,7 +1,7 @@
 /*
  * caopengllayer.m: CAOpenGLLayer (Mac OS X) video output
  *
- * Copyright (C) 2014-2016 VLC authors and VideoLAN
+ * Copyright (C) 2014-2017 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: David Fuhrmann 
@@ -43,7 +43,8 @@
 
 #include "opengl/vout_helper.h"
 
-#define OSX_EL_CAPITAN (NSAppKitVersionNumber >= 1404)
+#define OSX_EL_CAPITAN_AND_HIGHER (NSAppKitVersionNumber >= 1404)
+#define OSX_SIERRA_AND_HIGHER (NSAppKitVersionNumber >= 1485)
 
 #if MAC_OS_X_VERSION_MIN_ALLOWED <= MAC_OS_X_VERSION_10_11
 const CFStringRef kCGColorSpaceDCIP3 = CFSTR("kCGColorSpaceDCIP3");
@@ -219,7 +220,7 @@ static int Open (vlc_object_t *p_this)
 
 /* support for BT.709 and BT.2020 color spaces was introduced with 
OS X 10.11
  * on older OS versions, we can't show correct colors, so we 
fallback on linear RGB */
-if (OSX_EL_CAPITAN) {
+if (OSX_EL_CAPITAN_AND_HIGHER) {
 switch (fmt.primaries) {
 case COLOR_PRIMARIES_BT601_525:
 case COLOR_PRIMARIES_BT601_625:
@@ -272,9 +273,11 @@ static int Open (vlc_object_t *p_this)
 msg_Dbg(vd, "OS does not support custom color spaces, output may 
be undefined");
 }
 
-/* request our screen's HDR mode (introduced in OS X 10.11) */
-if ([sys->cgLayer 
respondsToSelector:@selector(setWantsExtendedDynamicRangeContent:)]) {
-[sys->cgLayer setWantsExtendedDynamicRangeContent:YES];
+if (OSX_SIERRA_AND_HIGHER) {
+/* request our screen's HDR mode (introduced in OS X 10.11, but 
correctly supported in 10.12 only) */
+if ([sys->cgLayer 
respondsToSelector:@selector(setWantsExtendedDynamicRangeContent:)]) {
+[sys->cgLayer setWantsExtendedDynamicRangeContent:YES];
+}
 }
 
 /* setup initial state */

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


[vlc-commits] d3d11va: don't use the external pool on Qualcomm devices if the sizes don't match

2017-07-26 Thread Steve Lhomme
vlc | branch: master | Steve Lhomme  | Wed Jul 26 15:06:39 
2017 +0200| [e1be6b1563d16e9fdb77d75d4a2d2f6cc1e4ffcf] | committer: 
Jean-Baptiste Kempf

d3d11va: don't use the external pool on Qualcomm devices if the sizes don't 
match

On such devices the decoder needs to have the exact size with the required DXVA
padding but no more and no less. So we can't anything that doesn't match these
criteria for decoding.

Signed-off-by: Jean-Baptiste Kempf 

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

 modules/codec/avcodec/d3d11va.c | 28 
 1 file changed, 28 insertions(+)

diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index 12ee88fcb8..0a874e48e6 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -110,6 +110,8 @@ struct vlc_va_sys_t
 {
 directx_sys_tdx_sys;
 UINT totalTextureSlices;
+unsigned textureWidth;
+unsigned textureHeight;
 
 #if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
 HINSTANCEdxgidebug_dll;
@@ -373,6 +375,8 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum 
PixelFormat pix_fmt,
 D3D11_TEXTURE2D_DESC dstDesc;
 ID3D11Texture2D_GetDesc( p_sys->texture[KNOWN_DXGI_INDEX], 
);
 sys->render = dstDesc.Format;
+va->sys->textureWidth = dstDesc.Width;
+va->sys->textureHeight = dstDesc.Height;
 va->sys->totalTextureSlices = dstDesc.ArraySize;
 }
 }
@@ -698,6 +702,23 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input, 
const video_format_t *
 return VLC_EGENERIC;
 }
 
+static bool CanUseDecoderPadding(directx_sys_t *dx_sys)
+{
+IDXGIAdapter *pAdapter = D3D11DeviceAdapter(dx_sys->d3ddev);
+if (!pAdapter)
+return false;
+
+DXGI_ADAPTER_DESC adapterDesc;
+HRESULT hr = IDXGIAdapter_GetDesc(pAdapter, );
+IDXGIAdapter_Release(pAdapter);
+if (FAILED(hr))
+return false;
+
+/* Qualcomm hardware has issues with textures and pixels that should not be
+* part of the decoded area */
+return adapterDesc.VendorId != 0x4D4F4351;
+}
+
 /**
  * It creates a Direct3D11 decoder using the given video format
  */
@@ -726,6 +747,13 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int 
codec_id,
 return VLC_EGENERIC;
 }
 #endif
+if ((sys->textureWidth != fmt->i_width || sys->textureHeight != 
fmt->i_height) &&
+!CanUseDecoderPadding(dx_sys))
+{
+msg_Dbg(va, "mismatching external pool sizes use the internal one 
%dx%d vs %dx%d",
+sys->textureWidth, sys->textureHeight, fmt->i_width, 
fmt->i_height);
+dx_sys->can_extern_pool = false;
+}
 
 D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc;
 ZeroMemory(, sizeof(viewDesc));

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


[vlc-commits] caopengllayer: fix green output

2017-07-26 Thread Victorien Le Couviour--Tuffet
vlc | branch: master | Victorien Le Couviour--Tuffet 
 | Wed Jul 26 16:14:01 2017 +0200| 
[fdb40afd8ef10669024244489c45d2c335e0c74c] | committer: Jean-Baptiste Kempf

caopengllayer: fix green output

Fixes #18309.

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

 modules/video_output/caopengllayer.m | 58 +++-
 1 file changed, 37 insertions(+), 21 deletions(-)

diff --git a/modules/video_output/caopengllayer.m 
b/modules/video_output/caopengllayer.m
index ed77118f99..dd47cd7b4c 100644
--- a/modules/video_output/caopengllayer.m
+++ b/modules/video_output/caopengllayer.m
@@ -84,6 +84,7 @@ static void OpenglSwap (vlc_gl_t *gl);
 @interface VLCCAOpenGLLayer : CAOpenGLLayer
 
 @property (nonatomic, readwrite) vout_display_t* voutDisplay;
+@property (nonatomic, readwrite) CGLContextObj glContext;
 
 @end
 
@@ -99,8 +100,6 @@ struct vout_display_sys_t {
 
 CGColorSpaceRef cgColorSpace;
 
-CGLContextObj glContext;
-
 vlc_gl_t *gl;
 vout_display_opengl_t *vgl;
 
@@ -109,6 +108,12 @@ struct vout_display_sys_t {
 bool  b_frame_available;
 };
 
+struct gl_sys
+{
+CGLContextObj locked_ctx;
+VLCCAOpenGLLayer *cgLayer;
+};
+
 /*
  * Open: This function allocates and initializes the OpenGL vout method.
  */
@@ -167,7 +172,7 @@ static int Open (vlc_object_t *p_this)
 if (!sys->cgLayer)
 goto bailout;
 
-if (!sys->glContext)
+if (![sys->cgLayer glContext])
 msg_Warn(vd, "we might not have an OpenGL context yet");
 
 /* Initialize common OpenGL video display */
@@ -178,7 +183,12 @@ static int Open (vlc_object_t *p_this)
 sys->gl->releaseCurrent = OpenglUnlock;
 sys->gl->swap = OpenglSwap;
 sys->gl->getProcAddress = OurGetProcAddress;
-sys->gl->sys = sys;
+
+struct gl_sys *glsys = sys->gl->sys = malloc(sizeof(*glsys));
+if (!sys->gl->sys)
+goto bailout;
+glsys->locked_ctx = NULL;
+glsys->cgLayer = sys->cgLayer;
 
 const vlc_fourcc_t *subpicture_chromas;
 video_format_t fmt = vd->fmt;
@@ -308,10 +318,17 @@ static void Close (vlc_object_t *p_this)
 }
 
 if (sys->gl != NULL)
+{
+if (sys->gl->sys != NULL)
+{
+assert(((struct gl_sys *)sys->gl->sys)->locked_ctx == NULL);
+free(sys->gl->sys);
+}
 vlc_object_release(sys->gl);
+}
 
-if (sys->glContext)
-CGLReleaseContext(sys->glContext);
+if ([sys->cgLayer glContext])
+CGLReleaseContext([sys->cgLayer glContext]);
 
 if (sys->cgColorSpace != nil)
 CGColorSpaceRelease(sys->cgColorSpace);
@@ -450,15 +467,18 @@ static int Control (vout_display_t *vd, int query, 
va_list ap)
 
 static int OpenglLock (vlc_gl_t *gl)
 {
-vout_display_sys_t *sys = (vout_display_sys_t *)gl->sys;
+struct gl_sys *sys = gl->sys;
+assert(sys->locked_ctx == NULL);
 
-if(!sys->glContext) {
+CGLContextObj ctx = [sys->cgLayer glContext];
+if(!ctx) {
 return 1;
 }
 
-CGLError err = CGLLockContext(sys->glContext);
+CGLError err = CGLLockContext(ctx);
 if (kCGLNoError == err) {
-CGLSetCurrentContext(sys->glContext);
+sys->locked_ctx = ctx;
+CGLSetCurrentContext(ctx);
 return 0;
 }
 return 1;
@@ -466,13 +486,9 @@ static int OpenglLock (vlc_gl_t *gl)
 
 static void OpenglUnlock (vlc_gl_t *gl)
 {
-vout_display_sys_t *sys = (vout_display_sys_t *)gl->sys;
-
-if (!sys->glContext) {
-return;
-}
-
-CGLUnlockContext(sys->glContext);
+struct gl_sys *sys = gl->sys;
+CGLUnlockContext(sys->locked_ctx);
+sys->locked_ctx = NULL;
 }
 
 static void OpenglSwap (vlc_gl_t *gl)
@@ -561,9 +577,9 @@ static void *OurGetProcAddress (vlc_gl_t *gl, const char 
*name)
 - (CGLContextObj)copyCGLContextForPixelFormat:(CGLPixelFormatObj)pixelFormat
 {
 // Only one opengl context is allowed for the module lifetime
-if(_voutDisplay->sys->glContext) {
-msg_Dbg(_voutDisplay, "Return existing context: %p", 
_voutDisplay->sys->glContext);
-return _voutDisplay->sys->glContext;
+if(_glContext) {
+msg_Dbg(_voutDisplay, "Return existing context: %p", _glContext);
+return _glContext;
 }
 
 CGLContextObj context = [super copyCGLContextForPixelFormat:pixelFormat];
@@ -577,7 +593,7 @@ static void *OurGetProcAddress (vlc_gl_t *gl, const char 
*name)
   );
 
 @synchronized (self) {
-_voutDisplay->sys->glContext = context;
+_glContext = context;
 }
 
 return context;

___
vlc-commits mailing list
vlc-commits@videolan.org

[vlc-commits] misc: ensure vlc_object_t is correctly aligned

2017-07-26 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Wed Jul 26 
17:50:24 2017 +0300| [94d8e0b9c1a27db4589d356ec11825934af80549] | committer: 
Rémi Denis-Courmont

misc: ensure vlc_object_t is correctly aligned

See also 4f91e6bc15d8b72deb1f761ca857a33d672c91ef.

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

 src/misc/variables.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/misc/variables.h b/src/misc/variables.h
index 38af8635a2..dccd96bcb3 100644
--- a/src/misc/variables.h
+++ b/src/misc/variables.h
@@ -23,6 +23,7 @@
 #ifndef LIBVLC_VARIABLES_H
 # define LIBVLC_VARIABLES_H 1
 
+# include 
 # include 
 
 struct vlc_res;
@@ -34,6 +35,7 @@ typedef struct vlc_object_internals vlc_object_internals_t;
 
 struct vlc_object_internals
 {
+alignas (max_align_t) /* ensure vlc_externals() is maximally aligned */
 char   *psz_name; /* given name */
 
 /* Object variables */

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


[vlc-commits] service_discovery: Improve debug log messages

2017-07-26 Thread Marvin Scholz
vlc | branch: master | Marvin Scholz  | Tue Jul 25 21:16:02 
2017 +0200| [aeee2106df15261f4470b928fb15331056478028] | committer: Rémi 
Denis-Courmont

service_discovery: Improve debug log messages

Signed-off-by: Rémi Denis-Courmont 

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

 src/playlist/services_discovery.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/playlist/services_discovery.c 
b/src/playlist/services_discovery.c
index b3c6f23ff8..5fd09c4587 100644
--- a/src/playlist/services_discovery.c
+++ b/src/playlist/services_discovery.c
@@ -50,7 +50,7 @@ static void playlist_sd_item_added(services_discovery_t *sd,
 playlist_item_t *node;
 const char *longname = (sd->description != NULL) ? sd->description : "?";
 
-msg_Dbg(sd, "adding %s", p_input->psz_name ? p_input->psz_name : "(null)");
+msg_Dbg(sd, "adding: %s", p_input->psz_name ? p_input->psz_name : 
"(null)");
 
 playlist_Lock(playlist);
 if (sds->node == NULL)
@@ -83,6 +83,8 @@ static void playlist_sd_item_removed(services_discovery_t *sd,
 playlist_t *p_playlist = (playlist_t *)sd->obj.parent;
 playlist_item_t *node, *item;
 
+msg_Dbg(sd, "removing: %s", p_input->psz_name ? p_input->psz_name : 
"(null)");
+
 PL_LOCK;
 item = playlist_ItemGetByInput(p_playlist, p_input);
 if (unlikely(item == NULL))

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


[vlc-commits] service_discovery: Consistently use playlist_Lock/Unlock

2017-07-26 Thread Marvin Scholz
vlc | branch: master | Marvin Scholz  | Tue Jul 25 21:16:03 
2017 +0200| [05269e4f81ffc672ed950f31834a613c06be068f] | committer: Rémi 
Denis-Courmont

service_discovery: Consistently use playlist_Lock/Unlock

Signed-off-by: Rémi Denis-Courmont 

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

 src/playlist/services_discovery.c | 28 ++--
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/playlist/services_discovery.c 
b/src/playlist/services_discovery.c
index 5fd09c4587..39a43badd6 100644
--- a/src/playlist/services_discovery.c
+++ b/src/playlist/services_discovery.c
@@ -80,17 +80,17 @@ static void playlist_sd_item_removed(services_discovery_t 
*sd,
  input_item_t *p_input)
 {
 vlc_sd_internal_t *sds = sd->owner.sys;
-playlist_t *p_playlist = (playlist_t *)sd->obj.parent;
+playlist_t *playlist = (playlist_t *)sd->obj.parent;
 playlist_item_t *node, *item;
 
 msg_Dbg(sd, "removing: %s", p_input->psz_name ? p_input->psz_name : 
"(null)");
 
-PL_LOCK;
-item = playlist_ItemGetByInput(p_playlist, p_input);
+playlist_Lock(playlist);
+item = playlist_ItemGetByInput(playlist, p_input);
 if (unlikely(item == NULL))
 {
 msg_Err(sd, "removing item not added"); /* SD plugin bug */
-PL_UNLOCK;
+playlist_Unlock(playlist);
 return;
 }
 
@@ -105,9 +105,9 @@ static void playlist_sd_item_removed(services_discovery_t 
*sd,
becomes empty, delete that node as well */
 if (node != sds->node && node->i_children == 1)
 item = node;
-playlist_NodeDeleteExplicit(p_playlist, item,
+playlist_NodeDeleteExplicit(playlist, item,
 PLAYLIST_DELETE_FORCE | PLAYLIST_DELETE_STOP_IF_CURRENT );
-PL_UNLOCK;
+playlist_Unlock(playlist);
 }
 
 int playlist_ServicesDiscoveryAdd(playlist_t *playlist, const char *chain)
@@ -193,12 +193,12 @@ int playlist_ServicesDiscoveryRemove(playlist_t 
*playlist, const char *name)
 return VLC_SUCCESS;
 }
 
-bool playlist_IsServicesDiscoveryLoaded( playlist_t * p_playlist,
+bool playlist_IsServicesDiscoveryLoaded( playlist_t * playlist,
  const char *psz_name )
 {
-playlist_private_t *priv = pl_priv( p_playlist );
+playlist_private_t *priv = pl_priv( playlist );
 bool found = false;
-PL_LOCK;
+playlist_Lock(playlist);
 
 for( int i = 0; i < priv->i_sds; i++ )
 {
@@ -210,17 +210,17 @@ bool playlist_IsServicesDiscoveryLoaded( playlist_t * 
p_playlist,
 break;
 }
 }
-PL_UNLOCK;
+playlist_Unlock(playlist);
 return found;
 }
 
-int playlist_ServicesDiscoveryControl( playlist_t *p_playlist, const char 
*psz_name, int i_control, ... )
+int playlist_ServicesDiscoveryControl( playlist_t *playlist, const char 
*psz_name, int i_control, ... )
 {
-playlist_private_t *priv = pl_priv( p_playlist );
+playlist_private_t *priv = pl_priv( playlist );
 int i_ret = VLC_EGENERIC;
 int i;
 
-PL_LOCK;
+playlist_Lock(playlist);
 for( i = 0; i < priv->i_sds; i++ )
 {
 vlc_sd_internal_t *sds = priv->pp_sds[i];
@@ -235,7 +235,7 @@ int playlist_ServicesDiscoveryControl( playlist_t 
*p_playlist, const char *psz_n
 }
 
 assert( i != priv->i_sds );
-PL_UNLOCK;
+playlist_Unlock(playlist);
 
 return i_ret;
 }

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


[vlc-commits] bonjour: clarify log messages and use correct levels

2017-07-26 Thread Marvin Scholz
vlc | branch: master | Marvin Scholz  | Tue Jul 25 21:16:01 
2017 +0200| [4e51c27add45a58ca735a7d6ef05092f551fc268] | committer: Rémi 
Denis-Courmont

bonjour: clarify log messages and use correct levels

Nearly all messages had level Info, which is unnecessary.

Signed-off-by: Rémi Denis-Courmont 

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

 modules/services_discovery/bonjour.m | 17 +++--
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/modules/services_discovery/bonjour.m 
b/modules/services_discovery/bonjour.m
index 6f7261e5d6..f8f4388689 100644
--- a/modules/services_discovery/bonjour.m
+++ b/modules/services_discovery/bonjour.m
@@ -177,23 +177,21 @@ NSString *const VLCBonjourRendererDemux = 
@"VLCBonjourRendererDemux";
 
 msg_Info(_p_this, "starting discovery");
 for (NSDictionary *protocol in VLCSupportedProtocols) {
-msg_Info(_p_this, "looking up %s", [[protocol objectForKey: 
VLCBonjourProtocolName] UTF8String]);
-
 /* Only discover services if we actually have a module that can handle 
those */
 if (!module_exists([[protocol objectForKey: VLCBonjourProtocolName] 
UTF8String]) && !_isRendererDiscovery) {
-msg_Info(_p_this, "no module for %s, skipping", [[protocol 
objectForKey: VLCBonjourProtocolName] UTF8String]);
+msg_Dbg(_p_this, "no module for %s, skipping", [[protocol 
objectForKey: VLCBonjourProtocolName] UTF8String]);
 continue;
 }
 
 /* Only discover hosts it they match the current mode (renderer or 
service) */
 if ([[protocol objectForKey: VLCBonjourIsRenderer] boolValue] != 
_isRendererDiscovery) {
-msg_Info(_p_this, "%s does not match current discovery mode, 
skipping", [[protocol objectForKey: VLCBonjourProtocolName] UTF8String]);
+msg_Dbg(_p_this, "%s does not match current discovery mode, 
skipping", [[protocol objectForKey: VLCBonjourProtocolName] UTF8String]);
 continue;
 }
 
 NSNetServiceBrowser *serviceBrowser = [[NSNetServiceBrowser alloc] 
init];
 [serviceBrowser setDelegate:self];
-msg_Info(_p_this, "starting discovery for type %s", [[protocol 
objectForKey: VLCBonjourProtocolServiceName] UTF8String]);
+msg_Dbg(_p_this, "starting discovery for type %s", [[protocol 
objectForKey: VLCBonjourProtocolServiceName] UTF8String]);
 [serviceBrowser searchForServicesOfType:[protocol objectForKey: 
VLCBonjourProtocolServiceName] inDomain:@"local."];
 [discoverers addObject:serviceBrowser];
 [protocols addObject:protocol];
@@ -229,8 +227,7 @@ NSString *const VLCBonjourRendererDemux = 
@"VLCBonjourRendererDemux";
 
 - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser 
didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing
 {
-msg_Info(_p_this, "found something, looking up");
-msg_Dbg(self.p_this, "found bonjour service: %s (%s)", [aNetService.name 
UTF8String], [aNetService.type UTF8String]);
+msg_Dbg(_p_this, "service found: %s (%s), resolving", [aNetService.name 
UTF8String], [aNetService.type UTF8String]);
 [_rawNetServices addObject:aNetService];
 aNetService.delegate = self;
 [aNetService resolveWithTimeout:5.];
@@ -238,7 +235,7 @@ NSString *const VLCBonjourRendererDemux = 
@"VLCBonjourRendererDemux";
 
 - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser 
didRemoveService:(NSNetService *)aNetService moreComing:(BOOL)moreComing
 {
-msg_Dbg(self.p_this, "bonjour service disappeared: %s", [aNetService.name 
UTF8String]);
+msg_Dbg(self.p_this, "service disappeared: %s (%s), removing", 
[aNetService.name UTF8String], [aNetService.type UTF8String]);
 
 /* If the item was not looked-up yet, just remove it */
 if ([_rawNetServices containsObject:aNetService])
@@ -266,7 +263,7 @@ NSString *const VLCBonjourRendererDemux = 
@"VLCBonjourRendererDemux";
 
 - (void)netServiceDidResolveAddress:(NSNetService *)aNetService
 {
-msg_Info(_p_this, "resolved something");
+msg_Dbg(_p_this, "service resolved: %s", [aNetService.name UTF8String]);
 if (![_resolvedNetServices containsObject:aNetService]) {
 NSString *serviceType = aNetService.type;
 NSString *protocol = nil;
@@ -288,7 +285,7 @@ NSString *const VLCBonjourRendererDemux = 
@"VLCBonjourRendererDemux";
 
 - (void)netService:(NSNetService *)aNetService didNotResolve:(NSDictionary 
*)errorDict
 {
-msg_Dbg(_p_this, "failed to resolve: %s", [aNetService.name UTF8String]);
+msg_Warn(_p_this, "service resolution failed: %s, removing", 
[aNetService.name UTF8String]);
 [_rawNetServices removeObject:aNetService];
 }
 

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


[vlc-commits] demux: adaptive: fix cross category es recycling

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
16:35:39 2017 +0200| [403dfe1a9a48fbc1c946b55cc4ba9269aaf1ba84] | committer: 
Francois Cartegnie

demux: adaptive: fix cross category es recycling

refs #18565

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

 modules/demux/adaptive/plumbing/FakeESOutID.cpp | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/demux/adaptive/plumbing/FakeESOutID.cpp 
b/modules/demux/adaptive/plumbing/FakeESOutID.cpp
index 73076a2773..41b93d9904 100644
--- a/modules/demux/adaptive/plumbing/FakeESOutID.cpp
+++ b/modules/demux/adaptive/plumbing/FakeESOutID.cpp
@@ -72,12 +72,15 @@ const es_format_t *FakeESOutID::getFmt() const
 
 bool FakeESOutID::isCompatible( const FakeESOutID *p_other ) const
 {
+if( p_other->fmt.i_cat != fmt.i_cat )
+return false;
+
 switch(fmt.i_codec)
 {
 case VLC_CODEC_H264:
 case VLC_CODEC_HEVC:
 case VLC_CODEC_VC1:
-return true;
+return true;
 
 default:
 if(fmt.i_cat == AUDIO_ES)

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


[vlc-commits] demux: adaptive: missing es_format_Init

2017-07-26 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Wed Jul 26 
16:33:21 2017 +0200| [ecdb644390011a2836bb5da9abb9c37926d873dd] | committer: 
Francois Cartegnie

demux: adaptive: missing es_format_Init

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

 modules/demux/adaptive/plumbing/FakeESOut.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/demux/adaptive/plumbing/FakeESOut.cpp 
b/modules/demux/adaptive/plumbing/FakeESOut.cpp
index 47976f2fe1..acc00c0520 100644
--- a/modules/demux/adaptive/plumbing/FakeESOut.cpp
+++ b/modules/demux/adaptive/plumbing/FakeESOut.cpp
@@ -91,6 +91,7 @@ void FakeESOut::setExtraInfoProvider( ExtraFMTInfoInterface 
*extra )
 FakeESOutID * FakeESOut::createNewID( const es_format_t *p_fmt )
 {
 es_format_t fmtcopy;
+es_format_Init( , p_fmt->i_cat, p_fmt->i_codec );
 es_format_Copy( , p_fmt );
 fmtcopy.i_group = 0; /* Always ignore group for adaptive */
 fmtcopy.i_id = -1;

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


[vlc-commits] lib: renderer_discoverer: add item hold/release

2017-07-26 Thread Thomas Guillem
vlc | branch: master | Thomas Guillem  | Wed Jul 26 16:32:29 
2017 +0200| [a24cd3f685f96e463385f3146bd74de17f8c371a] | committer: Thomas 
Guillem

lib: renderer_discoverer: add item hold/release

Libvlc users need to hold a reference to an item before using it. This avoid
use-after-free if the delete callback is called while an item is used by the
media player.

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

 include/vlc/libvlc_events.h  |  4 ++--
 include/vlc/libvlc_renderer_discoverer.h | 26 +-
 lib/renderer_discoverer.c| 13 +
 3 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h
index b69c5ce2be..f8b0e9b5b2 100644
--- a/include/vlc/libvlc_events.h
+++ b/include/vlc/libvlc_events.h
@@ -277,11 +277,11 @@ typedef struct libvlc_event_t
 
 struct
 {
-const libvlc_renderer_item_t *item;
+libvlc_renderer_item_t *item;
 } renderer_discoverer_item_added;
 struct
 {
-const libvlc_renderer_item_t *item;
+libvlc_renderer_item_t *item;
 } renderer_discoverer_item_deleted;
 } u; /**< Type-dependent event description */
 } libvlc_event_t;
diff --git a/include/vlc/libvlc_renderer_discoverer.h 
b/include/vlc/libvlc_renderer_discoverer.h
index 45095061e0..e63a8c9c2a 100644
--- a/include/vlc/libvlc_renderer_discoverer.h
+++ b/include/vlc/libvlc_renderer_discoverer.h
@@ -66,6 +66,29 @@ typedef struct libvlc_rd_description_t
  */
 typedef struct libvlc_renderer_item_t libvlc_renderer_item_t;
 
+
+/**
+ * Hold a renderer item, i.e. creates a new reference
+ *
+ * This functions need to called from the libvlc_RendererDiscovererItemAdded
+ * callback if the libvlc user wants to use this item after. (for display or
+ * for passing it to the mediaplayer for example).
+ *
+ * \version LibVLC 3.0.0 or later
+ *
+ * \return the current item
+ */
+LIBVLC_API libvlc_renderer_item_t *
+libvlc_renderer_item_hold(libvlc_renderer_item_t *p_item);
+
+/**
+ * Releases a renderer item, i.e. decrements its reference counter
+ *
+ * \version LibVLC 3.0.0 or later
+ */
+LIBVLC_API void
+libvlc_renderer_item_release(libvlc_renderer_item_t *p_item);
+
 /**
  * Get the human readable name of a renderer item
  *
@@ -178,7 +201,8 @@ libvlc_renderer_discoverer_stop( 
libvlc_renderer_discoverer_t *p_rd );
  * and @ref libvlc_RendererDiscovererItemDeleted.
  *
  * The @ref libvlc_renderer_item_t struct passed to event callbacks is owned by
- * VLC, users should take care of copying this struct for their internal usage.
+ * VLC, users should take care of holding/releasing this struct for their
+ * internal usage.
  *
  * \see libvlc_event_t.u.renderer_discoverer_item_added.item
  * \see libvlc_event_t.u.renderer_discoverer_item_removed.item
diff --git a/lib/renderer_discoverer.c b/lib/renderer_discoverer.c
index c2adf26480..a9aaee35c5 100644
--- a/lib/renderer_discoverer.c
+++ b/lib/renderer_discoverer.c
@@ -90,6 +90,19 @@ static void renderer_discovery_item_removed( 
vlc_renderer_discovery_t *rd,
 vlc_renderer_item_release( p_item );
 }
 
+libvlc_renderer_item_t *
+libvlc_renderer_item_hold(libvlc_renderer_item_t *p_item)
+{
+vlc_renderer_item_hold( (vlc_renderer_item_t *) p_item );
+return p_item;
+}
+
+void
+libvlc_renderer_item_release(libvlc_renderer_item_t *p_item)
+{
+vlc_renderer_item_release( (vlc_renderer_item_t *) p_item );
+}
+
 const char *
 libvlc_renderer_item_name( const libvlc_renderer_item_t *p_item )
 {

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


[vlc-commits] lib: renderer_discoverer: fix bad cast

2017-07-26 Thread Thomas Guillem
vlc | branch: master | Thomas Guillem  | Wed Jul 26 16:18:27 
2017 +0200| [9114d112f0a43aed2aa172d660434c71dd167e2e] | committer: Thomas 
Guillem

lib: renderer_discoverer: fix bad cast

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

 lib/renderer_discoverer.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/renderer_discoverer.c b/lib/renderer_discoverer.c
index ee5c80752b..c2adf26480 100644
--- a/lib/renderer_discoverer.c
+++ b/lib/renderer_discoverer.c
@@ -93,25 +93,25 @@ static void renderer_discovery_item_removed( 
vlc_renderer_discovery_t *rd,
 const char *
 libvlc_renderer_item_name( const libvlc_renderer_item_t *p_item )
 {
-return vlc_renderer_item_name( (vlc_renderer_item_t *) p_item );
+return vlc_renderer_item_name( (const vlc_renderer_item_t *) p_item );
 }
 
 const char *
 libvlc_renderer_item_type( const libvlc_renderer_item_t *p_item )
 {
-return vlc_renderer_item_type( (vlc_renderer_item_t *) p_item );
+return vlc_renderer_item_type( (const vlc_renderer_item_t *) p_item );
 }
 
 const char *
 libvlc_renderer_item_icon_uri( const libvlc_renderer_item_t *p_item )
 {
-return vlc_renderer_item_icon_uri( (vlc_renderer_item_t *) p_item );
+return vlc_renderer_item_icon_uri( (const vlc_renderer_item_t *) p_item );
 }
 
 int
 libvlc_renderer_item_flags( const libvlc_renderer_item_t *p_item )
 {
-return vlc_renderer_item_flags( (vlc_renderer_item_t *) p_item );
+return vlc_renderer_item_flags( (const vlc_renderer_item_t *) p_item );
 }
 
 libvlc_renderer_discoverer_t *

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


[vlc-commits] macosx: remove noise filter from GUI

2017-07-26 Thread Victorien Le Couviour--Tuffet
vlc | branch: master | Victorien Le Couviour--Tuffet 
 | Wed Jul 26 14:33:03 2017 +0200| 
[a67ee64077f0dd4df9913a3cc37314868ec99052] | committer: Jean-Baptiste Kempf

macosx: remove noise filter from GUI

This filter has been removed between 1.1.13 and 2.0.0.
Closes #18483.

Signed-off-by: Jean-Baptiste Kempf 

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

 modules/gui/macosx/UI/VideoEffects.xib   | 13 -
 modules/gui/macosx/VLCVideoEffectsWindowController.h |  2 --
 modules/gui/macosx/VLCVideoEffectsWindowController.m |  8 
 3 files changed, 23 deletions(-)

diff --git a/modules/gui/macosx/UI/VideoEffects.xib 
b/modules/gui/macosx/UI/VideoEffects.xib
index a9adf7e4bb..4b5607b219 100644
--- a/modules/gui/macosx/UI/VideoEffects.xib
+++ b/modules/gui/macosx/UI/VideoEffects.xib
@@ -73,7 +73,6 @@
 
 
 
-
 
 
 
@@ -1162,16 +1161,6 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
 
 
 
@@ -1502,7 +1491,6 @@
 
 
 
-
 
 
 
@@ -1515,7 +1503,6 @@
 
 
 
-
 
 
 
diff --git a/modules/gui/macosx/VLCVideoEffectsWindowController.h 
b/modules/gui/macosx/VLCVideoEffectsWindowController.h
index 243fc88a26..f09a5ada2a 100644
--- a/modules/gui/macosx/VLCVideoEffectsWindowController.h
+++ b/modules/gui/macosx/VLCVideoEffectsWindowController.h
@@ -108,7 +108,6 @@
 @property (readwrite, weak) IBOutlet NSTextField *sepiaLabel;
 @property (readwrite, weak) IBOutlet NSTextField *sepiaTextField;
 @property (readwrite, weak) IBOutlet NSStepper *sepiaStepper;
-@property (readwrite, weak) IBOutlet NSButton *noiseCheckbox;
 @property (readwrite, weak) IBOutlet NSButton *gradientCheckbox;
 @property (readwrite, weak) IBOutlet NSTextField *gradientModeLabel;
 @property (readwrite, weak) IBOutlet NSPopUpButton *gradientModePopup;
@@ -205,7 +204,6 @@
 - (IBAction)thresholdModifierChanged:(id)sender;
 - (IBAction)enableSepia:(id)sender;
 - (IBAction)sepiaModifierChanged:(id)sender;
-- (IBAction)enableNoise:(id)sender;
 - (IBAction)enableGradient:(id)sender;
 - (IBAction)gradientModifierChanged:(id)sender;
 - (IBAction)enableExtract:(id)sender;
diff --git a/modules/gui/macosx/VLCVideoEffectsWindowController.m 
b/modules/gui/macosx/VLCVideoEffectsWindowController.m
index 539e2143f5..d9d8b1a04f 100644
--- a/modules/gui/macosx/VLCVideoEffectsWindowController.m
+++ b/modules/gui/macosx/VLCVideoEffectsWindowController.m
@@ -241,7 +241,6 @@
 [_thresholdSimilarityLabel setStringValue:_NS("Similarity")];
 [_sepiaCheckbox setTitle:_NS("Sepia")];
 [_sepiaLabel setStringValue:_NS("Intensity")];
-[_noiseCheckbox setTitle:_NS("Noise")];
 [_gradientCheckbox setTitle:_NS("Gradient")];
 [_gradientModeLabel setStringValue:_NS("Mode")];
 [_gradientModePopup removeAllItems];
@@ -459,7 +458,6 @@
 [_puzzleCheckbox setState: (NSInteger)strstr(psz_vfilters, "puzzle")];
 [_thresholdCheckbox setState: (NSInteger)strstr(psz_vfilters, 
"colorthres")];
 [_sepiaCheckbox setState: (NSInteger)strstr(psz_vfilters, "sepia")];
-[_noiseCheckbox setState: (NSInteger)strstr(psz_vfilters, "noise")];
 [_gradientCheckbox setState: (NSInteger)strstr(psz_vfilters, 
"gradient")];
 [_extractCheckbox setState: (NSInteger)strstr(psz_vfilters, 
"extract")];
 [_invertCheckbox setState: (NSInteger)strstr(psz_vfilters, "invert")];
@@ -481,7 +479,6 @@
 [_puzzleCheckbox setState: NSOffState];
 [_thresholdCheckbox setState: NSOffState];
 [_sepiaCheckbox setState: NSOffState];
-[_noiseCheckbox setState: