[vlc-commits] aom: remove deadline parameter

2018-01-30 Thread Tristan Matthews
vlc | branch: master | Tristan Matthews  | Wed Jan 31 
01:30:54 2018 -0500| [6d2075c9280b32a6bba33e74204de71932197d93] | committer: 
Tristan Matthews

aom: remove deadline parameter

This was dropped in aom commit 47cc25591c36fafcc36e11109e5c36531353cdd9.

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

 modules/codec/aom.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/modules/codec/aom.c b/modules/codec/aom.c
index e3eec68362..25a6b02dce 100644
--- a/modules/codec/aom.c
+++ b/modules/codec/aom.c
@@ -174,7 +174,7 @@ static int Decode(decoder_t *dec, block_t *block)
 *pkt_pts = block->i_pts;
 
 aom_codec_err_t err;
-err = aom_codec_decode(ctx, block->p_buffer, block->i_buffer, pkt_pts, 0);
+err = aom_codec_decode(ctx, block->p_buffer, block->i_buffer, pkt_pts);
 
 block_Release(block);
 
@@ -447,8 +447,7 @@ static block_t *Encode(encoder_t *p_enc, picture_t *p_pict)
 }
 }
 
-aom_codec_err_t res = aom_codec_encode(ctx, , p_pict->date, 1, 0,
-   AOM_DL_GOOD_QUALITY);
+aom_codec_err_t res = aom_codec_encode(ctx, , p_pict->date, 1, 0);
 if (res != AOM_CODEC_OK) {
 AOM_ERR(p_enc, ctx, "Failed to encode frame");
 aom_img_free();

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


[vlc-commits] modules: remove special case for module names starting with $

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:20:51 2018 +0200| [dfd480edafee4c4ce842baf5eb253aa897c56eb2] | committer: 
Rémi Denis-Courmont

modules: remove special case for module names starting with $

Resolving the variable internally was a nice hack when using a string
literal. But it becomes a source of problems when a user-contrlled
variable is used already, as $ could be injected unexpectedly.

Also incidentally fix a leak when no module match a capability.

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

 src/modules/modules.c | 10 --
 1 file changed, 10 deletions(-)

diff --git a/src/modules/modules.c b/src/modules/modules.c
index fcbf3f9984..65b71376b4 100644
--- a/src/modules/modules.c
+++ b/src/modules/modules.c
@@ -217,18 +217,9 @@ module_t *vlc_module_load(vlc_object_t *obj, const char 
*capability,
   const char *name, bool strict,
   vlc_activate_t probe, ...)
 {
-char *var = NULL;
-
 if (name == NULL || name[0] == '\0')
 name = "any";
 
-/* Deal with variables */
-if (name[0] == '$')
-{
-var = var_InheritString (obj, name + 1);
-name = (var != NULL) ? var : "any";
-}
-
 /* Find matching modules */
 module_t **mods;
 ssize_t total = module_list_cap (, capability);
@@ -305,7 +296,6 @@ done:
 va_end (args);
 obj->obj.force = b_force_backup;
 module_list_free (mods);
-free (var);
 
 if (module != NULL)
 {

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


[vlc-commits] keystore: get keystore value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [3233f56910e11542eabb059355dc5a09a8876571] | committer: 
Rémi Denis-Courmont

keystore: get keystore value explicitly

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

 src/misc/keystore.c | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/misc/keystore.c b/src/misc/keystore.c
index 116849e042..efedacf1f5 100644
--- a/src/misc/keystore.c
+++ b/src/misc/keystore.c
@@ -58,7 +58,12 @@ vlc_keystore *
 vlc_keystore_create(vlc_object_t *p_parent)
 {
 assert(p_parent);
-return keystore_create(p_parent, "$keystore");
+
+char *modlist = var_InheritString(p_parent, "keystore");
+vlc_keystore *p_keystore = keystore_create(p_parent, modlist);
+
+free(modlist);
+return p_keystore;
 }
 
 void

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


[vlc-commits] vout: get window value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [a6e826ec44bbb4238f8b6004b549f4d211a66f5a] | committer: 
Rémi Denis-Courmont

vout: get window value explicitly

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

 src/video_output/opengl.c | 4 +++-
 src/video_output/window.c | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c
index 99c830345c..c29464116e 100644
--- a/src/video_output/opengl.c
+++ b/src/video_output/opengl.c
@@ -135,8 +135,10 @@ vlc_gl_t *vlc_gl_surface_Create(vlc_object_t *obj,
 .sys = sys,
 .resized = vlc_gl_surface_ResizeNotify,
 };
+char *modlist = var_InheritString(obj, "window");
 
-vout_window_t *surface = vout_window_New(obj, "$window", cfg, );
+vout_window_t *surface = vout_window_New(obj, modlist, cfg, );
+free(modlist);
 if (surface == NULL)
 goto error;
 if (wp != NULL)
diff --git a/src/video_output/window.c b/src/video_output/window.c
index 36aaa9d046..56d875e42c 100644
--- a/src/video_output/window.c
+++ b/src/video_output/window.c
@@ -182,6 +182,7 @@ vout_window_t *vout_display_window_New(vout_thread_t *vout,
 state->height = cfg->height;
 vlc_mutex_init(>lock);
 
+char *modlist = var_InheritString(vout, "window");
 vout_window_owner_t owner = {
 .sys = state,
 .resized = vout_display_window_ResizeNotify,
@@ -190,7 +191,8 @@ vout_window_t *vout_display_window_New(vout_thread_t *vout,
 };
 vout_window_t *window;
 
-window = vout_window_New((vlc_object_t *)vout, "$window", cfg, );
+window = vout_window_New((vlc_object_t *)vout, modlist, cfg, );
+free(modlist);
 if (window == NULL) {
 vlc_mutex_destroy(>lock);
 free(state);

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


[vlc-commits] aout: get audio-resampler value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [eda670d9ec1f94fd832fc27daa2e2e84c170b536] | committer: 
Rémi Denis-Courmont

aout: get audio-resampler value explicitly

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

 src/audio_output/filters.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c
index 585379e7c3..af06bec043 100644
--- a/src/audio_output/filters.c
+++ b/src/audio_output/filters.c
@@ -101,8 +101,11 @@ static filter_t *FindResampler (vlc_object_t *obj,
 const audio_sample_format_t *infmt,
 const audio_sample_format_t *outfmt)
 {
-return CreateFilter (obj, "audio resampler", "$audio-resampler", NULL,
- infmt, outfmt, NULL, true);
+char *modlist = var_InheritString(obj, "audio-resampler");
+filter_t *filter = CreateFilter (obj, "audio resampler", modlist, NULL,
+ infmt, outfmt, NULL, true);
+free(modlist);
+return filter;
 }
 
 /**

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


[vlc-commits] avcodec: get avcodec-hw value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [2f952cf739b636fa7fb01c74baa86fb2c9207d79] | committer: 
Rémi Denis-Courmont

avcodec: get avcodec-hw value explicitly

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

 modules/codec/avcodec/va.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c
index 62de0830f6..b8b9e267a1 100644
--- a/modules/codec/avcodec/va.c
+++ b/modules/codec/avcodec/va.c
@@ -121,8 +121,11 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext 
*avctx,
 if (unlikely(va == NULL))
 return NULL;
 
-va->module = vlc_module_load(va, "hw decoder", "$avcodec-hw", true,
+char *modlist = var_InheritString(obj, "avcodec-hw");
+
+va->module = vlc_module_load(va, "hw decoder", modlist, true,
  vlc_va_Start, va, avctx, pix_fmt, fmt, p_sys);
+free(modlist);
 if (va->module == NULL)
 {
 vlc_object_release(va);

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


[vlc-commits] modules: add/use module_need_var()

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:15:52 2018 +0200| [008d355b97afdd4cee02bea837b67c3a0da43daa] | committer: 
Rémi Denis-Courmont

modules: add/use module_need_var()

...to get the module name or module name list from an object variable.

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

 include/vlc_modules.h | 13 +
 modules/stream_out/mosaic_bridge.c|  2 +-
 modules/stream_out/transcode/audio.c  |  2 +-
 modules/stream_out/transcode/spu.c|  2 +-
 modules/stream_out/transcode/video.c  |  2 +-
 modules/video_output/opengl/vout_helper.c |  2 +-
 src/audio_output/output.c |  2 +-
 src/input/decoder.c   |  6 +++---
 src/input/vlm.c   |  2 +-
 src/misc/image.c  |  2 +-
 src/video_output/vout_subpictures.c   |  2 +-
 11 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/include/vlc_modules.h b/include/vlc_modules.h
index c2d3c26d20..c3cbf1c87d 100644
--- a/include/vlc_modules.h
+++ b/include/vlc_modules.h
@@ -46,6 +46,19 @@ VLC_API void vlc_module_unload( vlc_object_t *obj, module_t 
*,
 
 VLC_API module_t * module_need( vlc_object_t *, const char *, const char *, 
bool ) VLC_USED;
 #define module_need(a,b,c,d) module_need(VLC_OBJECT(a),b,c,d)
+
+VLC_USED
+static inline module_t *module_need_var(vlc_object_t *obj, const char *cap,
+const char *varname)
+{
+char *list = var_InheritString(obj, varname);
+module_t *m = module_need(obj, cap, list, false);
+
+free(list);
+return m;
+}
+#define module_need_var(a,b,c) module_need_var(VLC_OBJECT(a),b,c)
+
 VLC_API void module_unneed( vlc_object_t *, module_t * );
 #define module_unneed(a,b) module_unneed(VLC_OBJECT(a),b)
 VLC_API bool module_exists(const char *) VLC_USED;
diff --git a/modules/stream_out/mosaic_bridge.c 
b/modules/stream_out/mosaic_bridge.c
index e0f9ff4c8f..e2b98ead91 100644
--- a/modules/stream_out/mosaic_bridge.c
+++ b/modules/stream_out/mosaic_bridge.c
@@ -307,7 +307,7 @@ static sout_stream_id_sys_t * Add( sout_stream_t *p_stream, 
const es_format_t *p
 //p_sys->p_decoder->p_cfg = p_sys->p_video_cfg;
 
 p_sys->p_decoder->p_module =
-module_need( p_sys->p_decoder, "video decoder", "$codec", false );
+module_need_var( p_sys->p_decoder, "video decoder", "codec" );
 
 if( !p_sys->p_decoder->p_module )
 {
diff --git a/modules/stream_out/transcode/audio.c 
b/modules/stream_out/transcode/audio.c
index d2c9f5f40a..d3f5bf7cf3 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -194,7 +194,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
 id->p_decoder->pf_aout_format_update = audio_update_format;
 /* id->p_decoder->p_cfg = p_sys->p_audio_cfg; */
 id->p_decoder->p_module =
-module_need( id->p_decoder, "audio decoder", "$codec", false );
+module_need_var( id->p_decoder, "audio decoder", "codec" );
 if( !id->p_decoder->p_module )
 {
 msg_Err( p_stream, "cannot find audio decoder" );
diff --git a/modules/stream_out/transcode/spu.c 
b/modules/stream_out/transcode/spu.c
index 51f86b4fa0..7ee05e8e3e 100644
--- a/modules/stream_out/transcode/spu.c
+++ b/modules/stream_out/transcode/spu.c
@@ -83,7 +83,7 @@ static int transcode_spu_new( sout_stream_t *p_stream, 
sout_stream_id_sys_t *id
 /* id->p_decoder->p_cfg = p_sys->p_spu_cfg; */
 
 id->p_decoder->p_module =
-module_need( id->p_decoder, "spu decoder", "$codec", false );
+module_need_var( id->p_decoder, "spu decoder", "codec" );
 
 if( !id->p_decoder->p_module )
 {
diff --git a/modules/stream_out/transcode/video.c 
b/modules/stream_out/transcode/video.c
index 323893f217..1a641bb929 100644
--- a/modules/stream_out/transcode/video.c
+++ b/modules/stream_out/transcode/video.c
@@ -190,7 +190,7 @@ static int transcode_video_new( sout_stream_t *p_stream, 
sout_stream_id_sys_t *i
 id->p_decoder->p_owner = (decoder_owner_sys_t*) p_stream;
 
 id->p_decoder->p_module =
-module_need( id->p_decoder, "video decoder", "$codec", false );
+module_need_var( id->p_decoder, "video decoder", "codec" );
 
 if( !id->p_decoder->p_module )
 {
diff --git a/modules/video_output/opengl/vout_helper.c 
b/modules/video_output/opengl/vout_helper.c
index fe98279f5d..04294af30e 100644
--- a/modules/video_output/opengl/vout_helper.c
+++ b/modules/video_output/opengl/vout_helper.c
@@ -654,7 +654,7 @@ opengl_init_program(vout_display_opengl_t *vgl, struct prgm 
*prgm,
 if (desc->plane_count == 0)
 {
 /* Opaque chroma: load a module to handle it */
-tc->p_module = module_need(tc, "glconv", "$glconv", true);
+tc->p_module = module_need_var(tc, "glconv", "glconv");
 }
 
 if (tc->p_module != 

[vlc-commits] mmdevice: get mmdevice-backend value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:29 2018 +0200| [4c365832b269ac4ebd89528c10470a93867a0c1b] | committer: 
Rémi Denis-Courmont

mmdevice: get mmdevice-backend value explicitly

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

 modules/audio_output/mmdevice.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index b07494cd5b..40c03ee18f 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -1113,11 +1113,13 @@ static int Start(audio_output_t *aout, 
audio_sample_format_t *restrict fmt)
 EnterCriticalSection(>lock);
 for (;;)
 {
+char *modlist = var_InheritString(aout, "mmdevice-backend");
 HRESULT hr;
 s->owner.device = sys->dev;
 
-sys->module = vlc_module_load(s, "aout stream", "$mmdevice-backend",
+sys->module = vlc_module_load(s, "aout stream", modlist,
   false, aout_stream_Start, s, fmt, );
+free(modlist);
 
 int ret = -1;
 if (hr == AUDCLNT_E_ALREADY_INITIALIZED)

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


[vlc-commits] opengl: get gl value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [7b38b41b1681b1691eb037e1f33da7773339aea1] | committer: 
Rémi Denis-Courmont

opengl: get gl value explicitly

(also fix unlikely ToCToU)

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

 modules/video_output/android/display.c | 4 +++-
 modules/video_output/opengl/display.c  | 9 -
 modules/video_output/win32/glwin32.c   | 4 +++-
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/modules/video_output/android/display.c 
b/modules/video_output/android/display.c
index 1a68fad710..f7c71b4439 100644
--- a/modules/video_output/android/display.c
+++ b/modules/video_output/android/display.c
@@ -799,7 +799,9 @@ static void ClearSurface(vout_display_t *vd)
 if (sys->p_window->b_opaque)
 {
 /* Clear the surface to black with OpenGL ES 2 */
-vlc_gl_t *gl = vlc_gl_Create(sys->embed, VLC_OPENGL_ES2, "$gles2");
+char *modlist = var_InheritString(sys->embed, "gles2");
+vlc_gl_t *gl = vlc_gl_Create(sys->embed, VLC_OPENGL_ES2, modlist);
+free(modlist);
 if (gl == NULL)
 return;
 
diff --git a/modules/video_output/opengl/display.c 
b/modules/video_output/opengl/display.c
index a681760df2..b3bafa15c6 100644
--- a/modules/video_output/opengl/display.c
+++ b/modules/video_output/opengl/display.c
@@ -104,7 +104,7 @@ static int Open (vlc_object_t *obj)
 goto error;
 }
 
-const char *gl_name = "$" MODULE_VARNAME;
+char *gl_name = var_InheritString(surface, MODULE_VARNAME);
 
 /* VDPAU GL interop works only with GLX. Override the "gl" option to force
  * it. */
@@ -118,10 +118,8 @@ static int Open (vlc_object_t *obj)
 case VLC_CODEC_VDPAU_VIDEO_420:
 {
 /* Force the option only if it was not previously set */
-char *str = var_InheritString(surface, MODULE_VARNAME);
-if (str == NULL)
-gl_name = "glx";
-free(str);
+if (gl_name == NULL)
+gl_name = strdup("glx");
 break;
 }
 default:
@@ -131,6 +129,7 @@ static int Open (vlc_object_t *obj)
 #endif
 
 sys->gl = vlc_gl_Create (surface, API, gl_name);
+free(gl_name);
 if (sys->gl == NULL)
 goto error;
 
diff --git a/modules/video_output/win32/glwin32.c 
b/modules/video_output/win32/glwin32.c
index 521270bad1..2d3debff6b 100644
--- a/modules/video_output/win32/glwin32.c
+++ b/modules/video_output/win32/glwin32.c
@@ -128,7 +128,9 @@ static int Open(vlc_object_t *object)
 if (!surface)
 goto error;
 
-sys->gl = vlc_gl_Create (surface, VLC_OPENGL, "$gl");
+char *modlist = var_InheritString(surface, "gl");
+sys->gl = vlc_gl_Create (surface, VLC_OPENGL, modlist);
+free(modlist);
 if (!sys->gl)
 {
 vlc_object_release(surface);

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


[vlc-commits] vout: get vout value explicitly

2018-01-30 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont  | Tue Jan 30 
21:19:45 2018 +0200| [3d2890f9f2f285272b6fb60a7f4e5ad5726a5a21] | committer: 
Rémi Denis-Courmont

vout: get vout value explicitly

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

 src/video_output/vout_wrapper.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/video_output/vout_wrapper.c b/src/video_output/vout_wrapper.c
index b02a59891a..a1f2a8db9b 100644
--- a/src/video_output/vout_wrapper.c
+++ b/src/video_output/vout_wrapper.c
@@ -59,14 +59,16 @@ int vout_OpenWrapper(vout_thread_t *vout,
 /* */
 const mtime_t double_click_timeout = 30;
 const mtime_t hide_timeout = var_CreateGetInteger(vout, 
"mouse-hide-timeout") * 1000;
+char *modlist = var_InheritString(vout, "vout");
 
-if (splitter_name) {
-sys->display.vd = vout_NewSplitter(vout, >p->original, state, 
"$vout", splitter_name,
+if (splitter_name)
+sys->display.vd = vout_NewSplitter(vout, >p->original, state, 
modlist, splitter_name,
double_click_timeout, hide_timeout);
-} else {
-sys->display.vd = vout_NewDisplay(vout, >p->original, state, 
"$vout",
+else
+sys->display.vd = vout_NewDisplay(vout, >p->original, state, 
modlist,
   double_click_timeout, hide_timeout);
-}
+free(modlist);
+
 if (!sys->display.vd) {
 free(sys->display.title);
 return VLC_EGENERIC;

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


[vlc-commits] transcode: audio: fix global-buffer-overflow

2018-01-30 Thread Thomas Guillem
vlc | branch: master | Thomas Guillem  | Tue Jan 30 18:44:30 
2018 +0100| [e426b400b9e03b136e5b00caba024a6a849a3975] | committer: Thomas 
Guillem

transcode: audio: fix global-buffer-overflow

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

 modules/stream_out/transcode/audio.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/modules/stream_out/transcode/audio.c 
b/modules/stream_out/transcode/audio.c
index f6d436bff3..d2c9f5f40a 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -109,6 +109,8 @@ static int transcode_audio_initialize_encoder( 
sout_stream_id_sys_t *id, sout_st
 id->p_encoder->fmt_out.audio.i_channels = p_sys->i_channels > 0 ?
 p_sys->i_channels : id->audio_dec_out.i_channels;
 assert(id->p_encoder->fmt_out.audio.i_channels > 0);
+if( id->p_encoder->fmt_out.audio.i_channels >= 
ARRAY_SIZE(pi_channels_maps) )
+id->p_encoder->fmt_out.audio.i_channels = ARRAY_SIZE(pi_channels_maps) 
- 1;
 
 id->p_encoder->fmt_in.audio.i_physical_channels =
 id->p_encoder->fmt_out.audio.i_physical_channels =
@@ -421,6 +423,9 @@ bool transcode_audio_add( sout_stream_t *p_stream, const 
es_format_t *p_fmt,
 id->p_encoder->fmt_out.audio.i_channels = p_sys->i_channels > 0 ?
 p_sys->i_channels : p_fmt->audio.i_channels;
 
+if( id->p_encoder->fmt_out.audio.i_channels >= 
ARRAY_SIZE(pi_channels_maps) )
+id->p_encoder->fmt_out.audio.i_channels = ARRAY_SIZE(pi_channels_maps) 
- 1;
+
 id->p_encoder->fmt_in.audio.i_physical_channels =
 id->p_encoder->fmt_out.audio.i_physical_channels =
 pi_channels_maps[id->p_encoder->fmt_out.audio.i_channels];

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


[vlc-commits] Qt: sout: fix useless option

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Tue Jan 30 
16:24:15 2018 +0100| [263e1767479efc49f767bbf8aef9604ce48bb86b] | committer: 
Francois Cartegnie

Qt: sout: fix useless option

never reflected changes by f2f0361f350efcb6f6921a0b497114e6890bdd7a

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

 modules/gui/qt/dialogs/sout.cpp | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/gui/qt/dialogs/sout.cpp b/modules/gui/qt/dialogs/sout.cpp
index 8958f3270a..1a6213bf35 100644
--- a/modules/gui/qt/dialogs/sout.cpp
+++ b/modules/gui/qt/dialogs/sout.cpp
@@ -217,7 +217,10 @@ void SoutDialog::updateMRL()
 
 mrl = smrl.getMrl();
 
-if( ui.soutAll->isChecked() ) mrl.append( " :sout-all" );
+if( ui.soutAll->isChecked() )
+mrl.append( " :sout-all" );
+else
+mrl.append( " :no-sout-all" );
 
 mrl.append( " :sout-keep" );
 

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


[vlc-commits] jacosub: Fix format specifier

2018-01-30 Thread Hugo Beauzée-Luyssen
vlc/vlc-3.0 | branch: master | Hugo Beauzée-Luyssen  | Tue Jan 
30 13:12:14 2018 +0100| [c7e7a8375b12a063131fa0bdb110a5fdf5decda9] | committer: 
Hugo Beauzée-Luyssen

jacosub: Fix format specifier

%[] will always attempt to store a final 0, which doesn't fit here.

(cherry picked from commit 4bfa7204ae4fa3546813f6c9ed3a7d9d2cf6f58a)
Signed-off-by: Hugo Beauzée-Luyssen 

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

 modules/demux/subtitle.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c
index 486f3e61f3..1fb6530c8c 100644
--- a/modules/demux/subtitle.c
+++ b/modules/demux/subtitle.c
@@ -2419,7 +2419,8 @@ static int ParseSCC( vlc_object_t *p_obj, 
subs_properties_t *p_props,
 
 unsigned h, m, s, f;
 char c;
-if( sscanf( psz_line, "%u:%u:%u%[:;]%u ", , , , ,  ) != 5 )
+if( sscanf( psz_line, "%u:%u:%u%c%u ", , , , ,  ) != 5 ||
+( c != ':' && c != ';' ) )
 continue;
 
 /* convert everything to seconds */

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


[vlc-commits] demux: avi: fix potential invalid deref on seek

2018-01-30 Thread Francois Cartegnie
vlc/vlc-3.0 | branch: master | Francois Cartegnie  | Tue Jan 
30 13:31:37 2018 +0100| [c89b833548ab761e9129447d57ea8add1ed5c148] | committer: 
Francois Cartegnie

demux: avi: fix potential invalid deref on seek

(cherry picked from commit 85171d7fd2c704c733b47e686ba1e2285eb2eea7)

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

 modules/demux/avi/avi.c | 32 +---
 1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index 4cc3882dcc..2aff14b4be 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -1856,37 +1856,31 @@ static mtime_t AVI_GetDPTS( avi_track_t *tk, int64_t 
i_count )
 
 static mtime_t AVI_GetPTS( avi_track_t *tk )
 {
-if( tk->i_samplesize )
+/* Lookup samples index */
+if( tk->i_samplesize && tk->idx.i_size )
 {
 int64_t i_count = 0;
+unsigned int idx = tk->i_idxposc;
 
 /* we need a valid entry we will emulate one */
-if( tk->i_idxposc == tk->idx.i_size )
+if( idx >= tk->idx.i_size )
 {
-if( tk->i_idxposc )
-{
-/* use the last entry */
-i_count = tk->idx.p_entry[tk->idx.i_size - 1].i_lengthtotal
-+ tk->idx.p_entry[tk->idx.i_size - 1].i_length;
-}
+/* use the last entry */
+idx = tk->idx.i_size - 1;
+i_count = tk->idx.p_entry[idx].i_lengthtotal
++ tk->idx.p_entry[idx].i_length;
 }
 else
 {
-i_count = tk->idx.p_entry[tk->i_idxposc].i_lengthtotal;
+i_count = tk->idx.p_entry[idx].i_lengthtotal;
 }
 return AVI_GetDPTS( tk, i_count + tk->i_idxposb );
 }
+
+if( tk->fmt.i_cat == AUDIO_ES )
+return AVI_GetDPTS( tk, tk->i_blockno );
 else
-{
-if( tk->fmt.i_cat == AUDIO_ES )
-{
-return AVI_GetDPTS( tk, tk->i_blockno );
-}
-else
-{
-return AVI_GetDPTS( tk, tk->i_idxposc );
-}
-}
+return AVI_GetDPTS( tk, tk->i_idxposc );
 }
 
 static int AVI_StreamChunkFind( demux_t *p_demux, unsigned int i_stream )

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


[vlc-commits] packetizer: hevc: check before replacing xps

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Tue Jan 30 
14:14:00 2018 +0100| [b6ebaba1a1f0c80392170124e94f63eccb7ddfd8] | committer: 
Francois Cartegnie

packetizer: hevc: check before replacing xps

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

 modules/packetizer/hevc.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c
index d5c6b11f14..ec8873af7c 100644
--- a/modules/packetizer/hevc.c
+++ b/modules/packetizer/hevc.c
@@ -375,6 +375,19 @@ static bool InsertXPS(decoder_t *p_dec, uint8_t 
i_nal_type, uint8_t i_id,
 return false;
 }
 
+/* Check if we really need to re-decode/replace */
+if(*pp_nal)
+{
+const uint8_t *p_stored = (*pp_nal)->p_buffer;
+size_t i_stored = (*pp_nal)->i_buffer;
+hxxx_strip_AnnexB_startcode(_stored, _stored);
+const uint8_t *p_new = p_nalb->p_buffer;
+size_t i_new = p_nalb->i_buffer;
+hxxx_strip_AnnexB_startcode(_new, _new);
+if(i_stored == i_new && !memcmp(p_stored, p_new, i_new))
+return true;
+}
+
 /* Free associated decoded version */
 if(*pp_decoded)
 {

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


[vlc-commits] demux: avi: fix potential invalid deref on seek

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Tue Jan 30 
13:31:37 2018 +0100| [85171d7fd2c704c733b47e686ba1e2285eb2eea7] | committer: 
Francois Cartegnie

demux: avi: fix potential invalid deref on seek

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

 modules/demux/avi/avi.c | 32 +---
 1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index a2beba6e17..ed8aa0fc99 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -1859,37 +1859,31 @@ static mtime_t AVI_GetDPTS( avi_track_t *tk, int64_t 
i_count )
 
 static mtime_t AVI_GetPTS( avi_track_t *tk )
 {
-if( tk->i_samplesize )
+/* Lookup samples index */
+if( tk->i_samplesize && tk->idx.i_size )
 {
 int64_t i_count = 0;
+unsigned int idx = tk->i_idxposc;
 
 /* we need a valid entry we will emulate one */
-if( tk->i_idxposc == tk->idx.i_size )
+if( idx >= tk->idx.i_size )
 {
-if( tk->i_idxposc )
-{
-/* use the last entry */
-i_count = tk->idx.p_entry[tk->idx.i_size - 1].i_lengthtotal
-+ tk->idx.p_entry[tk->idx.i_size - 1].i_length;
-}
+/* use the last entry */
+idx = tk->idx.i_size - 1;
+i_count = tk->idx.p_entry[idx].i_lengthtotal
++ tk->idx.p_entry[idx].i_length;
 }
 else
 {
-i_count = tk->idx.p_entry[tk->i_idxposc].i_lengthtotal;
+i_count = tk->idx.p_entry[idx].i_lengthtotal;
 }
 return AVI_GetDPTS( tk, i_count + tk->i_idxposb );
 }
+
+if( tk->fmt.i_cat == AUDIO_ES )
+return AVI_GetDPTS( tk, tk->i_blockno );
 else
-{
-if( tk->fmt.i_cat == AUDIO_ES )
-{
-return AVI_GetDPTS( tk, tk->i_blockno );
-}
-else
-{
-return AVI_GetDPTS( tk, tk->i_idxposc );
-}
-}
+return AVI_GetDPTS( tk, tk->i_idxposc );
 }
 
 static int AVI_StreamChunkFind( demux_t *p_demux, unsigned int i_stream )

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


[vlc-commits] packetizer: hevc: fix use after free regression

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Tue Jan 30 
14:06:16 2018 +0100| [4e15e79f66418a0b8a433d8a1f23501176759e83] | committer: 
Francois Cartegnie

packetizer: hevc: fix use after free regression

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

 modules/packetizer/hevc.c | 12 
 1 file changed, 12 insertions(+)

diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c
index 7f8c930317..d5c6b11f14 100644
--- a/modules/packetizer/hevc.c
+++ b/modules/packetizer/hevc.c
@@ -345,6 +345,7 @@ static bool InsertXPS(decoder_t *p_dec, uint8_t i_nal_type, 
uint8_t i_id,
 {
 decoder_sys_t *p_sys = p_dec->p_sys;
 void **pp_decoded;
+void **pp_active;
 block_t **pp_nal;
 
 switch(i_nal_type)
@@ -354,18 +355,21 @@ static bool InsertXPS(decoder_t *p_dec, uint8_t 
i_nal_type, uint8_t i_id,
 return false;
 pp_decoded = _sys->rg_vps[i_id].p_decoded;
 pp_nal = _sys->rg_vps[i_id].p_nal;
+pp_active = (void**)_sys->p_active_vps;
 break;
 case HEVC_NAL_SPS:
 if(i_id > HEVC_SPS_ID_MAX)
 return false;
 pp_decoded = _sys->rg_sps[i_id].p_decoded;
 pp_nal = _sys->rg_sps[i_id].p_nal;
+pp_active = (void**)_sys->p_active_sps;
 break;
 case HEVC_NAL_PPS:
 if(i_id > HEVC_PPS_ID_MAX)
 return false;
 pp_decoded = _sys->rg_pps[i_id].p_decoded;
 pp_nal = _sys->rg_pps[i_id].p_nal;
+pp_active = (void**)_sys->p_active_pps;
 break;
 default:
 return false;
@@ -386,8 +390,13 @@ static bool InsertXPS(decoder_t *p_dec, uint8_t 
i_nal_type, uint8_t i_id,
 hevc_rbsp_release_pps(*pp_decoded);
 break;
 }
+if(*pp_active == *pp_decoded)
+*pp_active = NULL;
+else
+pp_active = NULL; /* don't change pointer */
 *pp_decoded = NULL;
 }
+else pp_active = NULL;
 
 /* Free raw stored version */
 if(*pp_nal)
@@ -429,6 +438,9 @@ static bool InsertXPS(decoder_t *p_dec, uint8_t i_nal_type, 
uint8_t i_id,
 break;
 }
 
+if(*pp_decoded && pp_active) /* restore active by id */
+*pp_active = *pp_decoded;
+
 *pp_nal = block_Duplicate((block_t *)p_nalb);
 
 return true;

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


[vlc-commits] jacosub: Fix format specifier

2018-01-30 Thread Hugo Beauzée-Luyssen
vlc | branch: master | Hugo Beauzée-Luyssen  | Tue Jan 30 
13:12:14 2018 +0100| [4bfa7204ae4fa3546813f6c9ed3a7d9d2cf6f58a] | committer: 
Hugo Beauzée-Luyssen

jacosub: Fix format specifier

%[] will always attempt to store a final 0, which doesn't fit here.

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

 modules/demux/subtitle.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c
index f5320e6ca6..3d7f2faf8a 100644
--- a/modules/demux/subtitle.c
+++ b/modules/demux/subtitle.c
@@ -2424,7 +2424,8 @@ static int ParseSCC( vlc_object_t *p_obj, 
subs_properties_t *p_props,
 
 unsigned h, m, s, f;
 char c;
-if( sscanf( psz_line, "%u:%u:%u%[:;]%u ", , , , ,  ) != 5 )
+if( sscanf( psz_line, "%u:%u:%u%c%u ", , , , ,  ) != 5 ||
+( c != ':' && c != ';' ) )
 continue;
 
 /* convert everything to seconds */

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


[vlc-commits] mux: mp4: fix early data output

2018-01-30 Thread Francois Cartegnie
vlc/vlc-3.0 | branch: master | Francois Cartegnie  | Mon Jan 
29 16:08:23 2018 +0100| [4af4ce49ec566fa686ef040e774b6342fedb4fa8] | committer: 
Francois Cartegnie

mux: mp4: fix early data output

was sending data in open(), but record code
does probe muxers, so possibly breaks stream

(cherry picked from commit 54c3a5ec62e48d1b28cd979f3b04d7c06593fc59)

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

 modules/mux/mp4/mp4.c | 92 +--
 1 file changed, 53 insertions(+), 39 deletions(-)

diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c
index 2daeceeba5..4c17a0e963 100644
--- a/modules/mux/mp4/mp4.c
+++ b/modules/mux/mp4/mp4.c
@@ -158,6 +158,9 @@ struct sout_mux_sys_t
 bool b_64_ext;
 bool b_fast_start;
 
+/* global */
+bool b_header_sent;
+
 uint64_t i_mdat_pos;
 uint64_t i_pos;
 mtime_t  i_read_duration;
@@ -166,9 +169,9 @@ struct sout_mux_sys_t
 unsigned int   i_nb_streams;
 mp4_stream_t **pp_streams;
 
+
 /* mp4frag */
 bool   b_fragmented;
-bool   b_header_sent;
 mtime_ti_written_duration;
 uint32_t   i_mfhd_sequence;
 };
@@ -180,34 +183,10 @@ static block_t *ConvertSUBT(block_t *);
 static bool CreateCurrentEdit(mp4_stream_t *, mtime_t, bool);
 static void DebugEdits(sout_mux_t *, const mp4_stream_t *);
 
-/*
- * Open:
- */
-static int Open(vlc_object_t *p_this)
+static int WriteSlowStartHeader(sout_mux_t *p_mux)
 {
-sout_mux_t  *p_mux = (sout_mux_t*)p_this;
-sout_mux_sys_t  *p_sys;
-bo_t*box;
-
-msg_Dbg(p_mux, "Mp4 muxer opened");
-config_ChainParse(p_mux, SOUT_CFG_PREFIX, ppsz_sout_options, p_mux->p_cfg);
-
-p_mux->pf_control   = Control;
-p_mux->pf_addstream = AddStream;
-p_mux->pf_delstream = DelStream;
-p_mux->pf_mux   = Mux;
-p_mux->p_sys= p_sys = malloc(sizeof(sout_mux_sys_t));
-if (!p_sys)
-return VLC_ENOMEM;
-p_sys->i_pos= 0;
-p_sys->i_nb_streams = 0;
-p_sys->pp_streams   = NULL;
-p_sys->i_mdat_pos   = 0;
-p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
-p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
-p_sys->i_read_duration   = 0;
-p_sys->i_start_dts = VLC_TS_INVALID;
-p_sys->b_fragmented = false;
+sout_mux_sys_t *p_sys = p_mux->p_sys;
+bo_t *box;
 
 if (!p_sys->b_mov) {
 /* Now add ftyp header */
@@ -223,28 +202,19 @@ static int Open(vlc_object_t *p_this)
 }
 
 if(!box)
-{
-free(p_sys);
 return VLC_ENOMEM;
-}
 
 p_sys->i_pos += box->b->i_buffer;
 p_sys->i_mdat_pos = p_sys->i_pos;
 box_send(p_mux, box);
 }
 
-/* FIXME FIXME
- * Quicktime actually doesn't like the 64 bits extensions !!! */
-p_sys->b_64_ext = false;
-
 /* Now add mdat header */
 box = box_new("mdat");
 if(!box)
-{
-free(p_sys);
 return VLC_ENOMEM;
-}
-bo_add_64be  (box, 0); // enough to store an extended size
+
+bo_add_64be(box, 0); // enough to store an extended size
 
 if(box->b)
 p_sys->i_pos += box->b->i_buffer;
@@ -255,6 +225,42 @@ static int Open(vlc_object_t *p_this)
 }
 
 /*
+ * Open:
+ */
+static int Open(vlc_object_t *p_this)
+{
+sout_mux_t  *p_mux = (sout_mux_t*)p_this;
+sout_mux_sys_t  *p_sys;
+
+msg_Dbg(p_mux, "Mp4 muxer opened");
+config_ChainParse(p_mux, SOUT_CFG_PREFIX, ppsz_sout_options, p_mux->p_cfg);
+
+p_mux->pf_control   = Control;
+p_mux->pf_addstream = AddStream;
+p_mux->pf_delstream = DelStream;
+p_mux->pf_mux   = Mux;
+p_mux->p_sys= p_sys = malloc(sizeof(sout_mux_sys_t));
+if (!p_sys)
+return VLC_ENOMEM;
+p_sys->i_pos= 0;
+p_sys->i_nb_streams = 0;
+p_sys->pp_streams   = NULL;
+p_sys->i_mdat_pos   = 0;
+p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
+p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
+p_sys->i_read_duration   = 0;
+p_sys->i_start_dts = VLC_TS_INVALID;
+p_sys->b_fragmented = false;
+p_sys->b_header_sent = false;
+
+/* FIXME FIXME
+ * Quicktime actually doesn't like the 64 bits extensions !!! */
+p_sys->b_64_ext = false;
+
+return VLC_SUCCESS;
+}
+
+/*
  * Close:
  */
 static void Close(vlc_object_t *p_this)
@@ 

[vlc-commits] mux: mp4: fix early data output

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Mon Jan 29 
16:08:23 2018 +0100| [54c3a5ec62e48d1b28cd979f3b04d7c06593fc59] | committer: 
Francois Cartegnie

mux: mp4: fix early data output

was sending data in open(), but record code
does probe muxers, so possibly breaks stream

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

 modules/mux/mp4/mp4.c | 93 ++-
 1 file changed, 54 insertions(+), 39 deletions(-)

diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c
index c0e5d66eec..71c71b3163 100644
--- a/modules/mux/mp4/mp4.c
+++ b/modules/mux/mp4/mp4.c
@@ -158,6 +158,9 @@ struct sout_mux_sys_t
 bool b_64_ext;
 bool b_fast_start;
 
+/* global */
+bool b_header_sent;
+
 uint64_t i_mdat_pos;
 uint64_t i_pos;
 mtime_t  i_read_duration;
@@ -166,9 +169,9 @@ struct sout_mux_sys_t
 unsigned int   i_nb_streams;
 mp4_stream_t **pp_streams;
 
+
 /* mp4frag */
 bool   b_fragmented;
-bool   b_header_sent;
 mtime_ti_written_duration;
 uint32_t   i_mfhd_sequence;
 };
@@ -181,34 +184,10 @@ static bool CreateCurrentEdit(mp4_stream_t *, mtime_t, 
bool);
 static void DebugEdits(sout_mux_t *, const mp4_stream_t *);
 static int MuxStream(sout_mux_t *p_mux, sout_input_t *p_input, mp4_stream_t 
*p_stream);
 
-/*
- * Open:
- */
-static int Open(vlc_object_t *p_this)
+static int WriteSlowStartHeader(sout_mux_t *p_mux)
 {
-sout_mux_t  *p_mux = (sout_mux_t*)p_this;
-sout_mux_sys_t  *p_sys;
-bo_t*box;
-
-msg_Dbg(p_mux, "Mp4 muxer opened");
-config_ChainParse(p_mux, SOUT_CFG_PREFIX, ppsz_sout_options, p_mux->p_cfg);
-
-p_mux->pf_control   = Control;
-p_mux->pf_addstream = AddStream;
-p_mux->pf_delstream = DelStream;
-p_mux->pf_mux   = Mux;
-p_mux->p_sys= p_sys = malloc(sizeof(sout_mux_sys_t));
-if (!p_sys)
-return VLC_ENOMEM;
-p_sys->i_pos= 0;
-p_sys->i_nb_streams = 0;
-p_sys->pp_streams   = NULL;
-p_sys->i_mdat_pos   = 0;
-p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
-p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
-p_sys->i_read_duration   = 0;
-p_sys->i_start_dts = VLC_TS_INVALID;
-p_sys->b_fragmented = false;
+sout_mux_sys_t *p_sys = p_mux->p_sys;
+bo_t *box;
 
 if (!p_sys->b_mov) {
 /* Now add ftyp header */
@@ -224,28 +203,19 @@ static int Open(vlc_object_t *p_this)
 }
 
 if(!box)
-{
-free(p_sys);
 return VLC_ENOMEM;
-}
 
 p_sys->i_pos += bo_size(box);
 p_sys->i_mdat_pos = p_sys->i_pos;
 box_send(p_mux, box);
 }
 
-/* FIXME FIXME
- * Quicktime actually doesn't like the 64 bits extensions !!! */
-p_sys->b_64_ext = false;
-
 /* Now add mdat header */
 box = box_new("mdat");
 if(!box)
-{
-free(p_sys);
 return VLC_ENOMEM;
-}
-bo_add_64be  (box, 0); // enough to store an extended size
+
+bo_add_64be(box, 0); // enough to store an extended size
 
 if(box->b)
 p_sys->i_pos += bo_size(box);
@@ -256,6 +226,42 @@ static int Open(vlc_object_t *p_this)
 }
 
 /*
+ * Open:
+ */
+static int Open(vlc_object_t *p_this)
+{
+sout_mux_t  *p_mux = (sout_mux_t*)p_this;
+sout_mux_sys_t  *p_sys;
+
+msg_Dbg(p_mux, "Mp4 muxer opened");
+config_ChainParse(p_mux, SOUT_CFG_PREFIX, ppsz_sout_options, p_mux->p_cfg);
+
+p_mux->pf_control   = Control;
+p_mux->pf_addstream = AddStream;
+p_mux->pf_delstream = DelStream;
+p_mux->pf_mux   = Mux;
+p_mux->p_sys= p_sys = malloc(sizeof(sout_mux_sys_t));
+if (!p_sys)
+return VLC_ENOMEM;
+p_sys->i_pos= 0;
+p_sys->i_nb_streams = 0;
+p_sys->pp_streams   = NULL;
+p_sys->i_mdat_pos   = 0;
+p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
+p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
+p_sys->i_read_duration   = 0;
+p_sys->i_start_dts = VLC_TS_INVALID;
+p_sys->b_fragmented = false;
+p_sys->b_header_sent = false;
+
+/* FIXME FIXME
+ * Quicktime actually doesn't like the 64 bits extensions !!! */
+p_sys->b_64_ext = false;
+
+return VLC_SUCCESS;
+}
+
+/*
  * Close:
  */
 static void Close(vlc_object_t *p_this)
@@ -776,8 +782,17 @@ static int 

[vlc-commits] input: es_out: compute position from buffering only on update

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Fri Jan 26 
17:52:39 2018 +0100| [5e3a04980044b94bfd5aa38390846544a43a4c21] | committer: 
Francois Cartegnie

input: es_out: compute position from buffering only on update

Position value from es_out depends on buffering but they are
not updated at the same rate (when not byte based). This causes
growing buffering being substracted from a stalled position (based on
pcr, or other interval) and the computed position to regress as the
position isn't updated yet by demuxer.

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

 src/input/es_out.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/input/es_out.c b/src/input/es_out.c
index 61e92055f8..d25020f1dd 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -175,6 +175,9 @@ struct es_out_sys_t
 
 /* Used only to limit debugging output */
 int i_prev_stream_level;
+
+/* For positions updates */
+double  f_prev_position;
 };
 
 static es_out_id_t *EsOutAdd( es_out_t *, const es_format_t * );
@@ -332,6 +335,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int 
i_rate )
 p_sys->b_buffering = true;
 p_sys->i_preroll_end = -1;
 p_sys->i_prev_stream_level = -1;
+p_sys->f_prev_position = -1;
 
 return out;
 }
@@ -2759,10 +2763,10 @@ static int EsOutControlLocked( es_out_t *out, int 
i_query, va_list args )
 
 input_SendEventLength( p_sys->p_input, i_length );
 
-if( !p_sys->b_buffering )
+if( !p_sys->b_buffering && f_position != p_sys->f_prev_position )
 {
 mtime_t i_delay;
-
+p_sys->f_prev_position = f_position;
 /* Fix for buffering delay */
 if( !input_priv(p_sys->p_input)->p_sout ||
 !input_priv(p_sys->p_input)->b_out_pace_control )

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


[vlc-commits] mux: mp4: refactor open()

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Mon Jan 29 
16:25:48 2018 +0100| [fa1eb6944670efcd34b52f7da53287351e5ef0cf] | committer: 
Francois Cartegnie

mux: mp4: refactor open()

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

 modules/mux/mp4/mp4.c | 72 +++
 1 file changed, 21 insertions(+), 51 deletions(-)

diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c
index 71c71b3163..352e5b502f 100644
--- a/modules/mux/mp4/mp4.c
+++ b/modules/mux/mp4/mp4.c
@@ -55,7 +55,6 @@
 
 static int  Open   (vlc_object_t *);
 static void Close  (vlc_object_t *);
-static int  OpenFrag   (vlc_object_t *);
 static void CloseFrag  (vlc_object_t *);
 
 #define SOUT_CFG_PREFIX "sout-mp4-"
@@ -80,7 +79,7 @@ add_submodule ()
 set_shortname("MP4 Frag")
 add_shortcut("mp4frag", "mp4stream")
 set_capability("sout mux", 0)
-set_callbacks(OpenFrag, CloseFrag)
+set_callbacks(Open, CloseFrag)
 
 vlc_module_end ()
 
@@ -231,32 +230,37 @@ static int WriteSlowStartHeader(sout_mux_t *p_mux)
 static int Open(vlc_object_t *p_this)
 {
 sout_mux_t  *p_mux = (sout_mux_t*)p_this;
-sout_mux_sys_t  *p_sys;
+sout_mux_sys_t  *p_sys = malloc(sizeof(sout_mux_sys_t));
+if (!p_sys)
+return VLC_ENOMEM;
 
 msg_Dbg(p_mux, "Mp4 muxer opened");
 config_ChainParse(p_mux, SOUT_CFG_PREFIX, ppsz_sout_options, p_mux->p_cfg);
 
-p_mux->pf_control   = Control;
-p_mux->pf_addstream = AddStream;
-p_mux->pf_delstream = DelStream;
-p_mux->pf_mux   = Mux;
-p_mux->p_sys= p_sys = malloc(sizeof(sout_mux_sys_t));
-if (!p_sys)
-return VLC_ENOMEM;
+p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
+p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
+p_sys->b_fragmented = p_mux->psz_mux && (!strcmp(p_mux->psz_mux, 
"mp4frag") ||
+ !strcmp(p_mux->psz_mux, 
"mp4stream"));
+/* FIXME FIXME
+ * Quicktime actually doesn't like the 64 bits extensions !!! */
+p_sys->b_64_ext = false;
+
 p_sys->i_pos= 0;
 p_sys->i_nb_streams = 0;
 p_sys->pp_streams   = NULL;
 p_sys->i_mdat_pos   = 0;
-p_sys->b_mov= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "mov");
-p_sys->b_3gp= p_mux->psz_mux && !strcmp(p_mux->psz_mux, "3gp");
+p_sys->b_header_sent = false;
+
 p_sys->i_read_duration   = 0;
+p_sys->i_written_duration= 0;
 p_sys->i_start_dts = VLC_TS_INVALID;
-p_sys->b_fragmented = false;
-p_sys->b_header_sent = false;
+p_sys->i_mfhd_sequence = 1;
 
-/* FIXME FIXME
- * Quicktime actually doesn't like the 64 bits extensions !!! */
-p_sys->b_64_ext = false;
+p_mux->p_sys= p_sys;
+p_mux->pf_control   = Control;
+p_mux->pf_addstream = AddStream;
+p_mux->pf_delstream = DelStream;
+p_mux->pf_mux   = p_sys->b_fragmented ? MuxFrag : Mux;
 
 return VLC_SUCCESS;
 }
@@ -1229,40 +1233,6 @@ static void FlushHeader(sout_mux_t *p_mux)
 p_sys->b_header_sent = true;
 }
 
-static int OpenFrag(vlc_object_t *p_this)
-{
-sout_mux_t *p_mux = (sout_mux_t*) p_this;
-sout_mux_sys_t *p_sys = malloc(sizeof(sout_mux_sys_t));
-if (!p_sys)
-return VLC_ENOMEM;
-
-p_mux->p_sys = (sout_mux_sys_t *) p_sys;
-p_mux->pf_control   = Control;
-p_mux->pf_addstream = AddStream;
-p_mux->pf_delstream = DelStream;
-p_mux->pf_mux   = MuxFrag;
-
-/* unused */
-p_sys->b_mov= false;
-p_sys->b_3gp= false;
-p_sys->b_64_ext = false;
-/* !unused */
-
-p_sys->i_pos= 0;
-p_sys->i_nb_streams = 0;
-p_sys->pp_streams   = NULL;
-p_sys->i_mdat_pos   = 0;
-p_sys->i_read_duration   = 0;
-p_sys->i_written_duration= 0;
-
-p_sys->b_header_sent = false;
-p_sys->b_fragmented  = true;
-p_sys->i_start_dts = VLC_TS_INVALID;
-p_sys->i_mfhd_sequence = 1;
-
-return VLC_SUCCESS;
-}
-
 static void WriteFragments(sout_mux_t *p_mux, bool b_flush)
 {
 sout_mux_sys_t *p_sys = (sout_mux_sys_t*) p_mux->p_sys;

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


[vlc-commits] codec: tx3g: encode bottom/center alignment

2018-01-30 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie  | Fri Jan 26 
14:01:54 2018 +0100| [60136a0768bc8cdf2f771e3e65204e9b37f39729] | committer: 
Francois Cartegnie

codec: tx3g: encode bottom/center alignment

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

 modules/codec/substx3g.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c
index 0fba8b0948..4508599543 100644
--- a/modules/codec/substx3g.c
+++ b/modules/codec/substx3g.c
@@ -556,6 +556,8 @@ static void FillExtradataTx3g( void **pp_extra, int 
*pi_extra )
 uint8_t *p_extra = calloc( 1, i_extra );
 if( p_extra )
 {
+p_extra[4] = 0x01;/* 1  center, horizontal */
+p_extra[5] = 0xFF;/* -1 bottom, vertical */
 SetDWBE( _extra[6],  0x00FFU ); /* bgcolor */
 p_extra[25] = STYLE_DEFAULT_FONT_SIZE;
 SetDWBE( _extra[26], 0xU ); /* fgcolor */

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


[vlc-commits] demux:mkv: add support for V_PRORES

2018-01-30 Thread Steve Lhomme
vlc | branch: master | Steve Lhomme  | Tue Jan 30 09:02:14 
2018 +0100| [488e6712143de4ea71acf828c82df9c9f88f] | committer: Steve Lhomme

demux:mkv: add support for V_PRORES

The decoder wants the atom header that has been stripped so we add it on every
frame we read.

Fixes #19568

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

 modules/demux/mkv/matroska_segment_parse.cpp | 4 
 modules/demux/mkv/mkv.cpp| 7 +--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/modules/demux/mkv/matroska_segment_parse.cpp 
b/modules/demux/mkv/matroska_segment_parse.cpp
index 44c82b50a9..81b674b62d 100644
--- a/modules/demux/mkv/matroska_segment_parse.cpp
+++ b/modules/demux/mkv/matroska_segment_parse.cpp
@@ -1630,6 +1630,10 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk )
 vars.p_fmt->i_codec = VLC_CODEC_FFV1;
 fill_extra_data( vars.p_tk, 0 );
 }
+S_CASE("V_PRORES") {
+vars.p_fmt->i_codec = VLC_CODEC_PRORES;
+fill_extra_data( vars.p_tk, 0 );
+}
 S_CASE("A_MS/ACM") {
 mkv_track_t * p_tk = vars.p_tk;
 es_format_t * p_fmt = _tk->fmt;
diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp
index edc594bf5e..86b4a3ad26 100644
--- a/modules/demux/mkv/mkv.cpp
+++ b/modules/demux/mkv/mkv.cpp
@@ -570,15 +570,16 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, 
KaxSimpleBlock *simpleblock
 msg_Warn( p_demux, "Cannot read frame (too long or no frame)" );
 break;
 }
+size_t extra_data = track.fmt.i_codec == VLC_CODEC_PRORES ? 8 : 0;
 
 if( track.i_compression_type == MATROSKA_COMPRESSION_HEADER &&
 track.p_compression_data != NULL &&
 track.i_encoding_scope & MATROSKA_ENCODING_SCOPE_ALL_FRAMES )
-p_block = MemToBlock( data->Buffer(), data->Size(), 
track.p_compression_data->GetSize() );
+p_block = MemToBlock( data->Buffer(), data->Size(), 
track.p_compression_data->GetSize() + extra_data );
 else if( unlikely( track.fmt.i_codec == VLC_CODEC_WAVPACK ) )
 p_block = packetize_wavpack( track, data->Buffer(), data->Size() );
 else
-p_block = MemToBlock( data->Buffer(), data->Size(), 0 );
+p_block = MemToBlock( data->Buffer(), data->Size(), extra_data );
 
 if( p_block == NULL )
 {
@@ -600,6 +601,8 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, 
KaxSimpleBlock *simpleblock
 {
 memcpy( p_block->p_buffer, track.p_compression_data->GetBuffer(), 
track.p_compression_data->GetSize() );
 }
+if ( track.fmt.i_codec == VLC_CODEC_PRORES )
+memcpy( p_block->p_buffer + 4, "icpf", 4 );
 
 if ( b_key_picture )
 p_block->i_flags |= BLOCK_FLAG_TYPE_I;

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