]> granicus.if.org Git - handbrake/commitdiff
0.9.x: add Auto Passthru support to manicure.
authorRodeo <tdskywalker@gmail.com>
Sun, 25 Mar 2012 15:26:18 +0000 (15:26 +0000)
committerRodeo <tdskywalker@gmail.com>
Sun, 25 Mar 2012 15:26:18 +0000 (15:26 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.9.x@4540 b64f7644-9d1e-0410-96f1-a4d463321fa5

scripts/manicure.rb
test/test.c

index bfa4f685afe0d411048b6665d4a0a17b2b34639d..8f7b063e009ba44b927e4c05e5c6570e47c88edf 100755 (executable)
@@ -361,22 +361,24 @@ class Display
           audioEncoders << "lame"
         when /FLAC/
           audioEncoders << "ffflac"
+        when /Auto Pass/
+          audioEncoders << "copy"
       end
       
       #Mixdowns
       case audioTrack["AudioMixdown"]
-      when /Mono/
-        audioMixdowns << "mono"
-      when /Stereo/
-        audioMixdowns << "stereo"
-      when /Dolby Surround/
-        audioMixdowns << "dpl1"
-      when /Dolby Pro Logic II/
-        audioMixdowns << "dpl2"
-      when /discrete/
-        audioMixdowns << "6ch"
-      when /None/
-        audioMixdowns << "auto"
+        when /Mono/
+          audioMixdowns << "mono"
+        when /Stereo/
+          audioMixdowns << "stereo"
+        when /Dolby Surround/
+          audioMixdowns << "dpl1"
+        when /Dolby Pro Logic II/
+          audioMixdowns << "dpl2"
+        when /discrete/
+          audioMixdowns << "6ch"
+        when /None/
+          audioMixdowns << "auto"
       end
       
       #Samplerates
@@ -404,6 +406,63 @@ class Display
     commandString << " -6 " << audioMixdowns
     commandString << " -R " << audioSamplerates
     commandString << " -D " << audioTrackDRCs
+    
+    #Auto Passthru Mask
+    audioCopyMask = ""
+    
+    if hash["AudioAllowAACPass"].to_i == 1
+      audioCopyMask << "aac"
+    end
+    if hash["AudioAllowAC3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "ac3"
+    end
+    if hash["AudioAllowDTSHDPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dtshd"
+    end
+    if hash["AudioAllowDTSPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dts"
+    end
+    if hash["AudioAllowMP3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "mp3"
+    end
+    
+    if audioCopyMask.size > 0
+      commandString << " --audio-copy-mask " << audioCopyMask
+    end
+    
+    #Auto Passthru Fallback
+    audioEncoderFallback = ""
+    
+    case hash["AudioEncoderFallback"]
+      when /AC3/
+        audioEncoderFallback << "ffac3"
+      when "AAC (ffmpeg)"
+        audioEncoderFallback << "ffaac"
+      when /AAC/
+        audioEncoderFallback << "faac"
+      when /Vorbis/
+        audioEncoderFallback << "vorbis"
+      when /MP3/
+        audioEncoderFallback << "lame"
+      when /FLAC/
+        audioEncoderFallback << "ffflac"
+    end
+    
+    if audioEncoderFallback.size > 0
+      commandString << " --audio-fallback " << audioEncoderFallback
+    end
         
     #Container
     commandString << " -f "
@@ -632,22 +691,24 @@ class Display
           audioEncoders << "lame"
         when /FLAC/
           audioEncoders << "ffflac"
+        when /Auto Pass/
+          audioEncoders << "copy"
       end
       
       #Mixdowns
       case audioTrack["AudioMixdown"]
-      when /Mono/
-        audioMixdowns << "mono"
-      when /Stereo/
-        audioMixdowns << "stereo"
-      when /Dolby Surround/
-        audioMixdowns << "dpl1"
-      when /Dolby Pro Logic II/
-        audioMixdowns << "dpl2"
-      when /discrete/
-        audioMixdowns << "6ch"
-      when /None/
-        audioMixdowns << "auto"
+        when /Mono/
+          audioMixdowns << "mono"
+        when /Stereo/
+          audioMixdowns << "stereo"
+        when /Dolby Surround/
+          audioMixdowns << "dpl1"
+        when /Dolby Pro Logic II/
+          audioMixdowns << "dpl2"
+        when /discrete/
+          audioMixdowns << "6ch"
+        when /None/
+          audioMixdowns << "auto"
       end
       
       #Samplerates
@@ -676,6 +737,63 @@ class Display
     commandString << " -R " << audioSamplerates
     commandString << " -D " << audioTrackDRCs
     
+    #Auto Passthru Mask
+    audioCopyMask = ""
+    
+    if hash["AudioAllowAACPass"].to_i == 1
+      audioCopyMask << "aac"
+    end
+    if hash["AudioAllowAC3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "ac3"
+    end
+    if hash["AudioAllowDTSHDPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dtshd"
+    end
+    if hash["AudioAllowDTSPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dts"
+    end
+    if hash["AudioAllowMP3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "mp3"
+    end
+    
+    if audioCopyMask.size > 0
+      commandString << " --audio-copy-mask " << audioCopyMask
+    end
+    
+    #Auto Passthru Fallback
+    audioEncoderFallback = ""
+    
+    case hash["AudioEncoderFallback"]
+      when /AC3/
+        audioEncoderFallback << "ffac3"
+      when "AAC (ffmpeg)"
+        audioEncoderFallback << "ffaac"
+      when /AAC/
+        audioEncoderFallback << "faac"
+      when /Vorbis/
+        audioEncoderFallback << "vorbis"
+      when /MP3/
+        audioEncoderFallback << "lame"
+      when /FLAC/
+        audioEncoderFallback << "ffflac"
+    end
+    
+    if audioEncoderFallback.size > 0
+      commandString << " --audio-fallback " << audioEncoderFallback
+    end
+    
     #Container
     commandString << " -f "
     case hash["FileFormat"]
@@ -903,22 +1021,24 @@ class Display
           audioEncoders << "lame"
         when /FLAC/
           audioEncoders << "ffflac"
+        when /Auto Pass/
+          audioEncoders << "copy"
       end
 
       #Mixdowns
       case audioTrack["AudioMixdown"]
-      when /Mono/
-        audioMixdowns << "mono"
-      when /Stereo/
-        audioMixdowns << "stereo"
-      when /Dolby Surround/
-        audioMixdowns << "dpl1"
-      when /Dolby Pro Logic II/
-        audioMixdowns << "dpl2"
-      when /discrete/
-        audioMixdowns << "6ch"
-      when /None/
-        audioMixdowns << "auto"
+        when /Mono/
+          audioMixdowns << "mono"
+        when /Stereo/
+          audioMixdowns << "stereo"
+        when /Dolby Surround/
+          audioMixdowns << "dpl1"
+        when /Dolby Pro Logic II/
+          audioMixdowns << "dpl2"
+        when /discrete/
+          audioMixdowns << "6ch"
+        when /None/
+          audioMixdowns << "auto"
       end
 
       #Samplerates
@@ -976,6 +1096,56 @@ class Display
     commandString << "\");\n    "
     commandString << "}\n    "
     
+    #Auto Passthru Mask
+    if hash["AudioAllowAACPass"]
+      commandString << "if( allowed_audio_copy == -1 )\n    "
+      commandString << "{\n    "
+      commandString << "    allowed_audio_copy = 0;\n    "
+      if hash["AudioAllowAACPass"].to_i == 1
+        commandString << "    allowed_audio_copy |= HB_ACODEC_AAC_PASS;\n    "
+      end
+      if hash["AudioAllowAC3Pass"].to_i == 1
+        commandString << "    allowed_audio_copy |= HB_ACODEC_AC3_PASS;\n    "
+      end
+      if hash["AudioAllowDTSHDPass"].to_i == 1
+        commandString << "    allowed_audio_copy |= HB_ACODEC_DCA_HD_PASS;\n    "
+      end
+      if hash["AudioAllowDTSPass"].to_i == 1
+        commandString << "    allowed_audio_copy |= HB_ACODEC_DCA_PASS;\n    "
+      end
+      if hash["AudioAllowMP3Pass"].to_i == 1
+        commandString << "    allowed_audio_copy |= HB_ACODEC_MP3_PASS;\n    "
+      end
+      commandString << "    allowed_audio_copy &= HB_ACODEC_PASS_MASK;\n    "
+      commandString << "}\n    "
+    end
+    
+    #Auto Passthru Fallback
+    audioEncoderFallback = ""
+    
+    case hash["AudioEncoderFallback"]
+      when /AC3/
+        audioEncoderFallback << "HB_ACODEC_AC3"
+      when "AAC (ffmpeg)"
+        audioEncoderFallback << "HB_ACODEC_FFAAC"
+      when /AAC/
+        audioEncoderFallback << "HB_ACODEC_FAAC"
+      when /Vorbis/
+        audioEncoderFallback << "HB_ACODEC_VORBIS"
+      when /MP3/
+        audioEncoderFallback << "HB_ACODEC_LAME"
+      when /FLAC/
+        audioEncoderFallback << "HB_ACODEC_FFFLAC"
+    end
+    
+    if audioEncoderFallback.size > 0
+      commandString << "if( !acodec_fallback )\n    "
+      commandString << "{\n    "
+      commandString << "    acodec_fallback = " << audioEncoderFallback
+      commandString << ";\n    "
+      commandString << "}\n    "
+    end
+    
     #Cropping
     if hash["PictureAutoCrop"] == 0
       commandString << "job->crop[0] = " << hash["PictureTopCrop"].to_s << ";\n    "
@@ -1201,22 +1371,24 @@ class Display
           audioEncoders << "lame"
         when /FLAC/
           audioEncoders << "ffflac"
+        when /Auto Pass/
+          audioEncoders << "copy"
       end
       
       #Mixdowns
       case audioTrack["AudioMixdown"]
-      when /Mono/
-        audioMixdowns << "mono"
-      when /Stereo/
-        audioMixdowns << "stereo"
-      when /Dolby Surround/
-        audioMixdowns << "dpl1"
-      when /Dolby Pro Logic II/
-        audioMixdowns << "dpl2"
-      when /discrete/
-        audioMixdowns << "6ch"
-      when /None/
-        audioMixdowns << "auto"
+        when /Mono/
+          audioMixdowns << "mono"
+        when /Stereo/
+          audioMixdowns << "stereo"
+        when /Dolby Surround/
+          audioMixdowns << "dpl1"
+        when /Dolby Pro Logic II/
+          audioMixdowns << "dpl2"
+        when /discrete/
+          audioMixdowns << "6ch"
+        when /None/
+          audioMixdowns << "auto"
       end
       
       #Samplerates
@@ -1245,6 +1417,63 @@ class Display
     commandString << " -R " << audioSamplerates
     commandString << " -D " << audioTrackDRCs
     
+    #Auto Passthru Mask
+    audioCopyMask = ""
+    
+    if hash["AudioAllowAACPass"].to_i == 1
+      audioCopyMask << "aac"
+    end
+    if hash["AudioAllowAC3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "ac3"
+    end
+    if hash["AudioAllowDTSHDPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dtshd"
+    end
+    if hash["AudioAllowDTSPass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "dts"
+    end
+    if hash["AudioAllowMP3Pass"].to_i == 1
+      if audioCopyMask.size > 0
+        audioCopyMask << ","
+      end
+      audioCopyMask << "mp3"
+    end
+    
+    if audioCopyMask.size > 0
+      commandString << " --audio-copy-mask " << audioCopyMask
+    end
+    
+    #Auto Passthru Fallback
+    audioEncoderFallback = ""
+    
+    case hash["AudioEncoderFallback"]
+      when /AC3/
+        audioEncoderFallback << "ffac3"
+      when "AAC (ffmpeg)"
+        audioEncoderFallback << "ffaac"
+      when /AAC/
+        audioEncoderFallback << "faac"
+      when /Vorbis/
+        audioEncoderFallback << "vorbis"
+      when /MP3/
+        audioEncoderFallback << "lame"
+      when /FLAC/
+        audioEncoderFallback << "ffflac"
+    end
+    
+    if audioEncoderFallback.size > 0
+      commandString << " --audio-fallback " << audioEncoderFallback
+    end
+    
     #Container
     commandString << " -f "
     case hash["FileFormat"]
index 99161d27602f537da91cf4f82b266e4bc2a019d6..17f4b5a731e8b8db621f0486ac4e32c84256525e 100644 (file)
@@ -66,7 +66,7 @@ static int    vcodec      = HB_VCODEC_FFMPEG_MPEG4;
 static hb_list_t * audios = NULL;
 static hb_audio_config_t * audio = NULL;
 static int    num_audio_tracks = 0;
-static int    allowed_audio_copy = HB_ACODEC_PASS_MASK;
+static int    allowed_audio_copy = -1;
 static char * mixdowns    = NULL;
 static char * dynamic_range_compression = NULL;
 static char * audio_gain  = NULL;
@@ -2082,7 +2082,7 @@ static int HandleEvents( hb_handle_t * h )
                 if( audio->out.codec == HB_ACODEC_AUTO_PASS )
                 {
                     // Auto Passthru
-                    job->acodec_copy_mask = allowed_audio_copy;
+                    job->acodec_copy_mask = allowed_audio_copy == -1 ? HB_ACODEC_PASS_MASK : allowed_audio_copy;
                     job->acodec_fallback = acodec_fallback ? get_acodec_for_string( acodec_fallback ) : 0;
                     // sanitize the fallback; -1 isn't a valid HB_ACODEC_* value
                     if( job->acodec_fallback == -1 )