From b8f39a4f863e6da5eb7b98c5045f4ff4b82f1d88 Mon Sep 17 00:00:00 2001 From: pontscho Date: Mon, 22 Apr 2002 21:36:12 +0000 Subject: fix audio only files play git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5790 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/interface.c | 36 +++++++++++++++++++++++++++++++++++- Gui/interface.h | 16 ++++++++++------ mplayer.c | 32 ++++++++++++++++---------------- 3 files changed, 61 insertions(+), 23 deletions(-) diff --git a/Gui/interface.c b/Gui/interface.c index 5608c22c04..76939f43ad 100644 --- a/Gui/interface.c +++ b/Gui/interface.c @@ -13,8 +13,11 @@ #include "mplayer/mplayer.h" #include "app.h" #include "../libvo/x11_common.h" +#include "../libvo/video_out.h" #include "../input/input.h" + #include "../libmpdemux/stream.h" +#include "../libmpdemux/demuxer.h" guiInterface_t guiIntfStruct; @@ -45,6 +48,20 @@ int guiCMDArray[] = evSkinBrowser }; +typedef struct +{ + demux_stream_t *ds; + unsigned int format; + struct codecs_st *codec; + int inited; + // output format: + float timer; + float fps; + float frametime; + int i_bps; + int disp_w,disp_h; +} tmp_sh_video_t; + void guiGetEvent( int type,char * arg ) { #ifdef USE_DVDREAD @@ -70,6 +87,23 @@ void guiGetEvent( int type,char * arg ) case guiSetFileName: if ( arg ) guiSetFilename( guiIntfStruct.Filename,arg ); break; + case guiSetAudioOnly: + guiIntfStruct.AudioOnly=(int)arg; + if ( (int)arg ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); + else wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow ); + break; + case guiReDrawSubWindow: + wsPostRedisplay( &appMPlayer.subWindow ); + break; + case guiSetShVideo: + if ( arg ) + { + tmp_sh_video_t * sh_video = (tmp_sh_video_t *)arg; + mplResizeToMovieSize( sh_video->disp_w,sh_video->disp_h ); + guiIntfStruct.MovieWidth=sh_video->disp_w; + guiIntfStruct.MovieHeight=sh_video->disp_h; + } + break; #ifdef USE_DVDREAD case guiSetDVD: guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts; @@ -106,7 +140,7 @@ void guiGetEvent( int type,char * arg ) void guiEventHandling( void ) { - if ( use_gui && !guiIntfStruct.Playing ) wsHandleEvents(); + if ( ( use_gui && !guiIntfStruct.Playing )||( guiIntfStruct.AudioOnly ) ) wsHandleEvents(); gtkEventHandling(); mplTimerHandler(); // handle GUI timer events } diff --git a/Gui/interface.h b/Gui/interface.h index d7a1a4b006..28c5d67000 100644 --- a/Gui/interface.h +++ b/Gui/interface.h @@ -75,6 +75,7 @@ typedef struct int Track; int AudioType; int StreamType; + int AudioOnly; int TimeSec; int LengthInSec; int FrameDrop; @@ -93,12 +94,15 @@ typedef struct extern guiInterface_t guiIntfStruct; -#define guiXEvent 0 -#define guiCEvent 1 -#define guiIEvent 2 -#define guiSetDVD 3 -#define guiSetFileName 4 -#define guiSetState 5 +#define guiXEvent 0 +#define guiCEvent 1 +#define guiIEvent 2 +#define guiSetDVD 3 +#define guiSetFileName 4 +#define guiSetState 5 +#define guiSetAudioOnly 6 +#define guiReDrawSubWindow 7 +#define guiSetShVideo 8 #define guiSetStop 0 #define guiSetPlay 1 diff --git a/mplayer.c b/mplayer.c index 05b1a009cb..5ec8fac784 100644 --- a/mplayer.c +++ b/mplayer.c @@ -769,6 +769,7 @@ if(!use_stdin && !slave_mode){ #ifdef HAVE_NEW_GUI if ( use_gui ) { + guiGetEvent( guiReDrawSubWindow,0 ); while ( guiIntfStruct.Playing != 1 ) { #ifdef HAVE_NEW_INPUT @@ -1280,22 +1281,6 @@ if(auto_quality>0){ // ========== Init display (sh_video->disp_w*sh_video->disp_h/out_fmt) ============ -#ifdef HAVE_NEW_GUI - if ( use_gui ) - { - mplResizeToMovieSize( sh_video->disp_w,sh_video->disp_h ); - guiIntfStruct.MovieWidth=sh_video->disp_w; - guiIntfStruct.MovieHeight=sh_video->disp_h; - guiIntfStruct.StreamType=stream->type; - guiGetEvent( guiSetFileName,filename ); - if ( sh_audio ) guiIntfStruct.AudioType=sh_audio->channels; - else guiIntfStruct.AudioType=0; -#ifdef USE_DVDREAD - if ( stream->type == STREAMTYPE_DVD ) guiGetEvent( guiSetDVD,(char *)stream->priv ); -#endif - } -#endif - current_module="init_vo_vaa"; if(video_out->control(VOCTRL_QUERY_VAA, &vo_vaa)==VO_NOTIMPL) @@ -1327,6 +1312,20 @@ if(!sh_video) osd_level = 0; fflush(stdout); +#ifdef HAVE_NEW_GUI + if ( use_gui ) + { + guiGetEvent( guiSetShVideo,(char *)sh_video ); + guiGetEvent( guiSetFileName,filename ); + guiIntfStruct.StreamType=stream->type; + if ( sh_audio ) guiIntfStruct.AudioType=sh_audio->channels; else guiIntfStruct.AudioType=0; + if ( !sh_video && sh_audio ) guiGetEvent( guiSetAudioOnly,1 ); else guiGetEvent( guiSetAudioOnly,0 ); +#ifdef USE_DVDREAD + if ( stream->type == STREAMTYPE_DVD ) guiGetEvent( guiSetDVD,(char *)stream->priv ); +#endif + } +#endif + { //int frame_corr_num=0; // //float v_frame=0; // Video @@ -2734,6 +2733,7 @@ if(rel_seek_secs || abs_seek_pos){ #ifdef HAVE_NEW_GUI if(use_gui){ + guiEventHandling(); if(demuxer->file_format==DEMUXER_TYPE_AVI && sh_video->video.dwLength>2){ // get pos from frame number / total frames guiIntfStruct.Position=(float)d_video->pack_no*100.0f/sh_video->video.dwLength; -- cgit v1.2.3