From 95cee7fc59fa06c7494c60cc4dad1038ffb27a1c Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Thu, 15 Apr 2010 22:47:11 +0200 Subject: [PATCH] Moved "video output" -> "vout display" wrapper to the core. This removes support for non converted "video output" and "video filter" modules. --- modules/video_output/Modules.am | 4 +-- src/Makefile.am | 1 + src/video_output/video_output.c | 27 ++++++++++--------- src/video_output/vout_internal.h | 5 +++- .../video_output/vout_wrapper.c | 27 +++---------------- 5 files changed, 24 insertions(+), 40 deletions(-) rename modules/video_output/wrapper.c => src/video_output/vout_wrapper.c (95%) diff --git a/modules/video_output/Modules.am b/modules/video_output/Modules.am index e2ccfdb883..3a8222edf9 100644 --- a/modules/video_output/Modules.am +++ b/modules/video_output/Modules.am @@ -17,7 +17,6 @@ SOURCES_opengl = opengl.c opengl.h SOURCES_directfb = directfb.c SOURCES_vmem = vmem.c SOURCES_yuv = yuv.c -SOURCES_vout_wrapper = wrapper.c SOURCES_vout_macosx = macosx.m libxcb_x11_plugin_la_SOURCES = \ @@ -85,5 +84,4 @@ endif libvlc_LTLIBRARIES += \ libvmem_plugin.la \ - libyuv_plugin.la \ - libvout_wrapper_plugin.la + libyuv_plugin.la diff --git a/src/Makefile.am b/src/Makefile.am index b8d8b41cf7..2c6fad7d9f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -374,6 +374,7 @@ SOURCES_libvlc_common = \ video_output/vout_intf.c \ video_output/vout_internal.h \ video_output/vout_control.h \ + video_output/vout_wrapper.c \ audio_output/aout_internal.h \ audio_output/common.c \ audio_output/dec.c \ diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 7ed3dc55ee..a3f730018c 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -472,7 +472,7 @@ vout_thread_t * vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) } /* Create the vout thread */ - char* psz_tmp = config_ChainCreate( &psz_name, &p_cfg, psz_parser ); + char *psz_tmp = config_ChainCreate( &psz_name, &p_cfg, psz_parser ); free( psz_parser ); free( psz_tmp ); p_vout->p_cfg = p_cfg; @@ -487,9 +487,13 @@ vout_thread_t * vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) DeinterlaceEnable( p_vout ); if( p_vout->p->psz_filter_chain && *p_vout->p->psz_filter_chain ) - p_vout->p->psz_module_type = "video filter"; - else - p_vout->p->psz_module_type = "video output"; + { + char *psz_tmp; + if( asprintf( &psz_tmp, "%s,none", psz_name ) < 0 ) + psz_tmp = strdup( "" ); + free( psz_name ); + psz_name = psz_tmp; + } p_vout->p->psz_module_name = psz_name; p_vout->p_module = NULL; @@ -555,7 +559,7 @@ static void vout_Destructor( vlc_object_t * p_this ) vout_thread_t *p_vout = (vout_thread_t *)p_this; /* Make sure the vout was stopped first */ - assert( !p_vout->p_module ); + //assert( !p_vout->p_module ); free( p_vout->p->psz_module_name ); @@ -939,6 +943,7 @@ static int InitThread( vout_thread_t *p_vout ) static void* RunThread( void *p_this ) { vout_thread_t *p_vout = p_this; + bool b_has_wrapper; int i_idle_loops = 0; /* loops without displaying a picture */ int i_picture_qtype_last = QTYPE_NONE; bool b_picture_interlaced_last = false; @@ -947,14 +952,11 @@ static void* RunThread( void *p_this ) /* * Initialize thread */ - p_vout->p_module = module_need( p_vout, - p_vout->p->psz_module_type, - p_vout->p->psz_module_name, - !strcmp(p_vout->p->psz_module_type, "video filter") ); + b_has_wrapper = !vout_OpenWrapper( p_vout, p_vout->p->psz_module_name ); vlc_mutex_lock( &p_vout->change_lock ); - if( p_vout->p_module ) + if( b_has_wrapper ) p_vout->b_error = InitThread( p_vout ); else p_vout->b_error = true; @@ -1387,9 +1389,8 @@ exit_thread: EndThread( p_vout ); vlc_mutex_unlock( &p_vout->change_lock ); - if( p_vout->p_module ) - module_unneed( p_vout, p_vout->p_module ); - p_vout->p_module = NULL; + if( b_has_wrapper ) + vout_CloseWrapper( p_vout ); return NULL; } diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h index 2fc62004e1..edbf45d2fd 100644 --- a/src/video_output/vout_internal.h +++ b/src/video_output/vout_internal.h @@ -41,7 +41,6 @@ struct vout_thread_sys_t { /* module */ - const char *psz_module_type; char *psz_module_name; /* Thread & synchronization */ @@ -118,5 +117,9 @@ picture_t *vout_RenderPicture( vout_thread_t *, picture_t *, */ void vout_UsePictureLocked( vout_thread_t *p_vout, picture_t *p_pic ); +/* */ +int vout_OpenWrapper (vout_thread_t *, const char *); +void vout_CloseWrapper(vout_thread_t *); + #endif diff --git a/modules/video_output/wrapper.c b/src/video_output/vout_wrapper.c similarity index 95% rename from modules/video_output/wrapper.c rename to src/video_output/vout_wrapper.c index 558db233cb..2097070229 100644 --- a/modules/video_output/wrapper.c +++ b/src/video_output/vout_wrapper.c @@ -33,25 +33,8 @@ #include #include #include -#include "../video_filter/filter_common.h" #include - -/***************************************************************************** - * Module descriptor - *****************************************************************************/ -static int Open (vlc_object_t *); -static void Close(vlc_object_t *); - -vlc_module_begin() - set_category( CAT_VIDEO ) - set_subcategory( SUBCAT_VIDEO_VOUT ) - - set_description( "Transitional video display wrapper" ) - set_shortname( "Video display wrapper" ) - set_capability( "video output", 210 ) - set_callbacks( Open, Close ) - -vlc_module_end() +#include "vout_internal.h" /***************************************************************************** * @@ -85,9 +68,8 @@ static int Forward(vlc_object_t *, char const *, /***************************************************************************** * *****************************************************************************/ -static int Open(vlc_object_t *object) +int vout_OpenWrapper(vout_thread_t *vout, const char *name) { - vout_thread_t *vout = (vout_thread_t *)object; vout_sys_t *sys; msg_Dbg(vout, "Opening vout display wrapper"); @@ -115,7 +97,7 @@ static int Open(vlc_object_t *object) const mtime_t double_click_timeout = 300000; const mtime_t hide_timeout = var_CreateGetInteger(vout, "mouse-hide-timeout") * 1000; - sys->vd = vout_NewDisplay(vout, &source, &state, "$vout", + sys->vd = vout_NewDisplay(vout, &source, &state, name ? name : "$vout", double_click_timeout, hide_timeout); if (!sys->vd) { free(sys->title); @@ -146,9 +128,8 @@ static int Open(vlc_object_t *object) /***************************************************************************** * *****************************************************************************/ -static void Close(vlc_object_t *object) +void vout_CloseWrapper(vout_thread_t *vout) { - vout_thread_t *vout = (vout_thread_t *)object; vout_sys_t *sys = vout->p_sys; #ifdef WIN32 -- 2.39.2