summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs
diff options
context:
space:
mode:
authorsr55 <[email protected]>2011-06-12 16:54:23 +0000
committersr55 <[email protected]>2011-06-12 16:54:23 +0000
commit399ab292d7feddf5e83be866caafbaef634eca87 (patch)
tree519a29f631a5d07c25e4b01ef195005d166ddad6 /win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs
parent191aad2ed1e77d8292f72ab7caf8996d117edd63 (diff)
WinGui: Bring in the HandBrake Interop library written by RandomEngy.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4045 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs')
-rw-r--r--win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs110
1 files changed, 110 insertions, 0 deletions
diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs
new file mode 100644
index 000000000..691c97701
--- /dev/null
+++ b/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HandBrake.SourceData;
+
+namespace HandBrake.Interop
+{
+ public static class Converters
+ {
+ private static Dictionary<double, int> vrates = new Dictionary<double, int>
+ {
+ {5, 5400000},
+ {10, 2700000},
+ {12, 2250000},
+ {15, 1800000},
+ {23.976, 1126125},
+ {24, 1125000},
+ {25, 1080000},
+ {29.97, 900900}
+ };
+
+ public static int FramerateToVrate(double framerate)
+ {
+ if (!vrates.ContainsKey(framerate))
+ {
+ throw new ArgumentException("Framerate not recognized.", "framerate");
+ }
+
+ return vrates[framerate];
+ }
+
+ public static int MixdownToNative(Mixdown mixdown)
+ {
+ if (mixdown == Mixdown.Auto)
+ {
+ throw new ArgumentException("Cannot convert Auto to native.");
+ }
+
+ switch (mixdown)
+ {
+ case Mixdown.DolbyProLogicII:
+ return NativeConstants.HB_AMIXDOWN_DOLBYPLII;
+ case Mixdown.DolbySurround:
+ return NativeConstants.HB_AMIXDOWN_DOLBY;
+ case Mixdown.Mono:
+ return NativeConstants.HB_AMIXDOWN_MONO;
+ case Mixdown.SixChannelDiscrete:
+ return NativeConstants.HB_AMIXDOWN_6CH;
+ case Mixdown.Stereo:
+ return NativeConstants.HB_AMIXDOWN_STEREO;
+ }
+
+ return 0;
+ }
+
+ public static Mixdown NativeToMixdown(int mixdown)
+ {
+ switch (mixdown)
+ {
+ case NativeConstants.HB_AMIXDOWN_MONO:
+ return Mixdown.Mono;
+ case NativeConstants.HB_AMIXDOWN_STEREO:
+ return Mixdown.Stereo;
+ case NativeConstants.HB_AMIXDOWN_DOLBY:
+ return Mixdown.DolbySurround;
+ case NativeConstants.HB_AMIXDOWN_DOLBYPLII:
+ return Mixdown.DolbyProLogicII;
+ case NativeConstants.HB_AMIXDOWN_6CH:
+ return Mixdown.SixChannelDiscrete;
+ }
+
+ throw new ArgumentException("Unrecognized mixdown: " + mixdown, "mixdown");
+ }
+
+ public static uint AudioEncoderToNative(AudioEncoder encoder)
+ {
+ switch (encoder)
+ {
+ case AudioEncoder.Ac3Passthrough:
+ return NativeConstants.HB_ACODEC_AC3_PASS;
+ case AudioEncoder.DtsPassthrough:
+ return NativeConstants.HB_ACODEC_DCA_PASS;
+ case AudioEncoder.Faac:
+ return NativeConstants.HB_ACODEC_FAAC;
+ case AudioEncoder.Lame:
+ return NativeConstants.HB_ACODEC_LAME;
+ case AudioEncoder.Ac3:
+ return NativeConstants.HB_ACODEC_AC3;
+ case AudioEncoder.Vorbis:
+ return NativeConstants.HB_ACODEC_VORBIS;
+ }
+
+ return 0;
+ }
+
+ public static AudioCodec NativeToAudioCodec(uint codec)
+ {
+ switch (codec)
+ {
+ case NativeConstants.HB_ACODEC_AC3:
+ return AudioCodec.Ac3;
+ case NativeConstants.HB_ACODEC_DCA:
+ return AudioCodec.Dts;
+ default:
+ return AudioCodec.Other;
+ }
+ }
+ }
+}