Is there a current Mplayer.sh for apid selection?

Message ID 42250A61.4070103@syphir.sytes.net
State New
Headers

Commit Message

C.Y.M March 2, 2005, 12:35 a.m. UTC
  Lars Altenhain wrote:
> Hi,
> 
> C.Y.M schrieb:
> 
>> Since Mplayer 0.9.8, there was a new option to select the audio pid 
>> during play back.  There were a few patches floating around and the 
>> one attached to this email is what I am currently using against the 
>> current version of mplayer.sh. But, I am having a problem with this 
>> patch as it sometimes selects the secondary audio track (which is 
>> usually in a different language) and I am unable to get mplayer to use 
>> the primary apid.  I have attached this patch as reference, but there 
>> is something still wrong with the audio selection. Does anyone have a 
>> working solution?
>>
>> Best Regards,
>>
> This effect is due to the different numbering scheme for audio tracks in 
> mpeg and avi files (avi: 1-99, mpeg: 0-31, see man mplayer). Some time 
> ago I had posted a patch for the mplayer.sh in the forum on vdrportal.de 
> (http://www.vdrportal.de/board/thread.php?postid=177058#post177058). 
> This patch increases the AID variable by 1 if an avi file is detected. 
> And it also checks if the selected audio track is available in the file. 
> If the selected audio track number is not present in the file, the -aid 
> parameter is not used in the mplayer command line. This patch is for an 
> older version of the mplayer.sh file, so I think it doesn't apply 
> without some small changes.
> 

Thank you. I have created a new patch for mplayer.sh-0.8.6 using the information 
kindly provided.

Best Regards,
  

Comments

C.Y.M March 2, 2005, 12:51 a.m. UTC | #1
C.Y.M wrote:
>> This effect is due to the different numbering scheme for audio tracks 
>> in mpeg and avi files (avi: 1-99, mpeg: 0-31, see man mplayer). Some 
>> time ago I had posted a patch for the mplayer.sh in the forum on 
>> vdrportal.de 
>> (http://www.vdrportal.de/board/thread.php?postid=177058#post177058). 
>> This patch increases the AID variable by 1 if an avi file is detected. 
>> And it also checks if the selected audio track is available in the 
>> file. If the selected audio track number is not present in the file, 
>> the -aid parameter is not used in the mplayer command line. This patch 
>> is for an older version of the mplayer.sh file, so I think it doesn't 
>> apply without some small changes.
>>
> 
> Thank you. I have created a new patch for mplayer.sh-0.8.6 using the 
> information kindly provided.
> 

OK, sorry for all the confusion, but this patch still does not work correctly. 
I have even hard-coded the AID variable to "0" in the mplayer.sh script and the 
secondary audio track is still selected.  I am only testing this against native 
vdr files (not avi or mpegs).  Perhaps there is something different about 
playing native vdr files?

Best Regards,
C.Y.M.
  

Patch

--- mplayer.sh.orig	2005-03-01 16:18:07.000000000 -0800
+++ mplayer.sh	2005-03-01 16:16:23.000000000 -0800
@@ -265,7 +259,7 @@ 
   # output: variable ORIG_X and ORIG_Y (global)
 
   # variable definitions
-  local TEMP1 MPLAYER_RETURN
+  local TEMP1 VALID_AID AVI_FORMAT MPLAYER_RETURN
   ORIG_X=0; ORIG_Y=0
 
   TEMP1=`$MPLAYER -identify -vo null -ao null -frames 0 "$FILE" 2>/dev/null | grep -i -e "^ID_"`
@@ -297,6 +291,19 @@ 
   AUDIO_CODEC=`echo "$TEMP1"|grep ID_AUDIO_CODEC|cut -d"=" -f2`
   debugmsg "parsed output for AUDIO_CODEC:" $AUDIO_CODEC
 
+  AVI_FORMAT=`file "$FILE" 2>/dev/null | grep -i -e "AVI"`
+  if test "$AVI_FORMAT" != ""; then
+      echolog "AVI format detected, increasing audiostreamid by 1"
+      AID=$(($AID+1))
+  fi
+
+  VALID_AID=`$MPLAYER -aid $AID -identify -vo null -ao null -frames 0 "$FILE" 2>/dev/null | grep -i -e "^ID_AUDIO"`
+
+  if test "$VALID_AID" == ""; then
+      echolog "selected audiostream not in file, using default"
+      AID=-1;
+  fi
+  
   return;
 }
 
@@ -481,7 +488,8 @@ 
 declare ORIG_FPS NEW_FPS ORIG_ASPECT VIDEO_FORMAT AUDIO_CODEC
 declare CMDLINE AOUT REMOTE USERDEF SUFFIX
 declare FILE="$1"
-declare SLAVE="$2"
+declare AID="$2"
+declare SLAVE="$3"
 declare -a XResPAL[0]
 declare -a XResNTSC[0]
 declare FDSTR=""
@@ -552,6 +562,9 @@ 
     fi
 fi
 
+# small patch:
+if test $AID -gt 0; then CMDLINE="$CMDLINE -aid $AID"; fi
+
 debugvar CMDLINE "$CMDLINE"
 exec $CMDLINE "$FILE"
 exit