[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[505] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-04 11:26:35
|
Revision: 505 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=505&view=rev Author: nickols_k Date: 2012-12-04 11:26:21 +0000 (Tue, 04 Dec 2012) Log Message: ----------- move ao_data and vo_data into MPXPContext Modified Paths: -------------- mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpdemux/demux_ogg.cpp mplayerxp/libmpdemux/sub_cc.cpp mplayerxp/libmpdemux/sub_ty.cpp mplayerxp/libmpstream/s_dvdnav.cpp mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/postproc/af.cpp mplayerxp/postproc/af_ao2.cpp mplayerxp/postproc/libmenu/menu.cpp mplayerxp/postproc/libmenu/menu_list.cpp mplayerxp/postproc/libmenu/menu_txt.cpp mplayerxp/postproc/vf.cpp mplayerxp/postproc/vf_expand.cpp mplayerxp/postproc/vf_vo.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -358,7 +358,7 @@ if(frame->flags) return 0; update_subtitle(opaque,frame->pts,mpi->xp_idx); - vo_data->flush_page(dae_curr_vdecoded(xp_core)); + mpxp_context().video().output->flush_page(dae_curr_vdecoded(xp_core)); t2=GetTimer()-t2; tt=t2*0.000001f; @@ -396,7 +396,7 @@ if(mp_conf.sub_fps==0) mp_conf.sub_fps=sh_video->fps; MP_UNIT("find_sub"); if (pts > sub_last_pts || pts < sub_last_pts-1.0 ) { - find_sub(mpxp_context().subtitles,sub_uses_time?(100*pts):(pts*mp_conf.sub_fps),vo_data); // FIXME! frame counter... + find_sub(mpxp_context().subtitles,sub_uses_time?(100*pts):(pts*mp_conf.sub_fps),mpxp_context().video().output); // FIXME! frame counter... sub_last_pts = pts; } MP_UNIT(NULL); @@ -416,31 +416,31 @@ } }else #endif - if(vo_data->spudec){ + if(mpxp_context().video().output->spudec){ unsigned char* packet=NULL; int len,timestamp; MP_UNIT("spudec"); - spudec_now_pts(vo_data->spudec,90000*v_pts); - if(spudec_visible(vo_data->spudec)) { - vo_data->draw_spudec_direct(xp_idx); + spudec_now_pts(mpxp_context().video().output->spudec,90000*v_pts); + if(spudec_visible(mpxp_context().video().output->spudec)) { + mpxp_context().video().output->draw_spudec_direct(xp_idx); } else { - spudec_heartbeat(vo_data->spudec,90000*v_pts); - if (vo_data->vobsub) { + spudec_heartbeat(mpxp_context().video().output->spudec,90000*v_pts); + if (mpxp_context().video().output->vobsub) { if (v_pts >= 0) { - while((len=vobsub_get_packet(vo_data->vobsub, v_pts,(any_t**)&packet, ×tamp))>0){ + while((len=vobsub_get_packet(mpxp_context().video().output->vobsub, v_pts,(any_t**)&packet, ×tamp))>0){ timestamp -= v_pts*90000; MSG_V("\rVOB sub: len=%d v_pts=%5.3f sub=%5.3f ts=%d \n",len,v_pts,timestamp / 90000.0,timestamp); - spudec_assemble(vo_data->spudec,packet,len,90000*d_dvdsub->pts); + spudec_assemble(mpxp_context().video().output->spudec,packet,len,90000*d_dvdsub->pts); } } } else { while((len=ds_get_packet_sub_r(d_dvdsub,&packet))>0){ MSG_V("\rDVD sub: len=%d v_pts=%5.3f s_pts=%5.3f \n",len,v_pts,d_dvdsub->pts); - spudec_assemble(vo_data->spudec,packet,len,90000*d_dvdsub->pts); + spudec_assemble(mpxp_context().video().output->spudec,packet,len,90000*d_dvdsub->pts); } } /* detect wether the sub has changed or not */ - if(spudec_changed(vo_data->spudec)) vo_data->draw_spudec_direct(xp_idx); + if(spudec_changed(mpxp_context().video().output->spudec)) mpxp_context().video().output->draw_spudec_direct(xp_idx); MP_UNIT(NULL); } } @@ -490,10 +490,10 @@ continue; } j=i; - /*vo_data->flags=flags;*/ + /*mpxp_context().video().output->flags=flags;*/ if(flags&VFCAP_CSP_SUPPORTED_BY_HW) break; } else - if(!palette && !(vo_data->flags&3) && (out_fmt==IMGFMT_RGB8||out_fmt==IMGFMT_BGR8)){ + if(!palette && !(mpxp_context().video().output->flags&3) && (out_fmt==IMGFMT_RGB8||out_fmt==IMGFMT_BGR8)){ sh->outfmtidx=j; // pass index to the control() function this way if(priv->mpvdec->control_vd(priv->ctx,VDCTRL_QUERY_FORMAT,&out_fmt)!=MPXP_False) palette=1; @@ -539,13 +539,13 @@ // autodetect flipping if(vo_conf.flip==0){ - vo_data->FLIP_UNSET(); + mpxp_context().video().output->FLIP_UNSET(); if(sh->codec->outflags[j]&CODECS_FLAG_FLIP) if(!(sh->codec->outflags[j]&CODECS_FLAG_NOFLIP)) - vo_data->FLIP_SET(); + mpxp_context().video().output->FLIP_SET(); } - if(vo_data->flags&VFCAP_FLIPPED) vo_data->FLIP_REVERT(); - if(vo_data->FLIP() && !(vo_data->flags&VFCAP_FLIP)){ + if(mpxp_context().video().output->flags&VFCAP_FLIPPED) mpxp_context().video().output->FLIP_REVERT(); + if(mpxp_context().video().output->FLIP() && !(mpxp_context().video().output->flags&VFCAP_FLIP)){ // we need to flip, but no flipping filter avail. conf.w=sh->src_w; conf.h=sh->src_h; @@ -599,13 +599,13 @@ MSG_V("vf->config(%dx%d->%dx%d,flags=0x%x,'%s',%s)\n", sh->src_w,sh->src_h, screen_size_x,screen_size_y, - vo_data->flags, + mpxp_context().video().output->flags, "MPlayerXP",vo_format_name(out_fmt)); // MSG_DBG2("vf configuring: %s\n",vf->info->name); if(vf_config(s,sh->src_w,sh->src_h, screen_size_x,screen_size_y, - vo_data->flags, + mpxp_context().video().output->flags, out_fmt)==0){ MSG_WARN(MSGTR_CannotInitVO); priv->vfilter_inited=-1; @@ -614,7 +614,7 @@ MSG_DBG2("vf->config(%dx%d->%dx%d,flags=%d,'%s')\n", sh->src_w,sh->src_h, screen_size_x,screen_size_y, - vo_data->flags, + mpxp_context().video().output->flags, vo_format_name(out_fmt)); return MPXP_True; } Modified: mplayerxp/libmpdemux/demux_ogg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -318,7 +318,7 @@ #ifdef USE_ICONV subcp_recode1(&ogg_sub); #endif - vo_data->sub = &ogg_sub; + mpxp_context().video().output->sub = &ogg_sub; vo_osd_changed(OSDTYPE_SUBTITLE); } @@ -573,7 +573,7 @@ /// Clear subtitles if necessary (for broken files) if ((clear_sub > 0) && (pts >= clear_sub)) { ogg_sub.lines = 0; - vo_data->sub = &ogg_sub; + mpxp_context().video().output->sub = &ogg_sub; vo_osd_changed(OSDTYPE_SUBTITLE); clear_sub = -1; } @@ -1327,7 +1327,7 @@ } if(!precision && (is_keyframe || os->vorbis) ) { ogg_sub.lines = 0; - vo_data->sub = &ogg_sub; + mpxp_context().video().output->sub = &ogg_sub; vo_osd_changed(OSDTYPE_SUBTITLE); clear_sub = -1; demux_ogg_add_packet(ds,os,ds->id,&op); Modified: mplayerxp/libmpdemux/sub_cc.cpp =================================================================== --- mplayerxp/libmpdemux/sub_cc.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/libmpdemux/sub_cc.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -150,7 +150,7 @@ static void display_buffer(const subtitle * buf) { - vo_data->sub=buf; + mpxp_context().video().output->sub=buf; vo_osd_changed(OSDTYPE_SUBTITLE); } Modified: mplayerxp/libmpdemux/sub_ty.cpp =================================================================== --- mplayerxp/libmpdemux/sub_ty.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/libmpdemux/sub_ty.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -894,9 +894,9 @@ // { // printf( "OSD:%d:%s\n", index, ty_OSD1.text[ index ] ); // } - vo_data->sub = &ty_OSD1; - vo_osd_changed( OSDTYPE_SUBTITLE ); - tyOSDUpdate = 0; + mpxp_context().video().output->sub = &ty_OSD1; + vo_osd_changed( OSDTYPE_SUBTITLE ); + tyOSDUpdate = 0; } } } Modified: mplayerxp/libmpstream/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -512,12 +512,12 @@ stream_change->physical_letterbox, stream_change->physical_pan_scan, stream_change->logical); - if (vo_data->spudec && mp_conf.dvdsub_id!=stream_change->physical_wide) { + if (mpxp_context().video().output->spudec && mp_conf.dvdsub_id!=stream_change->physical_wide) { MSG_DBG2("d_dvdsub->id change: was %d is now %d\n", d_dvdsub->id,stream_change->physical_wide); // FIXME: need a better way to change SPU id d_dvdsub->id=mp_conf.dvdsub_id=stream_change->physical_wide; - if (vo_data->spudec) spudec_reset(vo_data->spudec); + if (mpxp_context().video().output->spudec) spudec_reset(mpxp_context().video().output->spudec); } break; } @@ -563,7 +563,7 @@ MSG_DBG2("DVDNAV Event: Nav SPU CLUT Change\n"); if(sp->len!=64) MSG_WARN("DVDNAV Event: Nav SPU CLUT Change: %i bytes <> 64\n",sp->len); // send new palette to SPU decoder - if (vo_data->spudec) spudec_update_palette(vo_data->spudec,(const unsigned int *)(sp->buf)); + if (mpxp_context().video().output->spudec) spudec_update_palette(mpxp_context().video().output->spudec,(const unsigned int *)(sp->buf)); break; } } Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/mplayerxp.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -261,8 +261,6 @@ Decoding ahead **************************************************************************/ static volatile char antiviral_hole4[__VM_PAGE_SIZE__] __PAGE_ALIGNED__; -ao_data_t* ao_data=NULL; -Video_Output* vo_data=NULL; /**************************************************************************/ MPXPContext& mpxp_context() { return *MPXPCtx; } @@ -315,8 +313,8 @@ #ifdef ENABLE_WIN32LOADER free_codec_cfg(); #endif - if(vo_data) delete vo_data; - if(ao_data) delete ao_data; + if(mpxp_context().video().output) delete mpxp_context().video().output; + if(mpxp_context().audio().output) delete mpxp_context().audio().output; xmp_uninit(); mp_uninit_malloc(mp_conf.verbose); } @@ -360,15 +358,15 @@ if (mask&INITED_SPUDEC){ inited_flags&=~INITED_SPUDEC; MP_UNIT("uninit_spudec"); - spudec_free(vo_data->spudec); - vo_data->spudec=NULL; + spudec_free(mpxp_context().video().output->spudec); + mpxp_context().video().output->spudec=NULL; } if (mask&INITED_VOBSUB){ inited_flags&=~INITED_VOBSUB; MP_UNIT("uninit_vobsub"); - vobsub_close(vo_data->vobsub); - vo_data->vobsub=NULL; + vobsub_close(mpxp_context().video().output->vobsub); + mpxp_context().video().output->vobsub=NULL; } if(mask&INITED_VCODEC){ @@ -381,8 +379,8 @@ if(mask&INITED_VO){ inited_flags&=~INITED_VO; MP_UNIT("uninit_vo"); - delete vo_data; - vo_data=NULL; + delete mpxp_context().video().output; + mpxp_context().video().output=NULL; } if(mask&INITED_ACODEC){ @@ -395,8 +393,8 @@ if(mask&INITED_AO){ inited_flags&=~INITED_AO; MP_UNIT("uninit_ao"); - ao_uninit(ao_data); - ao_data=NULL; + ao_uninit(mpxp_context().audio().output); + mpxp_context().audio().output=NULL; } if(mask&INITED_DEMUXER) uninit_demuxer(); @@ -415,7 +413,7 @@ MP_UNIT("sub_free"); sub_free( mpxp_context().subtitles ); mp_conf.sub_name=NULL; - vo_data->sub=NULL; + mpxp_context().video().output->sub=NULL; mpxp_context().subtitles=NULL; } #endif @@ -577,7 +575,7 @@ static void init_player( void ) { if(mp_conf.video_driver && strcmp(mp_conf.video_driver,"help")==0) { - vo_data->print_help(); + mpxp_context().video().output->print_help(); mpxp_uninit_structs(); exit(0); } @@ -646,7 +644,7 @@ m_config_show_options(mpxp_context().mconfig); mp_input_print_binds(MPXPSys.libinput()); print_stream_drivers(); - vo_data->print_help(); + mpxp_context().video().output->print_help(); ao_print_help(); vf_help(); af_help(); @@ -685,7 +683,7 @@ else --pts; } else osd_last_pts=pts; - vo_data->osd_text=osd_text_buffer; + mpxp_context().video().output->osd_text=osd_text_buffer; if (MPXPSys.osd_show_framedrop) { sprintf(osd_text_tmp, "Framedrop: %s",mp_conf.frame_dropping>1?"hard":mp_conf.frame_dropping?"vo":"none"); MPXPSys.osd_show_framedrop--; @@ -696,13 +694,13 @@ #else sprintf(osd_text_tmp,"%c %02d:%02d:%02d",MPXPSys.osd_function,pts/3600,(pts/60)%60,pts%60); #endif - if(strcmp(vo_data->osd_text, osd_text_tmp)) { - strcpy(vo_data->osd_text, osd_text_tmp); + if(strcmp(mpxp_context().video().output->osd_text, osd_text_tmp)) { + strcpy(mpxp_context().video().output->osd_text, osd_text_tmp); vo_osd_changed(OSDTYPE_OSD); } } else { - if(vo_data->osd_text) { - vo_data->osd_text=NULL; + if(mpxp_context().video().output->osd_text) { + mpxp_context().video().output->osd_text=NULL; vo_osd_changed(OSDTYPE_OSD); } } @@ -725,8 +723,8 @@ // success: /* FIXME there should be real seeking for vobsub */ - if (vo_data->vobsub) vobsub_reset(vo_data->vobsub); - if (vo_data->spudec) spudec_reset(vo_data->spudec); + if (mpxp_context().video().output->vobsub) vobsub_reset(mpxp_context().video().output->vobsub); + if (mpxp_context().video().output->spudec) spudec_reset(mpxp_context().video().output->spudec); if(sh_audio){ sh_audio->chapter_change=0; @@ -737,19 +735,19 @@ if(sh_video){ MP_UNIT("seek_video_reset"); mpcv_resync_stream(mpxp_context().video().decoder); - vo_data->reset(); + mpxp_context().video().output->reset(); sh_video->chapter_change=-1; } if(sh_audio){ MP_UNIT("seek_audio_reset"); mpca_resync_stream(mpxp_context().audio().decoder); - ao_reset(ao_data); // stop audio, throwing away buffered data + ao_reset(mpxp_context().audio().output); // stop audio, throwing away buffered data } - if (vo_data->vobsub) { + if (mpxp_context().video().output->vobsub) { MP_UNIT("seek_vobsub_reset"); - vobsub_seek_r(vo_data->vobsub, _seek); + vobsub_seek_r(mpxp_context().video().output->vobsub, _seek); } #ifdef USE_OSD @@ -758,8 +756,8 @@ int len=((_demuxer->movi_end-_demuxer->movi_start)>>8); if (len>0){ if(osd) osd->visible=sh_video->fps<=60?sh_video->fps:25; - vo_data->osd_progbar_type=0; - vo_data->osd_progbar_value=(_demuxer->filepos-_demuxer->movi_start)/len; + mpxp_context().video().output->osd_progbar_type=0; + mpxp_context().video().output->osd_progbar_value=(_demuxer->filepos-_demuxer->movi_start)/len; vo_osd_changed(OSDTYPE_PROGBAR); } } @@ -768,10 +766,10 @@ max_pts_correction=0.1; if(osd) osd->visible=sh_video->fps<=60?sh_video->fps:25; // to rewert to PLAY pointer after 1 sec mpxp_context().bench->audio=0; mpxp_context().bench->audio_decode=0; mpxp_context().bench->video=0; mpxp_context().bench->vout=0; - if(vo_data->spudec) { + if(mpxp_context().video().output->spudec) { unsigned char* packet=NULL; while(ds_get_packet_sub_r(d_dvdsub,&packet)>0) ; // Empty stream - spudec_reset(vo_data->spudec); + spudec_reset(mpxp_context().video().output->spudec); } } } @@ -845,12 +843,12 @@ sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(MPXPSys.demuxer()->audio->sh); if(xmp_test_model(XMP_Run_AudioPlayback)) MSG_STATUS("A:%6.1f %4.1f%%\r" - ,sh_audio->timer-ao_get_delay(ao_data) + ,sh_audio->timer-ao_get_delay(mpxp_context().audio().output) ,(sh_audio->timer>0.5)?100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)sh_audio->timer:0 ); else MSG_STATUS("A:%6.1f %4.1f%% B:%4.1f\r" - ,sh_audio->timer-ao_get_delay(ao_data) + ,sh_audio->timer-ao_get_delay(mpxp_context().audio().output) ,(sh_audio->timer>0.5)?100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)sh_audio->timer:0 ,get_delay_audio_buffer() ); @@ -881,13 +879,13 @@ // check font #ifdef USE_OSD if(mp_conf.font_name){ - vo_data->font=read_font_desc(mp_conf.font_name,mp_conf.font_factor,mp_conf.verbose>1); - if(!vo_data->font) MSG_ERR(MSGTR_CantLoadFont,mp_conf.font_name); + mpxp_context().video().output->font=read_font_desc(mp_conf.font_name,mp_conf.font_factor,mp_conf.verbose>1); + if(!mpxp_context().video().output->font) MSG_ERR(MSGTR_CantLoadFont,mp_conf.font_name); } else { // try default: - vo_data->font=read_font_desc(get_path("font/font.desc"),mp_conf.font_factor,mp_conf.verbose>1); - if(!vo_data->font) - vo_data->font=read_font_desc(DATADIR"/font/font.desc",mp_conf.font_factor,mp_conf.verbose>1); + mpxp_context().video().output->font=read_font_desc(get_path("font/font.desc"),mp_conf.font_factor,mp_conf.verbose>1); + if(!mpxp_context().video().output->font) + mpxp_context().video().output->font=read_font_desc(DATADIR"/font/font.desc",mp_conf.font_factor,mp_conf.verbose>1); } #endif /* Configure menu here */ @@ -913,7 +911,7 @@ unsigned i; // check video_out driver name: MP_UNIT("vo_init"); - vo_inited = (vo_data->init(mp_conf.video_driver)!=NULL)?1:0; + vo_inited = (mpxp_context().video().output->init(mp_conf.video_driver)!=NULL)?1:0; if(!vo_inited){ MSG_FATAL(MSGTR_InvalidVOdriver,mp_conf.video_driver?mp_conf.video_driver:"?"); @@ -941,23 +939,23 @@ int forced_subs_only=0; MP_UNIT("vobsub"); if (mp_conf.vobsub_name){ - vo_data->vobsub=vobsub_open(mp_conf.vobsub_name,mp_conf.spudec_ifo,1,&vo_data->spudec); - if(vo_data->vobsub==NULL) + mpxp_context().video().output->vobsub=vobsub_open(mp_conf.vobsub_name,mp_conf.spudec_ifo,1,&mpxp_context().video().output->spudec); + if(mpxp_context().video().output->vobsub==NULL) MSG_ERR(MSGTR_CantLoadSub,mp_conf.vobsub_name); else { inited_flags|=INITED_VOBSUB; - vobsub_set_from_lang(vo_data->vobsub, mp_conf.dvdsub_lang); + vobsub_set_from_lang(mpxp_context().video().output->vobsub, mp_conf.dvdsub_lang); // check if vobsub requested only to display forced subtitles - forced_subs_only=vobsub_get_forced_subs_flag(vo_data->vobsub); + forced_subs_only=vobsub_get_forced_subs_flag(mpxp_context().video().output->vobsub); } }else if(mp_conf.sub_auto && filename && (strlen(filename)>=5)){ /* try to autodetect vobsub from movie filename ::atmos */ char *buf = new(zeromem) char[strlen(filename)-3]; strncpy(buf, filename, strlen(filename)-4); - vo_data->vobsub=vobsub_open(buf,mp_conf.spudec_ifo,0,&vo_data->spudec); + mpxp_context().video().output->vobsub=vobsub_open(buf,mp_conf.spudec_ifo,0,&mpxp_context().video().output->spudec); delete buf; } - if(vo_data->vobsub) + if(mpxp_context().video().output->vobsub) { mp_conf.sub_auto=0; // don't do autosub for textsubs if vobsub found inited_flags|=INITED_VOBSUB; @@ -1085,26 +1083,26 @@ unsigned int palette[16], width, height; MP_UNIT("spudec_init_vobsub"); if (vobsub_parse_ifo(NULL,mp_conf.spudec_ifo, palette, &width, &height, 1, -1, NULL) >= 0) - vo_data->spudec=spudec_new_scaled(palette, sh_video->src_w, sh_video->src_h); + mpxp_context().video().output->spudec=spudec_new_scaled(palette, sh_video->src_w, sh_video->src_h); } - if (vo_data->spudec==NULL) { + if (mpxp_context().video().output->spudec==NULL) { unsigned *pal; MP_UNIT("spudec_init"); if(stream_control(stream,SCTRL_VID_GET_PALETTE,&pal)==MPXP_Ok) - vo_data->spudec=spudec_new_scaled(pal,sh_video->src_w, sh_video->src_h); + mpxp_context().video().output->spudec=spudec_new_scaled(pal,sh_video->src_w, sh_video->src_h); } - if (vo_data->spudec==NULL) { + if (mpxp_context().video().output->spudec==NULL) { MP_UNIT("spudec_init_normal"); - vo_data->spudec=spudec_new_scaled(NULL, sh_video->src_w, sh_video->src_h); - spudec_set_font_factor(vo_data->spudec,mp_conf.font_factor); + mpxp_context().video().output->spudec=spudec_new_scaled(NULL, sh_video->src_w, sh_video->src_h); + spudec_set_font_factor(mpxp_context().video().output->spudec,mp_conf.font_factor); } - if (vo_data->spudec!=NULL) { + if (mpxp_context().video().output->spudec!=NULL) { inited_flags|=INITED_SPUDEC; // Apply current settings for forced subs - spudec_set_forced_subs_only(vo_data->spudec,forced_subs_only); + spudec_set_forced_subs_only(mpxp_context().video().output->spudec,forced_subs_only); } #ifdef USE_SUB @@ -1175,13 +1173,13 @@ d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); } else { - if(!(ao_data=ao_init(ao_subdevice))) { + if(!(mpxp_context().audio().output=ao_init(ao_subdevice))) { MSG_ERR(MSGTR_CannotInitAO); d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); } if(ao_subdevice) delete ao_subdevice; - ao_inited=ao_register(ao_data,mp_conf.audio_driver,0); + ao_inited=ao_register(mpxp_context().audio().output,mp_conf.audio_driver,0); if (ao_inited!=MPXP_Ok){ MSG_FATAL(MSGTR_InvalidAOdriver,mp_conf.audio_driver); exit_player(MSGTR_Exit_error); @@ -1195,12 +1193,12 @@ MPXP_Rc rc=MPXP_Ok; MP_UNIT("init_video_codec"); sh_video->inited=0; - vo_data->flags=VOFLAG_NONE; + mpxp_context().video().output->flags=VOFLAG_NONE; /* configure flags */ - if(vo_conf.fullscreen) vo_data->FS_SET(); - if(vo_conf.softzoom) vo_data->ZOOM_SET(); - if(vo_conf.flip>0) vo_data->FLIP_SET(); - if(vo_conf.vidmode) vo_data->VM_SET(); + if(vo_conf.fullscreen) mpxp_context().video().output->FS_SET(); + if(vo_conf.softzoom) mpxp_context().video().output->ZOOM_SET(); + if(vo_conf.flip>0) mpxp_context().video().output->FLIP_SET(); + if(vo_conf.vidmode) mpxp_context().video().output->VM_SET(); if((mpxp_context().video().decoder=mpcv_init(sh_video,mp_conf.video_codec,mp_conf.video_family,-1,_libinput))) sh_video->inited=1; #ifdef ENABLE_WIN32LOADER if(!sh_video->inited) { @@ -1250,7 +1248,7 @@ sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(_demuxer->video->sh); Demuxer_Stream *d_audio=_demuxer->audio; int rc=0; - const ao_info_t *info=ao_get_info(ao_data); + const ao_info_t *info=ao_get_info(mpxp_context().audio().output); MP_UNIT("setup_audio"); MSG_V("AO: [%s] %iHz %s %s\n", info->short_name, @@ -1270,26 +1268,26 @@ MSG_V("AO: Comment: %s\n", info->comment); MP_UNIT("af_preinit"); - ao_data->samplerate=mp_conf.force_srate?mp_conf.force_srate:sh_audio->rate; - ao_data->channels=mp_conf.ao_channels?mp_conf.ao_channels:sh_audio->nch; - ao_data->format=sh_audio->afmt; + mpxp_context().audio().output->samplerate=mp_conf.force_srate?mp_conf.force_srate:sh_audio->rate; + mpxp_context().audio().output->channels=mp_conf.ao_channels?mp_conf.ao_channels:sh_audio->nch; + mpxp_context().audio().output->format=sh_audio->afmt; if(mpca_preinit_filters(mpxp_context().audio().decoder, // input: (int)(sh_audio->rate), sh_audio->nch, sh_audio->afmt, // output: - &ao_data->samplerate, &ao_data->channels, &ao_data->format)!=MPXP_Ok){ + &mpxp_context().audio().output->samplerate, &mpxp_context().audio().output->channels, &mpxp_context().audio().output->format)!=MPXP_Ok){ MSG_ERR("Audio filter chain preinit failed\n"); } else { MSG_V("AF_pre: %dHz %dch (%s) afmt=%08X sh_audio_min=%i\n", - ao_data->samplerate, ao_data->channels, - ao_format_name(ao_data->format),ao_data->format + mpxp_context().audio().output->samplerate, mpxp_context().audio().output->channels, + ao_format_name(mpxp_context().audio().output->format),mpxp_context().audio().output->format ,sh_audio->audio_out_minsize); } - if(MPXP_Ok!=ao_configure(ao_data,mp_conf.force_srate?mp_conf.force_srate:ao_data->samplerate, - ao_data->channels,ao_data->format)) { + if(MPXP_Ok!=ao_configure(mpxp_context().audio().output,mp_conf.force_srate?mp_conf.force_srate:mpxp_context().audio().output->samplerate, + mpxp_context().audio().output->channels,mpxp_context().audio().output->format)) { MSG_ERR("Can't configure audio device\n"); d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); @@ -1300,8 +1298,8 @@ if(mpca_init_filters(mpxp_context().audio().decoder, sh_audio->rate, sh_audio->nch, mpaf_format_e(sh_audio->afmt), - ao_data->samplerate, ao_data->channels, mpaf_format_e(ao_data->format), - ao_data->outburst*4, ao_data->buffersize)!=MPXP_Ok) { + mpxp_context().audio().output->samplerate, mpxp_context().audio().output->channels, mpaf_format_e(mpxp_context().audio().output->format), + mpxp_context().audio().output->outburst*4, mpxp_context().audio().output->buffersize)!=MPXP_Ok) { MSG_ERR("No matching audio filter found!\n"); } } @@ -1333,7 +1331,7 @@ unsigned ipts,rpts; unsigned char h,m,s,rh,rm,rs; static char ph=0,pm=0,ps=0; - ipts=(unsigned)(sh_audio->timer-ao_get_delay(ao_data)); + ipts=(unsigned)(sh_audio->timer-ao_get_delay(mpxp_context().audio().output)); rpts=_demuxer->movi_length-ipts; h = ipts/3600; m = (ipts/60)%60; @@ -1359,7 +1357,7 @@ int rc=0; if(*osd_visible) { if (!--(*osd_visible)) { - vo_data->osd_progbar_type=-1; // disable + mpxp_context().video().output->osd_progbar_type=-1; // disable vo_osd_changed(OSDTYPE_PROGBAR); if (!((osd_function == OSD_PAUSE)||(osd_function==OSD_DVDMENU))) osd_function = OSD_PLAY; @@ -1380,7 +1378,7 @@ *in_pause = 1; return -1; } - vo_data->pause(); + mpxp_context().video().output->pause(); } if(mp_conf.verbose) { MSG_STATUS("\n------ PAUSED -------\r"); @@ -1392,11 +1390,11 @@ xp_core->in_pause=1; while( !dec_ahead_can_aseek ) yield_timeslice(); } - ao_pause(ao_data); // pause audio, keep data if possible + ao_pause(mpxp_context().audio().output); // pause audio, keep data if possible } while( (cmd = mp_input_get_cmd(_libinput,20,1,1)) == NULL) { - if(sh_video && vo_inited) vo_data->check_events(); + if(sh_video && vo_inited) mpxp_context().video().output->check_events(); yield_timeslice(); } @@ -1407,14 +1405,14 @@ if(osd_function==OSD_PAUSE) osd_function=OSD_PLAY; if (ao_inited==MPXP_Ok && sh_audio) { - ao_resume(ao_data); // resume audio + ao_resume(mpxp_context().audio().output); // resume audio if(xmp_test_model(XMP_Run_AudioPlayer)) { xp_core->in_pause=0; __MP_SYNCHRONIZE(audio_play_mutex,pthread_cond_signal(&audio_play_cond)); } } if (vo_inited && sh_video) - vo_data->resume(); // resume video + mpxp_context().video().output->resume(); // resume video *in_pause=0; (void)GetRelativeTime(); // keep TF around FT in next cycle } @@ -1507,17 +1505,17 @@ } break; case MP_CMD_MUTE: - mixer_mute(ao_data); + mixer_mute(mpxp_context().audio().output); break; case MP_CMD_VOLUME : { int v = cmd->args[0].v.i; - if(v > 0) mixer_incvolume(ao_data); - else mixer_decvolume(ao_data); + if(v > 0) mixer_incvolume(mpxp_context().audio().output); + else mixer_decvolume(mpxp_context().audio().output); #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec - vo_data->osd_progbar_type=OSD_VOLUME; - vo_data->osd_progbar_value=(mixer_getbothvolume(ao_data)*256.0)/100.0; + mpxp_context().video().output->osd_progbar_type=OSD_VOLUME; + mpxp_context().video().output->osd_progbar_value=(mixer_getbothvolume(mpxp_context().audio().output)*256.0)/100.0; vo_osd_changed(OSDTYPE_PROGBAR); } #endif @@ -1532,9 +1530,9 @@ #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec - vo_data->osd_progbar_type=OSD_CONTRAST; - vo_data->osd_progbar_value=((v_cont)<<8)/100; - vo_data->osd_progbar_value = ((v_cont+100)<<8)/200; + mpxp_context().video().output->osd_progbar_type=OSD_CONTRAST; + mpxp_context().video().output->osd_progbar_value=((v_cont)<<8)/100; + mpxp_context().video().output->osd_progbar_value = ((v_cont+100)<<8)/200; vo_osd_changed(OSDTYPE_PROGBAR); } #endif @@ -1550,9 +1548,9 @@ #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec - vo_data->osd_progbar_type=OSD_BRIGHTNESS; - vo_data->osd_progbar_value=((v_bright)<<8)/100; - vo_data->osd_progbar_value = ((v_bright+100)<<8)/200; + mpxp_context().video().output->osd_progbar_type=OSD_BRIGHTNESS; + mpxp_context().video().output->osd_progbar_value=((v_bright)<<8)/100; + mpxp_context().video().output->osd_progbar_value = ((v_bright+100)<<8)/200; vo_osd_changed(OSDTYPE_PROGBAR); } #endif @@ -1568,9 +1566,9 @@ #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec - vo_data->osd_progbar_type=OSD_HUE; - vo_data->osd_progbar_value=((v_hue)<<8)/100; - vo_data->osd_progbar_value = ((v_hue+100)<<8)/200; + mpxp_context().video().output->osd_progbar_type=OSD_HUE; + mpxp_context().video().output->osd_progbar_value=((v_hue)<<8)/100; + mpxp_context().video().output->osd_progbar_value = ((v_hue+100)<<8)/200; vo_osd_changed(OSDTYPE_PROGBAR); } #endif @@ -1586,9 +1584,9 @@ #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec - vo_data->osd_progbar_type=OSD_SATURATION; - vo_data->osd_progbar_value=((v_saturation)<<8)/100; - vo_data->osd_progbar_value = ((v_saturation+100)<<8)/200; + mpxp_context().video().output->osd_progbar_type=OSD_SATURATION; + mpxp_context().video().output->osd_progbar_value=((v_saturation)<<8)/100; + mpxp_context().video().output->osd_progbar_value = ((v_saturation+100)<<8)/200; vo_osd_changed(OSDTYPE_PROGBAR); } #endif @@ -1624,10 +1622,10 @@ } break; case MP_CMD_VO_FULLSCREEN: - vo_data->fullscreen(); + mpxp_context().video().output->fullscreen(); break; case MP_CMD_VO_SCREENSHOT: - vo_data->screenshot(dae_curr_vplayed(xp_core)); + mpxp_context().video().output->screenshot(dae_curr_vplayed(xp_core)); break; case MP_CMD_SUB_POS: { int v; @@ -1697,7 +1695,7 @@ mpxp_init_structs(); MPXPSystem& MPXPSys=mpxp_context().MPXPSys; - vo_data=new(zeromem) Video_Output; + mpxp_context().video().output=new(zeromem) Video_Output; init_signal_handling(); xmp_init(); @@ -1923,7 +1921,7 @@ goto main; } - xp_core->num_v_buffs=vo_data->get_num_frames(); /* that really known after init_vcodecs */ + xp_core->num_v_buffs=mpxp_context().video().output->get_num_frames(); /* that really known after init_vcodecs */ if(mp_conf.autoq>0){ /* Auto quality option enabled*/ @@ -2050,7 +2048,7 @@ else MPXPSys.print_audio_status(); } usleep(250000); - if(sh_video) vo_data->check_events(); + if(sh_video) mpxp_context().video().output->check_events(); #ifdef USE_OSD while((MPXPSys.paint_osd(&osd.visible,&in_pause))!=0); #endif Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/mplayerxp.h 2012-12-04 11:26:21 UTC (rev 505) @@ -125,10 +125,12 @@ struct audio_processing_t { audio_decoder_t* decoder; + ao_data_t* output; }; struct video_processing_t { video_decoder_t* decoder; + Video_Output* output; }; struct MPXPSystem; @@ -196,7 +198,5 @@ void mp_register_options(m_config_t* cfg); extern play_tree_iter_t* playtree_iter; - extern ao_data_t* ao_data; - extern Video_Output* vo_data; } #endif Modified: mplayerxp/postproc/af.cpp =================================================================== --- mplayerxp/postproc/af.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/af.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -576,7 +576,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_control(ao_data,AOCONTROL_QUERY_FORMAT,fmt); + if(strcmp(filt_name,"ao2")==0) return ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_FORMAT,fmt); else if(afmt2mpaf(fmt)==filt->conf.format) return MPXP_True; return MPXP_False; } @@ -585,7 +585,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_control(ao_data,AOCONTROL_QUERY_RATE,rate); + if(strcmp(filt_name,"ao2")==0) return ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_RATE,rate); else if(rate==filt->conf.rate) return MPXP_True; return MPXP_False; } @@ -594,7 +594,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_control(ao_data,AOCONTROL_QUERY_CHANNELS,nch); + if(strcmp(filt_name,"ao2")==0) return ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_CHANNELS,nch); else if(nch==filt->conf.nch) return MPXP_True; return MPXP_False; } Modified: mplayerxp/postproc/af_ao2.cpp =================================================================== --- mplayerxp/postproc/af_ao2.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/af_ao2.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -20,23 +20,23 @@ { unsigned i,ii; int rval; - rval=ao_control(ao_data,AOCONTROL_QUERY_RATE,irate); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_RATE,irate); if(rval == MPXP_True) return irate; for(i=0;i<sizeof(rates)/sizeof(unsigned)-1;i++) { if(irate >= rates[i] && irate < rates[i+1]) break; } ii=i; for(;i<sizeof(rates)/sizeof(unsigned);i++) { - rval=ao_control(ao_data,AOCONTROL_QUERY_RATE,rates[i]); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_RATE,rates[i]); if(rval == MPXP_True) return rates[i]; } i=ii; for(;i<sizeof(rates)/sizeof(unsigned);i--) { - rval=ao_control(ao_data,AOCONTROL_QUERY_RATE,rates[i]); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_RATE,rates[i]); if(rval == MPXP_True) return rates[i]; } for(i=0;i<sizeof(rates)/sizeof(unsigned);i++) { - rval=ao_control(ao_data,AOCONTROL_QUERY_RATE,rates[i]); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_RATE,rates[i]); if(rval == MPXP_True) return rates[i]; } return 44100; @@ -46,14 +46,14 @@ { unsigned i; int rval; - rval=ao_control(ao_data,AOCONTROL_QUERY_CHANNELS,ich); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_CHANNELS,ich); if(rval == MPXP_True) return ich; for(i=ich>1?ich:1;i<AF_NCH;i++) { - rval=ao_control(ao_data,AOCONTROL_QUERY_CHANNELS,i); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_CHANNELS,i); if(rval == MPXP_True) return i; } for(i=1;i<AF_NCH;i++) { - rval=ao_control(ao_data,AOCONTROL_QUERY_CHANNELS,i); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_CHANNELS,i); if(rval == MPXP_True) return i; } return 2; @@ -87,7 +87,7 @@ { unsigned i,j; int rval; - rval=ao_control(ao_data,AOCONTROL_QUERY_FORMAT,ifmt); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_FORMAT,ifmt); if(rval == MPXP_True) return ifmt; rval=-1; for(i=0;i<sizeof(cvt_list)/sizeof(fmt_cvt_t);i++) { @@ -97,7 +97,7 @@ i=rval; for(j=0;j<20;j++) { if(cvt_list[i].cvt_fourcc[j]==0) break; - rval=ao_control(ao_data,AOCONTROL_QUERY_FORMAT,cvt_list[i].cvt_fourcc[j]); + rval=ao_control(mpxp_context().audio().output,AOCONTROL_QUERY_FORMAT,cvt_list[i].cvt_fourcc[j]); if(rval == MPXP_True) return cvt_list[i].cvt_fourcc[j]; } return AFMT_S16_LE; @@ -128,7 +128,7 @@ switch(cmd){ case AF_CONTROL_SHOWCONF: { char sbuf[256]; - const ao_info_t*info=ao_get_info(ao_data); + const ao_info_t*info=ao_get_info(mpxp_context().audio().output); MSG_INFO("AO-CONF: [%s] %uHz nch=%u %s (%3.1f-kbit)\n" ,info->short_name,s->rate,s->nch,mpaf_fmt2str(s->format,sbuf,sizeof(sbuf)) ,(s->rate*s->nch*(s->format&MPAF_BPS_MASK)*8)*0.001f); Modified: mplayerxp/postproc/libmenu/menu.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/libmenu/menu.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -26,7 +26,7 @@ #include "menu.h" #include "pp_msg.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output extern menu_info_t menu_info_cmdlist; extern menu_info_t menu_info_pt; @@ -128,7 +128,7 @@ int bl = BUF_STEP, br = 0; int f, fd; #ifndef HAVE_FREETYPE - if(vo_data->font == NULL) + if(mpxp_context().video().output->font == NULL) return 0; #endif fd = open(cfg_file, O_RDONLY); @@ -269,8 +269,8 @@ // return the real height of a char: static inline int get_height(int c,int h){ int font; - if ((font=vo_data->font->font[c])>=0) - if(h<vo_data->font->pic_a[font]->h) h=vo_data->font->pic_a[font]->h; + if ((font=mpxp_context().video().output->font->font[c])>=0) + if(h<mpxp_context().video().output->font->pic_a[font]->h) h=mpxp_context().video().output->font->pic_a[font]->h; return h; } @@ -280,7 +280,7 @@ #if 0 while (*txt) { int c = utf8_get_char((const char**)&txt); - render_one_glyph(vo_data->font, c); + render_one_glyph(mpxp_context().video().output->font, c); } #endif } @@ -335,7 +335,7 @@ void menu_draw_text(mp_image_t* mpi,const char* txt, int x, int y) { const LocalPtr<OSD_Render> draw_alpha(new(zeromem) OSD_Render(mpi->imgfmt)); int font; - int finalize=vo_data->is_final(); + int finalize=mpxp_context().video().output->is_final(); #ifdef USE_FRIBIDI txt = menu_fribidi(txt); @@ -344,14 +344,14 @@ while (*txt) { int c=utf8_get_char((const char**)&txt); - if ((font=vo_data->font->font[c])>=0 && (x + vo_data->font->width[c] <= mpi->w) && (y + vo_data->font->pic_a[font]->h <= mpi->h)) - draw_alpha->render(vo_data->font->width[c], vo_data->font->pic_a[font]->h, - vo_data->font->pic_b[font]->bmp+vo_data->font->start[c], - vo_data->font->pic_a[font]->bmp+vo_data->font->start[c], - vo_data->font->pic_a[font]->w, + if ((font=mpxp_context().video().output->font->font[c])>=0 && (x + mpxp_context().video().output->font->width[c] <= mpi->w) && (y + mpxp_context().video().output->font->pic_a[font]->h <= mpi->h)) + draw_alpha->render(mpxp_context().video().output->font->width[c], mpxp_context().video().output->font->pic_a[font]->h, + mpxp_context().video().output->font->pic_b[font]->bmp+mpxp_context().video().output->font->start[c], + mpxp_context().video().output->font->pic_a[font]->bmp+mpxp_context().video().output->font->start[c], + mpxp_context().video().output->font->pic_a[font]->w, mpi->planes[0] + y * mpi->stride[0] + x * (mpi->bpp>>3), mpi->stride[0],finalize); - x+=vo_data->font->width[c]+vo_data->font->charspace; + x+=mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } } @@ -364,7 +364,7 @@ int sx, xmin, xmax, xmid, xrmin; int ll = 0; int font; - int finalize=vo_data->is_final(); + int finalize=mpxp_context().video().output->is_final(); const LocalPtr<OSD_Render> draw_alpha(new(zeromem) OSD_Render(mpi->imgfmt)); #ifdef USE_FRIBIDI @@ -433,12 +433,12 @@ // Jump some the beginnig text if needed while(sy < ymin && *txt) { int c=utf8_get_char((const char**)&txt); - if(c == '\n' || (warp && ll + vo_data->font->width[c] > w)) { + if(c == '\n' || (warp && ll + mpxp_context().video().output->font->width[c] > w)) { ll = 0; - sy += vo_data->font->height + vspace; + sy += mpxp_context().video().output->font->height + vspace; if(c == '\n') continue; } - ll += vo_data->font->width[c]+vo_data->font->charspace; + ll += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } if(*txt == '\0') // Nothing left to draw return; @@ -448,7 +448,7 @@ int n; if(txt[0] == '\n') { // New line - sy += vo_data->font->height + vspace; + sy += mpxp_context().video().output->font->height + vspace; txt++; continue; } @@ -456,11 +456,11 @@ // Get the length and end of this line for(n = 0, ll = 0 ; txt[n] != '\0' && txt[n] != '\n' ; n++) { unsigned char c = txt[n]; - if(warp && ll + vo_data->font->width[c] > w) break; - ll += vo_data->font->width[c]+vo_data->font->charspace; + if(warp && ll + mpxp_context().video().output->font->width[c] > w) break; + ll += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } line_end = &txt[n]; - ll -= vo_data->font->charspace; + ll -= mpxp_context().video().output->font->charspace; if(align & (MENU_TEXT_HCENTER|MENU_TEXT_RIGHT)) { @@ -470,25 +470,25 @@ int mid = ll/2; // Find the middle point for(n--, ll = 0 ; n <= 0 ; n--) { - ll += vo_data->font->width[(int)txt[n]]+vo_data->font->charspace; - if(ll - vo_data->font->charspace > mid) break; + ll += mpxp_context().video().output->font->width[(int)txt[n]]+mpxp_context().video().output->font->charspace; + if(ll - mpxp_context().video().output->font->charspace > mid) break; } - ll -= vo_data->font->charspace; + ll -= mpxp_context().video().output->font->charspace; sx = xmid + mid - ll; } else// MENU_TEXT_RIGHT) - sx = xmax + vo_data->font->charspace; + sx = xmax + mpxp_context().video().output->font->charspace; // We are after the start point -> go back if(sx > xmin) { for(n-- ; n <= 0 ; n--) { unsigned char c = txt[n]; - if(sx - vo_data->font->width[c] - vo_data->font->charspace < xmin) break; - sx -= vo_data->font->width[c]+vo_data->font->charspace; + if(sx - mpxp_context().video().output->font->width[c] - mpxp_context().video().output->font->charspace < xmin) break; + sx -= mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } } else { // We are before the start point -> go forward for( ; sx < xmin && (&txt[n]) != line_end ; n++) { unsigned char c = txt[n]; - sx += vo_data->font->width[c]+vo_data->font->charspace; + sx += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } } txt = &txt[n]; // Jump to the new start char @@ -501,32 +501,32 @@ } else { for(sx = xrmin ; sx < xmin && txt != line_end ; txt++) { unsigned char c = txt[n]; - sx += vo_data->font->width[c]+vo_data->font->charspace; + sx += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } } while(sx < xmax && txt != line_end) { int c=utf8_get_char((const char**)&txt); - font = vo_data->font->font[c]; + font = mpxp_context().video().output->font->font[c]; if(font >= 0) { - int cs = (vo_data->font->pic_a[font]->h - vo_data->font->height) / 2; - if ((sx + vo_data->font->width[c] < xmax) && (sy + vo_data->font->height < ymax) ) - draw_alpha->render(vo_data->font->width[c], vo_data->font->height, - vo_data->font->pic_b[font]->bmp+vo_data->font->start[c] + - cs * vo_data->font->pic_a[font]->w, - vo_data->font->pic_a[font]->bmp+vo_data->font->start[c] + - cs * vo_data->font->pic_a[font]->w, - vo_data->font->pic_a[font]->w, + int cs = (mpxp_context().video().output->font->pic_a[font]->h - mpxp_context().video().output->font->height) / 2; + if ((sx + mpxp_context().video().output->font->width[c] < xmax) && (sy + mpxp_context().video().output->font->height < ymax) ) + draw_alpha->render(mpxp_context().video().output->font->width[c], mpxp_context().video().output->font->height, + mpxp_context().video().output->font->pic_b[font]->bmp+mpxp_context().video().output->font->start[c] + + cs * mpxp_context().video().output->font->pic_a[font]->w, + mpxp_context().video().output->font->pic_a[font]->bmp+mpxp_context().video().output->font->start[c] + + cs * mpxp_context().video().output->font->pic_a[font]->w, + mpxp_context().video().output->font->pic_a[font]->w, mpi->planes[0] + sy * mpi->stride[0] + sx * (mpi->bpp>>3), mpi->stride[0],finalize); // else //printf("Can't draw '%c'\n",c); } - sx+=vo_data->font->width[c]+vo_data->font->charspace; + sx+=mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } txt = line_end; if(txt[0] == '\0') break; - sy += vo_data->font->height + vspace; + sy += mpxp_context().video().output->font->height + vspace; } } @@ -535,9 +535,9 @@ render_txt(txt); while (*txt) { int c=utf8_get_char((const char**)&txt); - l += vo_data->font->width[c]+vo_data->font->charspace; + l += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } - return l - vo_data->font->charspace; + return l - mpxp_context().video().output->font->charspace; } void menu_text_size(const char* txt,int max_width, int vspace, int warp, int* _w, int* _h) { @@ -547,18 +547,18 @@ render_txt(txt); while (*txt) { int c=utf8_get_char((const char**)&txt); - if(c == '\n' || (warp && i + vo_data->font->width[c] >= max_width)) { + if(c == '\n' || (warp && i + mpxp_context().video().output->font->width[c] >= max_width)) { if(*txt) l++; i = 0; if(c == '\n') continue; } - i += vo_data->font->width[c]+vo_data->font->charspace; + i += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; if(i > w) w = i; } *_w = w; - *_h = (l-1) * (vo_data->font->height + vspace) + vo_data->font->height; + *_h = (l-1) * (mpxp_context().video().output->font->height + vspace) + mpxp_context().video().output->font->height; } @@ -567,12 +567,12 @@ render_txt(txt); while (*txt) { int c=utf8_get_char((const char**)&txt); - if(c == '\n' || i + vo_data->font->width[c] > max_width) { + if(c == '\n' || i + mpxp_context().video().output->font->width[c] > max_width) { l++; i = 0; if(c == '\n') continue; } - i += vo_data->font->width[c]+vo_data->font->charspace; + i += mpxp_context().video().output->font->width[c]+mpxp_context().video().output->font->charspace; } return l; } @@ -586,10 +586,10 @@ txt++; break; } - i += vo_data->font->width[c]; + i += mpxp_context().video().output->font->width[c]; if(i >= max_width) break; - i += vo_data->font->charspace; + i += mpxp_context().video().output->font->charspace; } return txt; } @@ -610,7 +610,7 @@ if(g < 1) g = 1; { - int finalize = vo_data->is_final(); + int finalize = mpxp_context().video().output->is_final(); int stride = (w+7)&(~7); // round to 8 unsigned char pic[stride*h],pic_alpha[stride*h]; memset(pic,g,stride*h); Modified: mplayerxp/postproc/libmenu/menu_list.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_list.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/libmenu/menu_list.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -16,7 +16,7 @@ #include "libvo/video_out.h" #include "osdep/keycodes.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output #define IMPL 1 #include "menu_list.h" @@ -45,10 +45,10 @@ dw = w - 2*mpriv->minb; ptr_l = mpriv->ptr ? menu_text_length(mpriv->ptr) : 0; // mpi is too small - if(h - vo_data->font->height <= 0 || w - ptr_l <= 0 || dw <= 0 || dh <= 0) + if(h - mpxp_context().video().output->font->height <= 0 || w - ptr_l <= 0 || dw <= 0 || dh <= 0) return; - th = menu_text_num_lines(mpriv->title,dw) * (mpriv->vspace + vo_data->font->height) + mpriv->vspace; + th = menu_text_num_lines(mpriv->title,dw) * (mpriv->vspace + mpxp_context().video().output->font->height) + mpriv->vspace; // the selected item is hidden, find a visible one if(mpriv->current->hide) { @@ -78,17 +78,17 @@ else y = mpriv->minb; - need_h = count * (mpriv->vspace + vo_data->font->height) - mpriv->vspace; + need_h = count * (mpriv->vspace + mpxp_context().video().output->font->height) - mpriv->vspace; if( need_h + th > dh) { int start,end; - mpriv->disp_lines = (dh + mpriv->vspace - th) / (mpriv->vspace + vo_data->font->height); + mpriv->disp_lines = (dh + mpriv->vspace - th) / (mpriv->vspace + mpxp_context().video().output->font->height); if(mpriv->disp_lines < 4) { th = 0; - mpriv->disp_lines = (dh + mpriv->vspace) / ( vo_data->font->height + mpriv->vspace); + mpriv->disp_lines = (dh + mpriv->vspace) / ( mpxp_context().video().output->font->height + mpriv->vspace); } // Too smoll if(mpriv->disp_lines < 1) return; - need_h = mpriv->disp_lines*(mpriv->vspace + vo_data->font->height) - mpriv->vspace; + need_h = mpriv->disp_lines*(mpriv->vspace + mpxp_context().video().output->font->height) - mpriv->vspace; start = sidx - (mpriv->disp_lines/2); if(start < 0) start = 0; @@ -126,13 +126,13 @@ dy += th; } - for( ; m != NULL && dy + vo_data->font->height < dh ; m = m->next ) { + for( ; m != NULL && dy + mpxp_context().video().output->font->height < dh ; m = m->next ) { if(m->hide) continue; if(m == mpriv->current) { if(mpriv->ptr_bg >= 0) menu_draw_box(mpi,mpriv->ptr_bg,mpriv->ptr_bg_alpha, x < 0 ? (mpi->w-bg_w)/2 : x-mpriv->minb,dy+y-mpriv->vspace/2, - bg_w,vo_data->font->height + mpriv->vspace); + bg_w,mpxp_context().video().output->font->height + mpriv->vspace); if(ptr_l > 0) menu_draw_text_full(mpi,mpriv->ptr, x < 0 ? (mpi->w - need_w) / 2 + ptr_l : x, @@ -143,14 +143,14 @@ } else if(mpriv->item_bg >= 0) menu_draw_box(mpi,mpriv->item_bg,mpriv->item_bg_alpha, x < 0 ? (mpi->w-bg_w)/2 : x-mpriv->minb,dy+y-mpriv->vspace/2, - bg_w,vo_data->font->height + mpriv->vspace); + bg_w,mpxp_context().video().output->font->height + mpriv->vspace); menu_draw_text_full(mpi,m->txt, x < 0 ? (mpi->w - need_w) / 2 + ptr_l : x + ptr_l, dy+y,dw-ptr_l,dh - dy, mpriv->vspace,0, MENU_TEXT_TOP|MENU_TEXT_LEFT, MENU_TEXT_TOP|MENU_TEXT_LEFT); - dy += vo_data->font->height + mpriv->vspace; + dy += mpxp_context().video().output->font->height + mpriv->vspace; } } Modified: mplayerxp/postproc/libmenu/menu_txt.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_txt.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/libmenu/menu_txt.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -20,7 +20,7 @@ #include "libvo/video_out.h" #include "osdep/keycodes.h" #include "pp_msg.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output struct menu_priv_s { char** lines; @@ -98,13 +98,13 @@ static void draw(menu_t* menu,mp_image_t* mpi) { int x = mpriv->minb; int y = mpriv->minb; - //int th = 2*mpriv->hspace + vo_data->font->height; + //int th = 2*mpriv->hspace + mpxp_context().video().output->font->height; int i,end; if(x < 0) x = 8; if(y < 0) y = 8; - mpriv->disp_lines = (mpi->h + mpriv->hspace - 2*mpriv->minb) / ( vo_data->font->height + mpriv->hspace); + mpriv->disp_lines = (mpi->h + mpriv->hspace - 2*mpriv->minb) / ( mpxp_context().video().output->font->height + mpriv->hspace); if(mpriv->num_lines - mpriv->cur_line < mpriv->disp_lines) { i = mpriv->num_lines - 1 - mpriv->disp_lines; if(i < 0) i = 0; @@ -117,7 +117,7 @@ for( ; i < end ; i++) { menu_draw_text(mpi,mpriv->lines[i],x,y); - y += vo_data->font->height + mpriv->hspace; + y += mpxp_context().video().output->font->height + mpriv->hspace; } } Modified: mplayerxp/postproc/vf.cpp =================================================================== --- mplayerxp/postproc/vf.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/vf.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -18,7 +18,7 @@ #include "osdep/fastmemcpy.h" #include "libmpconf/codec-cfg.h" #include "pp_msg.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output extern const vf_info_t vf_info_1bpp; extern const vf_info_t vf_info_2xsai; @@ -645,7 +645,7 @@ _this->conf.h=h; _this->conf.fourcc=fmt; if(reset_cache) mpxp_reset_vcache(); - vo_data->reset(); + mpxp_context().video().output->reset(); } } _this=first; Modified: mplayerxp/postproc/vf_expand.cpp =================================================================== --- mplayerxp/postproc/vf_expand.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/vf_expand.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -19,7 +19,7 @@ #include "libvo/sub.h" #endif #include "pp_msg.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output struct vf_priv_t { int up_h,dn_h; @@ -36,7 +36,7 @@ vf->priv->w=width; vf->priv->h=height; if(vf->priv->dn_h==-1 || vf->priv->up_h==-1) - vf->priv->dn_h=vf->priv->up_h=(get_osd_height(vo_data,OSD_PB_START,0)*4)/3; + vf->priv->dn_h=vf->priv->up_h=(get_osd_height(mpxp_context().video().output,OSD_PB_START,0)*4)/3; h=height+vf->priv->up_h+vf->priv->dn_h; dh=d_height+vf->priv->up_h+vf->priv->dn_h; return vf_next_config(vf,width,h,d_width,dh,flags,outfmt); Modified: mplayerxp/postproc/vf_vo.cpp =================================================================== --- mplayerxp/postproc/vf_vo.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/postproc/vf_vo.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -12,7 +12,7 @@ #include "libvo/video_out.h" #include "libvo/dri_vo.h" #include "pp_msg.h" -#include "mplayerxp.h" // vo_data +#include "mplayerxp.h" // mpxp_context().video().output //===========================================================================// struct vf_priv_t { @@ -26,7 +26,7 @@ static void __FASTCALL__ print_conf(vf_instance_t* vf) { - const vo_info_t *info = vo_data->get_info(); + const vo_info_t *info = mpxp_context().video().output->get_info(); MSG_INFO("VO-CONF: [%s] %dx%d => %dx%d %s %s%s%s%s\n",info->short_name, vf->priv->sw, vf->priv->sh, vf->priv->dw, vf->priv->dh, @@ -63,7 +63,7 @@ // save vo's stride capability for the wanted colorspace: vf->default_caps=query_format(vf,outfmt,d_width,d_height);// & VFCAP_ACCEPT_STRIDE; - if(MPXP_Ok!=vo_data->configure(vf->parent,width,height,d_width,d_height,flags,"MPlayerXP",outfmt)) + if(MPXP_Ok!=mpxp_context().video().output->configure(vf->parent,width,height,d_width,d_height,flags,"MPlayerXP",outfmt)) return 0; vf->priv->is_planar=vo_describe_fourcc(outfmt,&vf->priv->vd); vf->conf.w=d_width; @@ -81,12 +81,12 @@ case VFCTRL_SET_EQUALIZER: { vf_equalizer_t *eq=reinterpret_cast<vf_equalizer_t*>(data); if(!vo_config_count) return MPXP_False; // vo not configured? - return vo_data->ctrl(VOCTRL_SET_EQUALIZER, eq); + return mpxp_context().video().output->ctrl(VOCTRL_SET_EQUALIZER, eq); } case VFCTRL_GET_EQUALIZER: { vf_equalizer_t *eq=reinterpret_cast<vf_equalizer_t*>(data); if(!vo_config_count) return MPXP_False; // vo not configured? - return vo_data->ctrl(VOCTRL_GET_EQUALIZER, eq); + return mpxp_context().video().output->ctrl(VOCTRL_GET_EQUALIZER, eq); } } // return video_out->control_vf(request,data); @@ -96,12 +96,12 @@ static int __FASTCALL__ query_format(vf_instance_t* vf, unsigned int fmt,unsigned w,unsigned h){ dri_surface_cap_t dcaps; int rflags; - uint32_t flags=vo_data->query_format(&fmt,w,h); + uint32_t flags=mpxp_context().video().output->query_format(&fmt,w,h); MSG_DBG2("[vf_vo] %i=query_format(%s)\n",flags,vo_format_name(fmt)); rflags=0; UNUSED(vf); if(flags) { - vo_data->get_surface_caps(&dcaps); + mpxp_context().video().output->get_surface_caps(&dcaps); if(dcaps.caps&DRI_CAP_UPSCALER) rflags |=VFCAP_HWSCALE_UP; if(dcaps.caps&DRI_CAP_DOWNSCALER) rflags |=VFCAP_HWSCALE_DOWN; if(rflags&(VFCAP_HWSCALE_UP|VFCAP_HWSCALE_DOWN)) rflags |= VFCAP_SWSCALE; @@ -116,8 +116,8 @@ mp_image_t *mpi){ MPXP_Rc retval; UNUSED(vf); - int finalize = vo_data->is_final(); - retval=vo_data->get_surface(mpi); + int finalize = mpxp_context().video().output->is_final(); + retval=mpxp_context().video().output->get_surface(mpi); if(retval==MPXP_Ok) { mpi->flags |= MP_IMGFLAG_FINAL|MP_IMGFLAG_DIRECT; if(finalize) mpi->flags |= MP_IMGFLAG_FINALIZED; @@ -130,7 +130,7 @@ if(!vo_config_count) return 0; // vo not configured? if(!(mpi->flags & MP_IMGFLAG_FINAL) || (vf_first(vf)==vf && !(mpi->flags & MP_IMGFLAG_RENDERED))) { MSG_DBG2("vf_vo_put_slice was called(%u): %u %u %u %u\n",mpi->xp_idx,mpi->x,mpi->y,mpi->w,mpi->h); - vo_data->draw_slice(mpi); + mpxp_context().video().output->draw_slice(mpi); } return 1; } Modified: mplayerxp/xmpcore/xmp_aplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -44,8 +44,8 @@ float pts=HUGE; int ret=0; - ao_data->pts=sh_audio->timer*90000.0; - playsize=ao_get_space(ao_data); + mpxp_context().audio().output->pts=sh_audio->timer*90000.0; + playsize=ao_get_space(mpxp_context().audio().output); if(!playsize) { if(sh_video) @@ -87,9 +87,9 @@ } if(playsize>sh_audio->a_buffer_len) playsize=sh_audio->a_buffer_len; - if(xmp_test_model(XMP_Run_AudioPlayer)) dec_ahead_audio_delay=ao_get_delay(ao_data); + if(xmp_test_model(XMP_Run_AudioPlayer)) dec_ahead_audio_delay=ao_get_delay(mpxp_context().audio().output); - playsize=ao_play(ao_data,sh_audio->a_buffer,playsize,0); + playsize=ao_play(mpxp_context().audio().output,sh_audio->a_buffer,playsize,0); if(playsize>0){ sh_audio->a_buffer_len-=playsize; @@ -99,7 +99,7 @@ if(mpxp_context().use_pts_fix2) { if(sh_audio->a_pts != HUGE) { sh_audio->a_pts_pos-=playsize; - if(sh_audio->a_pts_pos > -ao_get_delay(ao_data)*sh_audio->af_bps) { + if(sh_audio->a_pts_pos > -ao_get_delay(mpxp_context().audio().output)*sh_audio->af_bps) { sh_audio->timer+=playsize/(float)(sh_audio->af_bps); } else { sh_audio->timer=sh_audio->a_pts-(float)sh_audio->a_pts_pos/(float)sh_audio->af_bps; @@ -142,7 +142,7 @@ int eof = 0; struct timeval now; float d; - const float MAX_AUDIO_TIME = (float)ao_get_space(ao_data) / sh_audio->af_bps + ao_get_delay(ao_data); + const float MAX_AUDIO_TIME = (float)ao_get_space(mpxp_context().audio().output) / sh_audio->af_bps + ao_get_delay(mpxp_context().audio().output); float min_audio_time = MAX_AUDIO_TIME; float min_audio, max_audio; int samples, collect_samples; @@ -230,7 +230,7 @@ } LOCK_AUDIO_PLAY(); - d = ao_get_delay(ao_data) - min_audio_time; + d = ao_get_delay(mpxp_context().audio().output) - min_audio_time; if( d > 0 ) { gettimeofday(&now,NULL); audio_play_timeout.tv_nsec = now.tv_usec * 1000 + d*1000000000l; Modified: mplayerxp/xmpcore/xmp_vplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-04 11:04:20 UTC (rev 504) +++ mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-04 11:26:21 UTC (rev 505) @@ -41,8 +41,8 @@ } static void show_status_line_no_apts(sh_audio_t* sh_audio,float v_pts) { - if(mp_conf.av_sync_pts && sh_audio && (!xp_core->audio->eof || ao_get_delay(ao_data))) { - float a_pts = sh_audio->timer-ao_get_delay(ao_data); + if(mp_conf.av_sync_pts && sh_audio && (!xp_core->audio->eof || ao_get_delay(mpxp_context().audio().output))) { + float a_pts = sh_audio->timer-ao_get_delay(mpxp_context().audio().output); MSG_STATUS("A:%6.1f V:%6.1f A-V:%7.3f ct:%7.3f %3d/%3d %2d%% %2d%% %4.1f%% %d\r" ,a_pts ,v_pts @@ -70,7 +70,7 @@ { if(mpxp_context().use_pts_fix2 && sh_audio) { if(sh_video->chapter_change == -1) { /* First frame after seek */... [truncated message content] |