[MPlayer-dev-eng] next-audio/video-track patch

D Richard Felker III dalias at aerifal.cx
Wed Oct 29 05:10:29 CET 2003


On Wed, Oct 29, 2003 at 03:22:57AM +0100, Diego Biurrun wrote:
> Ooops, this is an ancient patch..  Did anybody have a look at it?

IIRC we all agreed it was broken, because it would crash if the new
stream was different codec (or even different codec parameters like
image size/samplerate/channels/etc.)...

Rich

> 
> Diego
> 
> Rüdiger Kuhlmann writes:
>  > Attached the current next-audio/video-track patch, updated to current
>  > mplayer. Thanks for ignoring it for months. It also fixes a segfault and the
>  > unability to package.
>  > 
>  > --- mplayer.c	30 Mar 2003 17:13:04 -0000	1.688
>  > +++ mplayer.c	1 Apr 2003 00:07:25 -0000
>  > @@ -220,6 +220,8 @@
>  >  // streaming:
>  >  int audio_id=-1;
>  >  int video_id=-1;
>  > +int gui_audio_id = -1;
>  > +int gui_video_id = -1;
>  >  int dvdsub_id=-1;
>  >  int vobsub_id=-1;
>  >  static char* audio_lang=NULL;
>  > --- mplayer.h	30 Mar 2003 17:07:30 -0000	1.29
>  > +++ mplayer.h	1 Apr 2003 00:07:26 -0000
>  > @@ -53,8 +53,8 @@
>  >  
>  >  extern int auto_quality;
>  >  
>  > -extern int audio_id;
>  > -extern int video_id;
>  > +extern int audio_id, gui_audio_id;
>  > +extern int video_id, gui_video_id;
>  >  extern int dvdsub_id;
>  >  extern int vobsub_id;
>  >  
>  > --- Gui/app.c	20 Mar 2003 12:41:32 -0000	1.23
>  > +++ Gui/app.c	1 Apr 2003 00:07:26 -0000
>  > @@ -62,7 +62,10 @@
>  >    { evSetURL,		 "evSetURL"	       },
>  >    { evLoadAudioFile,	 "evLoadAudioFile"     },
>  >    { evDropSubtitle,      "evDropSubtitle"      },
>  > -  { evSetAspect,	 "evSetAspect"	       }
>  > +  { evSetAspect,	 "evSetAspect"	       },
>  > +  { evSetAudio,		 "evSetAudio"	       },
>  > +  { evAudioNext, 	 "evAudioNext"	       },
>  > +  { evVideoNext, 	 "evVideoNext"	       }
>  >   };
>  >  
>  >  int evBoxs = sizeof( evNames ) / sizeof( evName );
>  > --- Gui/app.h	20 Mar 2003 12:41:32 -0000	1.18
>  > +++ Gui/app.h	1 Apr 2003 00:07:26 -0000
>  > @@ -61,6 +61,9 @@
>  >  #define evSetVideo	    46
>  >  // 47 ...
>  >  
>  > +#define evAudioNext         99
>  > +#define evVideoNext        100
>  > +
>  >  #define evExit              1000
>  >  
>  >  // --- General events ---
>  > Index: Gui/interface.c
>  > ===================================================================
>  > RCS file: /cvsroot/mplayer/main/Gui/interface.c,v
>  > retrieving revision 1.82
>  > diff -u -r1.82 interface.c
>  > --- Gui/interface.c	20 Mar 2003 12:41:33 -0000	1.82
>  > +++ Gui/interface.c	1 Apr 2003 00:07:26 -0000
>  > @@ -38,7 +38,7 @@
>  >  #include "../libmpdemux/demuxer.h"
>  >  #include "../libmpdemux/stheader.h"
>  >  #include "../libmpcodecs/dec_video.h"
>  > -
>  > +#include "../../codec-cfg.h"
>  >  
>  >  #ifdef NEW_CONFIG
>  >    #include "../m_option.h"
>  > @@ -48,6 +48,8 @@
>  >  #endif
>  >  #include "../cfg-mplayer-def.h"
>  >  
>  > +extern int vcd_track;
>  > +
>  >  guiInterface_t guiIntfStruct;
>  >  int guiWinID=-1;
>  >  
>  > @@ -623,6 +625,7 @@
>  >  	 {
>  >  	  sh_video_t * sh = (sh_video_t *)arg;
>  >  	  guiIntfStruct.FPS=sh->fps;
>  > +	  guiIntfStruct.codecname = sh->codec->name;
>  >  	 }
>  >  
>  >  	if ( guiIntfStruct.NoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
>  > Index: Gui/interface.h
>  > ===================================================================
>  > RCS file: /cvsroot/mplayer/main/Gui/interface.h,v
>  > retrieving revision 1.36
>  > diff -u -r1.36 interface.h
>  > --- Gui/interface.h	5 Feb 2003 23:00:44 -0000	1.36
>  > +++ Gui/interface.h	1 Apr 2003 00:07:26 -0000
>  > @@ -109,6 +109,7 @@
>  >     int    AudioFileChanged;
>  >  
>  >     int    SkinChange;
>  > +   char * codecname;
>  >  } guiInterface_t;
>  >  
>  >  extern guiInterface_t guiIntfStruct;
>  > Index: Gui/mplayer/common.c
>  > ===================================================================
>  > RCS file: /cvsroot/mplayer/main/Gui/mplayer/common.c,v
>  > retrieving revision 1.3
>  > diff -u -r1.3 common.c
>  > --- Gui/mplayer/common.c	20 Mar 2003 12:42:09 -0000	1.3
>  > +++ Gui/mplayer/common.c	1 Apr 2003 00:07:26 -0000
>  > @@ -110,12 +110,18 @@
>  >         case 'v': sprintf( tmp,"%3.2f%%",guiIntfStruct.Volume ); strcat( trbuf,tmp ); break;
>  >         case 'V': sprintf( tmp,"%3.1f",guiIntfStruct.Volume ); strcat( trbuf,tmp ); break;
>  >         case 'b': sprintf( tmp,"%3.2f%%",guiIntfStruct.Balance ); strcat( trbuf,tmp ); break;
>  > +       case 'A': if (audio_id == -1) sprintf (tmp, "a"); else sprintf (tmp, "%d", audio_id); strcat (trbuf, tmp); break;
>  > +       case 'W': if (video_id == -1) sprintf (tmp, "a"); else sprintf (tmp, "%d", video_id); strcat (trbuf, tmp); break;
>  >         case 'B': sprintf( tmp,"%3.1f",guiIntfStruct.Balance ); strcat( trbuf,tmp ); break;
>  >         case 'd': sprintf( tmp,"%d",guiIntfStruct.FrameDrop ); strcat( trbuf,tmp ); break;
>  >         case 'x': sprintf( tmp,"%d",guiIntfStruct.MovieWidth ); strcat( trbuf,tmp ); break;
>  >         case 'y': sprintf( tmp,"%d",guiIntfStruct.MovieHeight ); strcat( trbuf,tmp ); break;
>  > -       case 'C': sprintf( tmp,"%s", guiIntfStruct.sh_video? ((sh_video_t *)guiIntfStruct.sh_video)->codec->name : "");
>  > -                 strcat( trbuf,tmp ); break;
>  > +       case 'C': if (guiIntfStruct.codecname) 
>  > +                 {
>  > +                     sprintf (tmp,"%s", guiIntfStruct.codecname);
>  > +                     strcat( trbuf,tmp );
>  > +                 }
>  > +                 break;
>  >         case 's': if ( guiIntfStruct.Playing == 0 ) strcat( trbuf,"s" ); break;
>  >         case 'l': if ( guiIntfStruct.Playing == 1 ) strcat( trbuf,"p" ); break;
>  >         case 'e': if ( guiIntfStruct.Playing == 2 ) strcat( trbuf,"e" ); break;
>  > Index: Gui/mplayer/mw.c
>  > ===================================================================
>  > RCS file: /cvsroot/mplayer/main/Gui/mplayer/mw.c,v
>  > retrieving revision 1.109
>  > diff -u -r1.109 mw.c
>  > --- Gui/mplayer/mw.c	20 Mar 2003 12:42:09 -0000	1.109
>  > +++ Gui/mplayer/mw.c	1 Apr 2003 00:07:26 -0000
>  > @@ -50,7 +50,7 @@
>  >  {
>  >   wItem    * item;
>  >   txSample * image = NULL;
>  > - int        i, type;
>  > + int        i;
>  >  
>  >   if ( appMPlayer.mainWindow.State == wsWindowClosed ) exit_player( MSGTR_Exit_quit );
>  >   
>  > @@ -96,11 +96,43 @@
>  >          gtkShow( evPlayNetwork,NULL );
>  >  	break;
>  >  
>  > +   case evAudioNext:
>  > +        if (!guiIntfStruct.demuxer) break;
>  > +        if (gui_audio_id == -1 && audio_id == -1)
>  > +        {
>  > +          for (gui_audio_id = 0; gui_audio_id < MAX_A_STREAMS; gui_audio_id++)
>  > +            if (((demuxer_t *)guiIntfStruct.demuxer)->a_streams[gui_audio_id])
>  > +              break;
>  > +          gui_audio_id %= MAX_A_STREAMS;
>  > +        }
>  > +        else
>  > +          gui_audio_id = audio_id;
>  > +        for (j = gui_audio_id + 1; j < gui_audio_id + MAX_A_STREAMS; j++)
>  > +          if (((demuxer_t *)guiIntfStruct.demuxer)->a_streams[j % MAX_A_STREAMS])
>  > +            break;
>  > +        iparam = j % MAX_A_STREAMS;
>  > +        /* fall-through */
>  >     case evSetAudio:
>  >          if ( !guiIntfStruct.demuxer || audio_id == iparam ) break;
>  >  	audio_id=iparam;
>  >  	goto play;
>  >  
>  > +   case evVideoNext:
>  > +        if (!guiIntfStruct.demuxer) break;
>  > +        if (gui_video_id == -1 && video_id == -1)
>  > +        {
>  > +          for (gui_video_id = 0; gui_video_id < MAX_A_STREAMS; gui_video_id++)
>  > +            if (((demuxer_t *)guiIntfStruct.demuxer)->v_streams[gui_video_id])
>  > +              break;
>  > +          gui_video_id %= MAX_A_STREAMS;
>  > +        }
>  > +        else
>  > +          gui_video_id = video_id;
>  > +        for (j = gui_video_id + 1; j < gui_video_id + MAX_A_STREAMS; j++)
>  > +          if (((demuxer_t *)guiIntfStruct.demuxer)->v_streams[j % MAX_A_STREAMS])
>  > +            break;
>  > +        iparam = j % MAX_A_STREAMS;
>  > +        /* fall-through */
>  >     case evSetVideo:
>  >          if ( !guiIntfStruct.demuxer || video_id == iparam ) break;
>  >  	video_id=iparam;
>  > --- debian/changelog	15 Feb 2003 15:07:09 -0000	1.31
>  > +++ debian/changelog	1 Apr 2003 00:07:26 -0000
>  > @@ -1,4 +1,4 @@
>  > -mplayer (0.90cvs) unstable; urgency=low
>  > +mplayer (0.90cvs-0) unstable; urgency=low
>  >  
>  >    * this is a placeholder message
>  >  
> 
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng



More information about the MPlayer-dev-eng mailing list