case hash["FileFormat"]
when /MP4/
commandString << "mp4 "
- when /AVI/
- commandString << "avi "
- when /OGM/
- commandString << "ogm "
when /MKV/
commandString << "mkv "
end
case hash["VideoEncoder"]
when /x264/
commandString << "x264"
- when /XviD/
- commandString << "xvid"
+ when /Theora/
+ commandString << "theora"
end
end
else
commandString << " -r " << hash["VideoFramerate"]
end
+
+ if hash["VideoFrameratePFR"] == 1
+ commandString << " --pfr "
+ end
end
#Audio tracks
- commandString << " -a "
- commandString << hash["Audio1Track"].to_s
- if hash["Audio2Track"]
- commandString << "," << hash["Audio2Track"].to_s
- end
- if hash["Audio3Track"]
- commandString << "," << hash["Audio3Track"].to_s
- end
- if hash["Audio4Track"]
- commandString << "," << hash["Audio4Track"].to_s
- end
-
- #Audio encoders
- commandString << " -E "
- case hash["Audio1Encoder"]
- when /AC3 /
- commandString << "ac3"
- when /AAC/
- commandString << "faac"
- when /Vorbis/
- commandString << "vorbis"
- when /MP3/
- commandString << "lame"
- end
- case hash["Audio2Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio3Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio4Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
-
- #Audio bit rate
- commandString << " -B "
- commandString << hash["Audio1Bitrate"]
- if hash["Audio2Bitrate"]
- if hash["Audio2Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio2Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio3Bitrate"]
- if hash["Audio3Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio3Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio4Bitrate"]
- if hash["Audio4Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio4Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
+ audioBitrates = ""
+ audioEncoders = ""
+ audioMixdowns = ""
+ audioSamplerates = ""
+ audioTracks = ""
+ audioTrackDRCs = ""
+ audioCount = hash["AudioList"].size
+
+ hash["AudioList"].each do |audioTrack|
+ audioCount = audioCount - 1
- #Audio sample rate
- commandString << " -R "
- commandString << hash["Audio1Samplerate"]
- if hash["Audio2Samplerate"]
- commandString << "," << hash["Audio2Samplerate"]
- end
- if hash["Audio3Samplerate"]
- commandString << "," << hash["Audio3Samplerate"]
- end
- if hash["Audio4Samplerate"]
- commandString << "," << hash["Audio4Samplerate"]
- end
-
- #Audio Mixdown
- commandString << " -6 "
- case hash["Audio1Mixdown"]
- when /Mono/
- commandString << "mono"
- when /Stereo/
- commandString << "stereo"
- when /Dolby Surround/
- commandString << "dpl1"
- when /Dolby Pro Logic II/
- commandString << "dpl2"
- when /discrete/
- commandString << "6ch"
- when /Passthru/
- commandString << "auto"
- end
-
- if hash["Audio2Mixdown"]
- case hash["Audio2Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+ #Bitrates
+ audioBitrates << audioTrack["AudioBitrate"]
+
+ #Encoders
+ case audioTrack["AudioEncoder"]
+ when /AC3 /
+ audioEncoders << "ac3"
+ when /AAC/
+ audioEncoders << "faac"
+ when /Vorbis/
+ audioEncoders << "vorbis"
+ when /MP3/
+ audioEncoders << "lame"
end
- end
-
- if hash["Audio3Mixdown"]
- case hash["Audio3Mixdown"]
+
+ #Mixdowns
+ case audioTrack["AudioMixdown"]
when /Mono/
- commandString << ",mono"
+ audioMixdowns << "mono"
when /Stereo/
- commandString << ",stereo"
+ audioMixdowns << "stereo"
when /Dolby Surround/
- commandString << ",dpl1"
+ audioMixdowns << "dpl1"
when /Dolby Pro Logic II/
- commandString << ",dpl2"
+ audioMixdowns << "dpl2"
when /discrete/
- commandString << ",6ch"
+ audioMixdowns << "6ch"
when /Passthru/
- commandString << ",auto"
+ audioMixdowns << "auto"
end
- end
-
- if hash["Audio4Mixdown"]
- case hash["Audio4Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+
+ #Samplerates
+ audioSamplerates << audioTrack["AudioSamplerate"]
+
+ #Tracks
+ audioTracks << audioTrack["AudioTrack"].to_s
+
+ #DRC
+ audioTrackDRCs << audioTrack["AudioTrackDRCSlider"].to_s
+
+ if audioCount > 0
+ audioBitrates << ","
+ audioEncoders << ","
+ audioMixdowns << ","
+ audioSamplerates << ","
+ audioTracks << ","
+ audioTrackDRCs << ","
end
+
end
-
+ commandString << " -a " << audioTracks
+ commandString << " -E " << audioEncoders
+ commandString << " -B " << audioBitrates
+ commandString << " -6 " << audioMixdowns
+ commandString << " -R " << audioSamplerates
+ commandString << " -D " << audioTrackDRCs
+
#Container
commandString << " -f "
case hash["FileFormat"]
when /MP4/
commandString << "mp4"
- when /AVI/
- commandString << "avi"
- when /OGM/
- commandString << "ogm"
when /MKV/
commandString << "mkv"
end
end
#Subtitles
- if hash["Subtitles"] != "None"
+ if hash["Subtitles"] && hash["Subtitles"] != "None"
if hash["Subtitles"] == "Autoselect"
commandString << " --subtitle-scan"
else
if hash["UsesPictureFilters"] == 1
case hash["PictureDeinterlace"]
- when 1
- commandString << " --deinterlace=\"fast\""
when 2
- commandString << " --deinterlace=\slow\""
+ commandString << " --deinterlace=\"fast\""
when 3
- commandString << " --deinterlace=\"slower\""
+ commandString << " --deinterlace=\slow\""
when 4
+ commandString << " --deinterlace=\"slower\""
+ when 5
commandString << " --deinterlace=\"slowest\""
end
case hash["PictureDenoise"]
- when 1
- commandString << " --denoise=\"weak\""
when 2
- commandString << " --denoise=\"medium\""
+ commandString << " --denoise=\"weak\""
when 3
+ commandString << " --denoise=\"medium\""
+ when 4
commandString << " --denoise=\"strong\""
end
- if hash["PictureDetelecine"] == 1 then commandString << " --detelecine" end
- if hash["PictureDeblock"] == 1 then commandString << " --deblock" end
- if hash["VFR"].to_i == 1 then commandString << " --vfr" end
- if hash["PictureDecomb"] == 1 then commandString << " --decomb" end
+ if hash["PictureDetelecine"] == 2 then commandString << " --detelecine" end
+ if hash["PictureDeblock"] != 0 then commandString << " --deblock=" << hash["PictureDeblock"].to_s end
+ if hash["PictureDecomb"] == 2 then commandString << " --decomb" end
end
#Anamorphic
if hash["PicturePAR"] == 1
- commandString << " -p"
+ commandString << " --strict-anamorphic"
elsif hash["PicturePAR"] == 2
- commandString << " -P"
+ commandString << " --loose-anamorphic"
+ elsif hash["PicturePAR"] == 3
+ commandString << " --custom-anamorphic"
end
#Booleans
case hash["VideoEncoder"]
when /x264/
commandString << "x264"
- when /XviD/
- commandString << "xvid"
+ when /Theora/
+ commandString << "theora"
end
end
else
commandString << " -r " << hash["VideoFramerate"]
end
+
+ if hash["VideoFrameratePFR"] == 1
+ commandString << " --pfr "
+ end
end
#Audio tracks
- commandString << " -a "
- commandString << hash["Audio1Track"].to_s
- if hash["Audio2Track"]
- commandString << "," << hash["Audio2Track"].to_s
- end
- if hash["Audio3Track"]
- commandString << "," << hash["Audio3Track"].to_s
- end
- if hash["Audio4Track"]
- commandString << "," << hash["Audio4Track"].to_s
- end
-
- #Audio encoders
- commandString << " -E "
- case hash["Audio1Encoder"]
- when /AC3/
- commandString << "ac3"
- when /AAC/
- commandString << "faac"
- when /Vorbis/
- commandString << "vorbis"
- when /MP3/
- commandString << "lame"
- end
- case hash["Audio2Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio3Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio4Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
+ audioBitrates = ""
+ audioEncoders = ""
+ audioMixdowns = ""
+ audioSamplerates = ""
+ audioTracks = ""
+ audioTrackDRCs = ""
+ audioCount = hash["AudioList"].size
+
+ hash["AudioList"].each do |audioTrack|
+ audioCount = audioCount - 1
- #Audio bit rate
- commandString << " -B "
- commandString << hash["Audio1Bitrate"]
- if hash["Audio2Bitrate"]
- if hash["Audio2Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio2Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio3Bitrate"]
- if hash["Audio3Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio3Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio4Bitrate"]
- if hash["Audio4Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio4Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
-
- #Audio sample rate
- commandString << " -R "
- commandString << hash["Audio1Samplerate"]
- if hash["Audio2Samplerate"]
- commandString << "," << hash["Audio2Samplerate"]
- end
- if hash["Audio3Samplerate"]
- commandString << "," << hash["Audio3Samplerate"]
- end
- if hash["Audio4Samplerate"]
- commandString << "," << hash["Audio4Samplerate"]
- end
-
- #Audio Mixdown
- commandString << " -6 "
- case hash["Audio1Mixdown"]
- when /Mono/
- commandString << "mono"
- when /Stereo/
- commandString << "stereo"
- when /Dolby Surround/
- commandString << "dpl1"
- when /Dolby Pro Logic II/
- commandString << "dpl2"
- when /discrete/
- commandString << "6ch"
- when /Passthru/
- commandString << "auto"
- end
-
- if hash["Audio2Mixdown"]
- case hash["Audio2Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+ #Bitrates
+ audioBitrates << audioTrack["AudioBitrate"]
+
+ #Encoders
+ case audioTrack["AudioEncoder"]
+ when /AC3 /
+ audioEncoders << "ac3"
+ when /AAC/
+ audioEncoders << "faac"
+ when /Vorbis/
+ audioEncoders << "vorbis"
+ when /MP3/
+ audioEncoders << "lame"
end
- end
-
- if hash["Audio3Mixdown"]
- case hash["Audio3Mixdown"]
+
+ #Mixdowns
+ case audioTrack["AudioMixdown"]
when /Mono/
- commandString << ",mono"
+ audioMixdowns << "mono"
when /Stereo/
- commandString << ",stereo"
+ audioMixdowns << "stereo"
when /Dolby Surround/
- commandString << ",dpl1"
+ audioMixdowns << "dpl1"
when /Dolby Pro Logic II/
- commandString << ",dpl2"
+ audioMixdowns << "dpl2"
when /discrete/
- commandString << ",6ch"
+ audioMixdowns << "6ch"
when /Passthru/
- commandString << ",auto"
+ audioMixdowns << "auto"
end
- end
-
- if hash["Audio4Mixdown"]
- case hash["Audio4Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+
+ #Samplerates
+ audioSamplerates << audioTrack["AudioSamplerate"]
+
+ #Tracks
+ audioTracks << audioTrack["AudioTrack"].to_s
+
+ #DRC
+ audioTrackDRCs << audioTrack["AudioTrackDRCSlider"].to_s
+
+ if audioCount > 0
+ audioBitrates << ","
+ audioEncoders << ","
+ audioMixdowns << ","
+ audioSamplerates << ","
+ audioTracks << ","
+ audioTrackDRCs << ","
end
+
end
-
+ commandString << " -a " << audioTracks
+ commandString << " -E " << audioEncoders
+ commandString << " -B " << audioBitrates
+ commandString << " -6 " << audioMixdowns
+ commandString << " -R " << audioSamplerates
+ commandString << " -D " << audioTrackDRCs
#Container
commandString << " -f "
case hash["FileFormat"]
when /MP4/
commandString << "mp4"
- when /AVI/
- commandString << "avi"
- when /OGM/
- commandString << "ogm"
when /MKV/
commandString << "mkv"
end
end
#Subtitles
- if hash["Subtitles"] != "None"
+ if hash["Subtitles"] && hash["Subtitles"] != "None"
if hash["Subtitles"] == "Autoselect"
commandString << " --subtitle-scan"
else
if hash["UsesPictureFilters"] == 1
case hash["PictureDeinterlace"]
- when 1
- commandString << " --deinterlace=\"fast\""
when 2
- commandString << " --deinterlace=\slow\""
+ commandString << " --deinterlace=\"fast\""
when 3
- commandString << " --deinterlace=\"slower\""
+ commandString << " --deinterlace=\slow\""
when 4
+ commandString << " --deinterlace=\"slower\""
+ when 5
commandString << " --deinterlace=\"slowest\""
end
case hash["PictureDenoise"]
- when 1
- commandString << " --denoise=\"weak\""
when 2
- commandString << " --denoise=\"medium\""
+ commandString << " --denoise=\"weak\""
when 3
+ commandString << " --denoise=\"medium\""
+ when 4
commandString << " --denoise=\"strong\""
end
- if hash["PictureDetelecine"] == 1 then commandString << " --detelecine" end
- if hash["PictureDeblock"] == 1 then commandString << " --deblock" end
- if hash["VFR"].to_i == 1 then commandString << " --vfr" end
- if hash["PictureDecomb"] == 1 then commandString << " --decomb" end
+ if hash["PictureDetelecine"] == 2 then commandString << " --detelecine" end
+ if hash["PictureDeblock"] != 0 then commandString << " --deblock=" << hash["PictureDeblock"].to_s end
+ if hash["PictureDecomb"] == 2 then commandString << " --decomb" end
end
#Anamorphic
if hash["PicturePAR"] == 1
- commandString << " -p"
+ commandString << " --strict-anamorphic"
elsif hash["PicturePAR"] == 2
- commandString << " -P"
+ commandString << " --loose-anamorphic"
+ elsif hash["PicturePAR"] == 3
+ commandString << " --custom-anamorphic"
end
#Booleans
commandString = "if (!strcmp(preset_name, \"" << hash["PresetName"] << "\"))\n{\n "
#Filename suffix
+ commandString << "if( !mux )\n "
+ commandString << "{\n "
+
case hash["FileFormat"]
when /MP4/
- commandString << "mux = " << "HB_MUX_MP4;\n "
- when /AVI/
- commandString << "mux = " << "HB_MUX_AVI;\n "
- when /OGM/
- commandString << "mux = " << "HB_MUX_OGM;\n "
+ commandString << " mux = " << "HB_MUX_MP4;\n "
when /MKV/
- commandString << "mux = " << "HB_MUX_MKV;\n "
+ commandString << " mux = " << "HB_MUX_MKV;\n "
end
+ commandString << "}\n "
#iPod MP4 atom
if hash["Mp4iPodCompatible"].to_i == 1
- commandString << "job->ipod_atom = 1;\n "
+ commandString << "job->ipod_atom = 1;\n "
end
# 64-bit files
case hash["VideoEncoder"]
when /x264/
commandString << "HB_VCODEC_X264;\n "
- when /XviD/
- commandString << "HB_VCODEC_XVID;\n "
+ when /Theora/
+ commandString << "HB_VCODEC_THEORA;\n "
end
end
commandString << "job->vbitrate = " << hash["VideoAvgBitrate"] << ";\n "
when 2
commandString << "job->vquality = " << hash["VideoQualitySlider"].to_s << ";\n "
- commandString << "job->crf = 1;\n "
end
#FPS
commandString << "job->vrate_base = " << "1080000\n "
# Gotta add the rest of the framerates for completion's sake.
end
- commandString << "job->cfr = 1;\n "
+
+ if hash["VideoFrameratePFR"] == 1
+ commandString << "job->cfr = 2;\n "
+ else
+ commandString << "job->cfr = 1;\n "
+ end
end
#Audio tracks
+ audioBitrates = ""
+ audioEncoders = ""
+ audioMixdowns = ""
+ audioSamplerates = ""
+ audioTracks = ""
+ audioTrackDRCs = ""
+ audioCount = hash["AudioList"].size
+
+ hash["AudioList"].each do |audioTrack|
+ audioCount = audioCount - 1
+
+ #Bitrates
+ audioBitrates << audioTrack["AudioBitrate"]
+
+ #Encoders
+ case audioTrack["AudioEncoder"]
+ when /AC3 /
+ audioEncoders << "ac3"
+ when /AAC/
+ audioEncoders << "faac"
+ when /Vorbis/
+ audioEncoders << "vorbis"
+ when /MP3/
+ audioEncoders << "lame"
+ 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 /Passthru/
+ audioMixdowns << "auto"
+ end
+
+ #Samplerates
+ audioSamplerates << audioTrack["AudioSamplerate"]
+
+ #Tracks
+ audioTracks << audioTrack["AudioTrack"].to_s
+
+ #DRC
+ audioTrackDRCs << audioTrack["AudioTrackDRCSlider"].to_s
+
+ if audioCount > 0
+ audioBitrates << ","
+ audioEncoders << ","
+ audioMixdowns << ","
+ audioSamplerates << ","
+ audioTracks << ","
+ audioTrackDRCs << ","
+ end
+
+ end
commandString << "if( !atracks )\n "
commandString << "{\n "
- commandString << " atracks = strdup(\""
- commandString << hash["Audio1Track"].to_s
- if hash["Audio2Track"]
- commandString << "," << hash["Audio2Track"].to_s
- end
- if hash["Audio3Track"]
- commandString << "," << hash["Audio3Track"].to_s
- end
- if hash["Audio4Track"]
- commandString << "," << hash["Audio4Track"].to_s
- end
+ commandString << " atracks = strdup(\"" << audioTracks
commandString << "\");\n "
commandString << "}\n "
-
- # Audio bitrate
+
+ commandString << "if( !acodecs )\n "
+ commandString << "{\n "
+ commandString << " acodecs = strdup(\"" << audioEncoders
+ commandString << "\");\n "
+ commandString << "}\n "
+
commandString << "if( !abitrates )\n "
commandString << "{\n "
- commandString << " abitrates = strdup(\""
- if hash["Audio1Encoder"] != "AC3 Passthru"
- commandString << hash["Audio1Bitrate"]
- else
- commandString << "auto"
- end
- if hash["Audio2Bitrate"]
- if hash["Audio2Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio2Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio3Bitrate"]
- if hash["Audio3Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio3Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio4Bitrate"]
- if hash["Audio4Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio4Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
+ commandString << " abitrates = strdup(\"" << audioBitrates
commandString << "\");\n "
commandString << "}\n "
-
- #Audio samplerate
- commandString << "if( !arates )\n "
+
+ commandString << "if( !mixdowns )\n "
commandString << "{\n "
- commandString << " arates = strdup(\""
- commandString << hash["Audio1Samplerate"]
- if hash["Audio2Samplerate"]
- commandString << "," << hash["Audio2Samplerate"]
- end
- if hash["Audio3Samplerate"]
- commandString << "," << hash["Audio3Samplerate"]
- end
- if hash["Audio4Samplerate"]
- commandString << "," << hash["Audio4Samplerate"]
- end
+ commandString << " mixdowns = strdup(\"" << audioMixdowns
commandString << "\");\n "
commandString << "}\n "
-
- #Audio encoder
- commandString << "if( !acodecs )\n "
+
+ commandString << "if( !arates )\n "
commandString << "{\n "
- commandString << " acodecs = strdup(\""
- case hash["Audio1Encoder"]
- when /AC3/
- commandString << "ac3"
- when /AAC/
- commandString << "faac"
- when /Vorbis/
- commandString << "vorbis"
- when /MP3/
- commandString << "lame"
- end
- case hash["Audio2Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio3Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio4Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
+ commandString << " arates = strdup(\"" << audioSamplerates
commandString << "\");\n "
commandString << "}\n "
-
- #Audio mixdowns
- commandString << "if( !mixdowns )\n "
+
+ commandString << "if( !dynamic_range_compression )\n "
commandString << "{\n "
- commandString << " mixdowns = strdup(\""
- case hash["Audio1Mixdown"]
- when /Mono/
- commandString << "mono"
- when /Stereo/
- commandString << "stereo"
- when /Dolby Surround/
- commandString << "dpl1"
- when /Dolby Pro Logic II/
- commandString << "dpl2"
- when /discrete/
- commandString << "6ch"
- when /Passthru/
- commandString << "auto"
- end
- if hash["Audio2Mixdown"]
- case hash["Audio2Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
- end
- end
- if hash["Audio3Mixdown"]
- case hash["Audio3Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
- end
- end
- if hash["Audio4Mixdown"]
- case hash["Audio4Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
- end
- end
+ commandString << " dynamic_range_compression = strdup(\"" << audioTrackDRCs
commandString << "\");\n "
commandString << "}\n "
commandString << "job->crop[0] = " << hash["PictureTopCrop"].to_s << ";\n "
commandString << "job->crop[1] = " << hash["PictureBottomCrop"].to_s << ";\n "
commandString << "job->crop[2] = " << hash["PictureLeftCrop"].to_s << ";\n "
- commandString << "job->crop[4] - " << hash["PictureRightCrop"].to_s << ";\n "
+ commandString << "job->crop[4] = " << hash["PictureRightCrop"].to_s << ";\n "
end
#Dimensions
if hash["UsesPictureFilters"] == 1
case hash["PictureDeinterlace"]
- when 1
+ when 2
commandString << "deinterlace = 1;\n "
commandString << "deinterlace_opt = \"-1\";\n "
- when 2
+ when 3
commandString << "deinterlace = 1;\n "
commandString << "deinterlace_opt = \"2\";\n "
- when 3
+ when 4
commandString << "deinterlace = 1;\n "
commandString << "deinterlace_opt = \"0\";\n "
- when 4
+ when 5
commandString << "deinterlace = 1;\n "
commandString << "deinterlace_opt = \"1:-1:1\";\n "
end
case hash["PictureDenoise"]
- when 1
+ when 2
commandString << "denoise = 1;\n "
commandString << "denoise_opt = \"2:1:2:3\";\n "
- when 2
+ when 3
commandString << "denoise = 1;\n "
commandString << "denoise_opt = \"3:2:2:3\";\n "
- when 3
+ when 4
commandString << "denoise = 1;\n "
commandString << "denoise_opt = \"7:7:5:5\";\n "
end
- if hash["PictureDetelecine"] == 1 then commandString << "detelecine = 1;\n " end
- if hash["PictureDeblock"] == 1 then commandString << "deblock = 1;\n " end
- if hash["VFR"].to_i == 1 then commandString << "vfr = 1;\n " end
- if hash["PictureDecomb"] == 1 then commandString << "decomb = 1;\n " end
+ if hash["PictureDetelecine"] == 2 then commandString << "detelecine = 1;\n " end
+ if hash["PictureDeblock"] != 0
+ then
+ commandString << "deblock = 1;\n "
+ commandString << "deblock_opt = \"" << hash["PictureDeblock"].to_s << "\";\n "
+ end
+ if hash["PictureDecomb"] == 2 then commandString << "decomb = 1;\n " end
end
#Anamorphic
- if hash["PicturePAR"] == 1
- commandString << "pixelratio = 1;\n "
- elsif hash["PicturePAR"] == 2
- commandString << "pixelratio = 2;\n "
+ if hash["PicturePAR"] != 0
+ commandString << "if( !anamorphic_mode )\n "
+ commandString << "{\n "
+ if hash["PicturePAR"] == 1
+ commandString << " anamorphic_mode = 1;\n "
+ elsif hash["PicturePAR"] == 2
+ commandString << " anamorphic_mode = 2;\n "
+ elsif hash["PicturePAR"] == 3
+ commandString << " anamorphic_mode = 3;\n "
+ end
+ commandString << "}\n "
end
#Booleans
if hash["VideoGrayScale"] == 1 then commandString << "job->grayscale = 1;\n " end
if hash["VideoTwoPass"] == 1 then commandString << "twoPass = 1;\n " end
if hash["VideoTurboTwoPass"] == 1 then commandString << "turbo_opts_enabled = 1;\n" end
-
+ commandString << "\n"
commandString << "}"
# That's it, print to screen now
case hash["VideoEncoder"]
when /x264/
commandString << "x264 "
- when /XviD/
- commandString << "xvid "
+ when /Theora/
+ commandString << "theora "
end
end
else
commandString << " -r " << hash["VideoFramerate"]
end
+
+ if hash["VideoFrameratePFR"] == 1
+ commandString << " --pfr "
+ end
end
#Audio tracks
- commandString << " -a "
- commandString << hash["Audio1Track"].to_s
- if hash["Audio2Track"]
- commandString << "," << hash["Audio2Track"].to_s
- end
- if hash["Audio3Track"]
- commandString << "," << hash["Audio3Track"].to_s
- end
- if hash["Audio4Track"]
- commandString << "," << hash["Audio4Track"].to_s
- end
-
- #Audio encoders
- commandString << " -E "
- case hash["Audio1Encoder"]
- when /AC3/
- commandString << "ac3"
- when /AAC/
- commandString << "faac"
- when /Vorbis/
- commandString << "vorbis"
- when /MP3/
- commandString << "lame"
- end
- case hash["Audio2Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio3Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
- case hash["Audio4Encoder"]
- when /AC3 /
- commandString << ",ac3"
- when /AAC/
- commandString << ",faac"
- when /Vorbis/
- commandString << ",vorbis"
- when /MP3/
- commandString << ",lame"
- end
+ audioBitrates = ""
+ audioEncoders = ""
+ audioMixdowns = ""
+ audioSamplerates = ""
+ audioTracks = ""
+ audioTrackDRCs = ""
+ audioCount = hash["AudioList"].size
+
+ hash["AudioList"].each do |audioTrack|
+ audioCount = audioCount - 1
- #Audio bit rate
- commandString << " -B "
- commandString << hash["Audio1Bitrate"]
- if hash["Audio2Bitrate"]
- if hash["Audio2Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio2Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio3Bitrate"]
- if hash["Audio3Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio3Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
- if hash["Audio4Bitrate"]
- if hash["Audio4Encoder"] != "AC3 Passthru"
- commandString << "," << hash["Audio4Bitrate"]
- else
- commandString << "," << "auto"
- end
- end
-
- #Audio sample rate
- commandString << " -R "
- commandString << hash["Audio1Samplerate"]
- if hash["Audio2Samplerate"]
- commandString << "," << hash["Audio2Samplerate"]
- end
- if hash["Audio3Samplerate"]
- commandString << "," << hash["Audio3Samplerate"]
- end
- if hash["Audio4Samplerate"]
- commandString << "," << hash["Audio4Samplerate"]
- end
-
- #Audio Mixdown
- commandString << " -6 "
- case hash["Audio1Mixdown"]
- when /Mono/
- commandString << "mono"
- when /Stereo/
- commandString << "stereo"
- when /Dolby Surround/
- commandString << "dpl1"
- when /Dolby Pro Logic II/
- commandString << "dpl2"
- when /discrete/
- commandString << "6ch"
- when /Passthru/
- commandString << "auto"
- end
-
- if hash["Audio2Mixdown"]
- case hash["Audio2Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+ #Bitrates
+ audioBitrates << audioTrack["AudioBitrate"]
+
+ #Encoders
+ case audioTrack["AudioEncoder"]
+ when /AC3 /
+ audioEncoders << "ac3"
+ when /AAC/
+ audioEncoders << "faac"
+ when /Vorbis/
+ audioEncoders << "vorbis"
+ when /MP3/
+ audioEncoders << "lame"
end
- end
-
- if hash["Audio3Mixdown"]
- case hash["Audio3Mixdown"]
+
+ #Mixdowns
+ case audioTrack["AudioMixdown"]
when /Mono/
- commandString << ",mono"
+ audioMixdowns << "mono"
when /Stereo/
- commandString << ",stereo"
+ audioMixdowns << "stereo"
when /Dolby Surround/
- commandString << ",dpl1"
+ audioMixdowns << "dpl1"
when /Dolby Pro Logic II/
- commandString << ",dpl2"
+ audioMixdowns << "dpl2"
when /discrete/
- commandString << ",6ch"
+ audioMixdowns << "6ch"
when /Passthru/
- commandString << ",auto"
+ audioMixdowns << "auto"
end
- end
-
- if hash["Audio4Mixdown"]
- case hash["Audio4Mixdown"]
- when /Mono/
- commandString << ",mono"
- when /Stereo/
- commandString << ",stereo"
- when /Dolby Surround/
- commandString << ",dpl1"
- when /Dolby Pro Logic II/
- commandString << ",dpl2"
- when /discrete/
- commandString << ",6ch"
- when /Passthru/
- commandString << ",auto"
+
+ #Samplerates
+ audioSamplerates << audioTrack["AudioSamplerate"]
+
+ #Tracks
+ audioTracks << audioTrack["AudioTrack"].to_s
+
+ #DRC
+ audioTrackDRCs << audioTrack["AudioTrackDRCSlider"].to_s
+
+ if audioCount > 0
+ audioBitrates << ","
+ audioEncoders << ","
+ audioMixdowns << ","
+ audioSamplerates << ","
+ audioTracks << ","
+ audioTrackDRCs << ","
end
+
end
+ commandString << " -a " << audioTracks
+ commandString << " -E " << audioEncoders
+ commandString << " -B " << audioBitrates
+ commandString << " -6 " << audioMixdowns
+ commandString << " -R " << audioSamplerates
+ commandString << " -D " << audioTrackDRCs
#Container
commandString << " -f "
case hash["FileFormat"]
when /MP4/
commandString << "mp4"
- when /AVI/
- commandString << "avi"
- when /OGM/
- commandString << "ogm"
when /MKV/
commandString << "mkv"
end
end
#Subtitles
- if hash["Subtitles"] != "None"
+ if hash["Subtitles"] && hash["Subtitles"] != "None"
if hash["Subtitles"] == "Autoselect"
commandString << " --subtitle-scan"
else
if hash["UsesPictureFilters"] == 1
case hash["PictureDeinterlace"]
- when 1
- commandString << " --deinterlace=\\\"fast\\\""
when 2
- commandString << " --deinterlace=\\\slow\\\""
+ commandString << " --deinterlace=\\\"fast\\\""
when 3
- commandString << " --deinterlace=\\\"slower\\\""
+ commandString << " --deinterlace=\\\slow\\\""
when 4
+ commandString << " --deinterlace=\\\"slower\\\""
+ when 5
commandString << " --deinterlace=\\\"slowest\\\""
end
case hash["PictureDenoise"]
- when 1
- commandString << " --denoise=\\\"weak\\\""
when 2
- commandString << " --denoise=\\\"medium\\\""
+ commandString << " --denoise=\\\"weak\\\""
when 3
+ commandString << " --denoise=\\\"medium\\\""
+ when 4
commandString << " --denoise=\\\"strong\\\""
end
- if hash["PictureDetelecine"] == 1 then commandString << " --detelecine" end
- if hash["PictureDeblock"] == 1 then commandString << " --deblock" end
- if hash["VFR"].to_i == 1 then commandString << " --vfr" end
- if hash["PictureDecomb"] == 1 then commandString << " --decomb" end
+ if hash["PictureDetelecine"] == 2 then commandString << " --detelecine" end
+ if hash["PictureDeblock"] != 0 then commandString << " --deblock=" << hash["PictureDeblock"].to_s end
+ if hash["PictureDecomb"] == 2 then commandString << " --decomb" end
end
#Anamorphic
if hash["PicturePAR"] == 1
- commandString << " -p"
+ commandString << " --strict-anamorphic"
elsif hash["PicturePAR"] == 2
- commandString << " -P"
+ commandString << " --loose-anamorphic"
+ elsif hash["PicturePAR"] == 3
+ commandString << " --custom-anamorphic"
end
#Booleans
# Direct the user to the help
puts "\n\tUsage: manicure.rb [options]"
puts "\tSee help with -h or --help"
-end
\ No newline at end of file
+end