From 73d2051d619873011f0c6e053ae6b2e8bcc96c7b Mon Sep 17 00:00:00 2001 From: pontscho Date: Fri, 29 Nov 2002 00:58:25 +0000 Subject: =?UTF-8?q?-=20audio=20track=20handling=20in=20menu=20(idea=20from?= =?UTF-8?q?=20R=C3=BCdiger=20Kuhlmann)=20-=20some=20userfriendly=20changes?= =?UTF-8?q?=20in=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8313 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/app.c | 3 ++- Gui/app.h | 3 ++- Gui/interface.c | 3 +++ Gui/interface.h | 2 ++ Gui/mplayer/gtk/menu.c | 38 ++++++++++++++++++++++++++------------ Gui/mplayer/mw.c | 7 +++++++ 6 files changed, 42 insertions(+), 14 deletions(-) (limited to 'Gui') diff --git a/Gui/app.c b/Gui/app.c index 9569c76ffe..bb17908de4 100644 --- a/Gui/app.c +++ b/Gui/app.c @@ -62,7 +62,8 @@ evName evNames[] = { evSetURL, "evSetURL" }, { evLoadAudioFile, "evLoadAudioFile" }, { evDropSubtitle, "evDropSubtitle" }, - { evSetAspect, "evSetAspect" } + { evSetAspect, "evSetAspect" }, + { evSetAudio, "evSetAudio" } }; int evBoxs = sizeof( evNames ) / sizeof( evName ); diff --git a/Gui/app.h b/Gui/app.h index c2c792fcc6..38a4a6c29f 100644 --- a/Gui/app.h +++ b/Gui/app.h @@ -57,7 +57,8 @@ #define evPlayNetwork 41 #define evLoadAudioFile 42 #define evSetAspect 44 -// 45 ... +#define evSetAudio 45 +// 46 ... #define evExit 1000 diff --git a/Gui/interface.c b/Gui/interface.c index 3bf2ef7aef..a12fcbd383 100644 --- a/Gui/interface.c +++ b/Gui/interface.c @@ -454,6 +454,9 @@ int guiGetEvent( int type,char * arg ) case guiReDrawSubWindow: wsPostRedisplay( &appMPlayer.subWindow ); break; + case guiSetDemuxer: + guiIntfStruct.demuxer=(void *)arg; + break; case guiSetShVideo: { if ( !appMPlayer.subWindow.isFullScreen ) diff --git a/Gui/interface.h b/Gui/interface.h index d16a86d618..83318e1566 100644 --- a/Gui/interface.h +++ b/Gui/interface.h @@ -59,6 +59,7 @@ typedef struct guiUnknowErrorStruct error; void * sh_video; + void * demuxer; void * event_struct; int DiskChanged; @@ -123,6 +124,7 @@ extern guiInterface_t guiIntfStruct; #define guiSetDefaults 12 #define guiSetValues 13 #define guiSetFileFormat 14 +#define guiSetDemuxer 15 #define guiSetStop 0 #define guiSetPlay 1 diff --git a/Gui/mplayer/gtk/menu.c b/Gui/mplayer/gtk/menu.c index 6e69682418..b2ed3461a9 100644 --- a/Gui/mplayer/gtk/menu.c +++ b/Gui/mplayer/gtk/menu.c @@ -14,6 +14,8 @@ #include "../widgets.h" #include "../app.h" +#include "../../../libmpdemux/demuxer.h" + void ActivateMenuItem( int Item ) { // fprintf( stderr,"[menu] item: %d.%d\n",Item&0xffff,Item>>16 ); @@ -411,11 +413,29 @@ GtkWidget * create_PopUpMenu( void ) gtk_widget_set_sensitive( MenuItem,FALSE ); } #endif - AspectMenu=AddSubMenu( Menu,MSGTR_MENU_AspectRatio ); - AddMenuItem( AspectMenu,MSGTR_MENU_Original,( 1 << 16 ) + evSetAspect ); - AddMenuItem( AspectMenu,"16:9",( 2 << 16 ) + evSetAspect ); - AddMenuItem( AspectMenu,"4:3",( 3 << 16 ) + evSetAspect ); - AddMenuItem( AspectMenu,"2.35",( 4 << 16 ) + evSetAspect ); + + if ( guiIntfStruct.Playing ) + { + AspectMenu=AddSubMenu( Menu,MSGTR_MENU_AspectRatio ); + AddMenuItem( AspectMenu,MSGTR_MENU_Original,( 1 << 16 ) + evSetAspect ); + AddMenuItem( AspectMenu,"16:9",( 2 << 16 ) + evSetAspect ); + AddMenuItem( AspectMenu,"4:3",( 3 << 16 ) + evSetAspect ); + AddMenuItem( AspectMenu,"2.35",( 4 << 16 ) + evSetAspect ); + } + + if ( guiIntfStruct.demuxer ) + { + int i,c = 0; + + for ( i=0;i < MAX_A_STREAMS;i++ ) + if ( ((demuxer_t *)guiIntfStruct.demuxer)->a_streams[i] ) + { + char tmp[32]; + snprintf( tmp,32,"Track %d",i ); + if ( !c ) { SubMenu=AddSubMenu( Menu, "Audio track" ); c=1; } + AddMenuItem( SubMenu,tmp,( i << 16 ) + evSetAudio ); + } + } AddSeparator( Menu ); MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_Mute,muted,evMute ); @@ -424,11 +444,11 @@ GtkWidget * create_PopUpMenu( void ) AddMenuItem( Menu,MSGTR_MENU_SkinBrowser, evSkinBrowser ); AddMenuItem( Menu,MSGTR_MENU_Preferences, evPreferences ); AddMenuItem( Menu,MSGTR_Equalizer, evEqualizer ); - AddSeparator( Menu ); if ( guiIntfStruct.NoWindow == False ) { int b1 = 0, b2 = 0; + AddSeparator( Menu ); if ( !appMPlayer.subWindow.isFullScreen && guiIntfStruct.Playing ) { if ( ( appMPlayer.subWindow.Width == guiIntfStruct.MovieWidth * 2 )&& @@ -439,12 +459,6 @@ GtkWidget * create_PopUpMenu( void ) AddMenuCheckItem( Menu,MSGTR_MENU_DoubleSize,b2,evDoubleSize ); AddMenuCheckItem( Menu,MSGTR_MENU_FullScreen,appMPlayer.subWindow.isFullScreen,evFullScreen ); } - else - { - MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_NormalSize" ",0,evNormalSize ); gtk_widget_set_sensitive( MenuItem,FALSE ); - MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_DoubleSize,0,evDoubleSize ); gtk_widget_set_sensitive( MenuItem,FALSE ); - MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_FullScreen,0,evFullScreen ); gtk_widget_set_sensitive( MenuItem,FALSE ); - } AddSeparator( Menu ); AddMenuItem( Menu,MSGTR_MENU_Exit, evExit ); diff --git a/Gui/mplayer/mw.c b/Gui/mplayer/mw.c index fc665761a2..9d69a8d106 100644 --- a/Gui/mplayer/mw.c +++ b/Gui/mplayer/mw.c @@ -270,6 +270,13 @@ void mplEventHandling( int msg,float param ) case evSetURL: gtkShow( evPlayNetwork,NULL ); break; + + case evSetAudio: + if ( !guiIntfStruct.demuxer ) break; + audio_id=(int)param; + if ( guiIntfStruct.StreamType == STREAMTYPE_DVD ) goto play; + guiIntfStruct.FilenameChanged=1; + break; #ifdef HAVE_VCD case evSetVCDTrack: -- cgit v1.2.3