[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[483] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-11-29 10:25:56
|
Revision: 483 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=483&view=rev Author: nickols_k Date: 2012-11-29 10:25:47 +0000 (Thu, 29 Nov 2012) Log Message: ----------- simplify Video_Output initialization Modified Paths: -------------- mplayerxp/libvo/video_out.cpp mplayerxp/libvo/video_out.h mplayerxp/mplayerxp.cpp Modified: mplayerxp/libvo/video_out.cpp =================================================================== --- mplayerxp/libvo/video_out.cpp 2012-11-29 09:44:34 UTC (rev 482) +++ mplayerxp/libvo/video_out.cpp 2012-11-29 10:25:47 UTC (rev 483) @@ -51,7 +51,6 @@ namespace mpxp{ VO_Config::VO_Config() { - memset(&subdevice,0,reinterpret_cast<long>(&dbpp) - reinterpret_cast<long>(&subdevice)); movie_aspect=-1.0; softzoom=1; flip=-1; @@ -164,34 +163,38 @@ MSG_INFO("\n"); } -MPXP_Rc Video_Output::_register(const char *driver_name) const +const vo_info_t* Video_Output::get_info() const { vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); + return priv.video_out; +} + +MPXP_Rc Video_Output::init(const char *driver_name) const +{ + char* drv_name = NULL; + char * subdev = NULL; + if(driver_name) { + drv_name=mp_strdup(driver_name); + subdev = strchr(drv_name,':'); + if(subdev) { *subdev='\0'; subdev++; } + } + vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); unsigned i; - if(!driver_name) priv.video_out=vo_infos[0]; + if(!drv_name) priv.video_out=vo_infos[0]; else for (i=0; vo_infos[i] != &null_vo_info; i++){ const vo_info_t *info = vo_infos[i]; - if(strcmp(info->short_name,driver_name) == 0){ + if(strcmp(info->short_name,drv_name) == 0){ priv.video_out = vo_infos[i]; break; } } - return priv.video_out?MPXP_Ok:MPXP_False; -} - -const vo_info_t* Video_Output::get_info() const -{ - vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); - return priv.video_out; -} - -MPXP_Rc Video_Output::init(const char *subdevice) const -{ - vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); - MSG_DBG3("dri_vo_dbg: vo_init(%s)\n",subdevice); priv.frame_counter=0; - priv.vo_iface=priv.video_out->query_interface(subdevice); + if(priv.video_out) { + priv.vo_iface=priv.video_out->query_interface(subdev); + } + if(drv_name) delete drv_name; + if(subdev) delete subdev; return priv.vo_iface?MPXP_Ok:MPXP_False; } Modified: mplayerxp/libvo/video_out.h =================================================================== --- mplayerxp/libvo/video_out.h 2012-11-29 09:44:34 UTC (rev 482) +++ mplayerxp/libvo/video_out.h 2012-11-29 10:25:47 UTC (rev 483) @@ -116,7 +116,6 @@ VO_Config(); ~VO_Config() {} - char * subdevice; // currently unused char* mDisplayName; int xinerama_screen; @@ -166,37 +165,36 @@ void FLIP_UNSET() { flags&=~VOFLAG_FLIPPING; } void FLIP_REVERT() { flags^=VOFLAG_FLIPPING; } - MPXP_Rc init(const char *subdevice_name) const; - void print_help() const; - MPXP_Rc _register(const char *driver_name) const; - const vo_info_t* get_info() const; - MPXP_Rc configure(uint32_t width, uint32_t height, uint32_t d_width, + virtual MPXP_Rc init(const char *driver_name) const; + virtual void print_help() const; + virtual const vo_info_t* get_info() const; + virtual MPXP_Rc configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, vo_flags_e fullscreen,const char *title, uint32_t format); - uint32_t query_format(uint32_t* fourcc,unsigned src_w,unsigned src_h) const; + virtual uint32_t query_format(uint32_t* fourcc,unsigned src_w,unsigned src_h) const; - MPXP_Rc reset() const; - MPXP_Rc fullscreen() const; - MPXP_Rc screenshot(unsigned idx) const; - MPXP_Rc pause() const; - MPXP_Rc resume() const; + virtual MPXP_Rc reset() const; + virtual MPXP_Rc fullscreen() const; + virtual MPXP_Rc screenshot(unsigned idx) const; + virtual MPXP_Rc pause() const; + virtual MPXP_Rc resume() const; - MPXP_Rc get_surface(mp_image_t* mpi) const; - MPXP_Rc get_surface_caps(dri_surface_cap_t*) const; + virtual MPXP_Rc get_surface(mp_image_t* mpi) const; + virtual MPXP_Rc get_surface_caps(dri_surface_cap_t*) const; - int check_events() const; - unsigned get_num_frames() const; - MPXP_Rc draw_slice(const mp_image_t *mpi) const; - void select_frame(unsigned idx) const; - void flush_page(unsigned decoder_idx) const; - void draw_osd(unsigned idx) const; - void draw_spudec_direct(unsigned idx) const; - MPXP_Rc ctrl(uint32_t request, any_t*data) const; - int is_final() const; + virtual int check_events() const; + virtual unsigned get_num_frames() const; + virtual MPXP_Rc draw_slice(const mp_image_t *mpi) const; + virtual void select_frame(unsigned idx) const; + virtual void flush_page(unsigned decoder_idx) const; + virtual void draw_osd(unsigned idx) const; + virtual void draw_spudec_direct(unsigned idx) const; + virtual MPXP_Rc ctrl(uint32_t request, any_t*data) const; + virtual int is_final() const; - int adjust_size(unsigned cw,unsigned ch,unsigned *nw,unsigned *nh) const; - void dri_remove_osd(unsigned idx,int x0,int _y0, int w,int h) const; - void dri_draw_osd(unsigned idx,int x0,int _y0, int w,int h,const unsigned char* src,const unsigned char *srca, int stride) const; + virtual int adjust_size(unsigned cw,unsigned ch,unsigned *nw,unsigned *nh) const; + virtual void dri_remove_osd(unsigned idx,int x0,int _y0, int w,int h) const; + virtual void dri_draw_osd(unsigned idx,int x0,int _y0, int w,int h,const unsigned char* src,const unsigned char *srca, int stride) const; char antiviral_hole[RND_CHAR4]; vo_flags_e flags; Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-11-29 09:44:34 UTC (rev 482) +++ mplayerxp/mplayerxp.cpp 2012-11-29 10:25:47 UTC (rev 483) @@ -879,28 +879,13 @@ char* rs=NULL; unsigned i; // check video_out driver name: - if (mp_conf.video_driver) - if ((i=strcspn(mp_conf.video_driver, ":")) > 0) { - size_t i2 = strlen(mp_conf.video_driver); - if (mp_conf.video_driver[i] == ':') { - vo_conf.subdevice = (char *)mp_malloc(i2-i); - if (vo_conf.subdevice != NULL) - strncpy(vo_conf.subdevice, (char *)(mp_conf.video_driver+i+1), i2-i); - mp_conf.video_driver[i] = '\0'; - } - } - MP_UNIT("vo_register"); - MPXPSys->vo_inited = (vo_data->_register(mp_conf.video_driver)!=NULL)?1:0; + MP_UNIT("vo_init"); + MPXPSys->vo_inited = (vo_data->init(mp_conf.video_driver)!=NULL)?1:0; if(!MPXPSys->vo_inited){ MSG_FATAL(MSGTR_InvalidVOdriver,mp_conf.video_driver?mp_conf.video_driver:"?"); exit_player(MSGTR_Exit_error); } - MP_UNIT("vo_init"); - if(vo_data->init(vo_conf.subdevice)!=MPXP_Ok) { - MSG_FATAL("Error opening/initializing the selected video_out (-vo) device!\n"); - exit_player(MSGTR_Exit_error); - } // check audio_out driver name: MP_UNIT("ao_init"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |