[vlc-commits] aom: remove deadline parameter
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 $
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
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
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
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
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()
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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()
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
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
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