Bladeren bron

added a 2nd sample with full playback controls suitable as a drop-in player in custom apps

Felix Paul Kühne 11 jaren geleden
bovenliggende
commit
0a12eefd07

+ 376 - 0
Examples_iOS/DropIn-Player/Dropin-Player.xcodeproj/project.pbxproj

@@ -0,0 +1,376 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		7D11B36A183BA71600FF0D25 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D11B369183BA71600FF0D25 /* UIKit.framework */; };
+		7D11B36C183BA71600FF0D25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D11B36B183BA71600FF0D25 /* Foundation.framework */; };
+		7D8745B5183BA8F900FD09E0 /* libMobileVLCKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745B4183BA8F900FD09E0 /* libMobileVLCKit.a */; };
+		7D8745B8183BABE800FD09E0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745B6183BABE800FD09E0 /* AudioToolbox.framework */; };
+		7D8745BB183BABEE00FD09E0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745BA183BABEE00FD09E0 /* OpenGLES.framework */; };
+		7D8745BD183BAC0D00FD09E0 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745BC183BAC0D00FD09E0 /* CFNetwork.framework */; };
+		7D8745BF183BAC1200FD09E0 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745BE183BAC1200FD09E0 /* CoreText.framework */; };
+		7D8745C1183BAC2300FD09E0 /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745C0183BAC2300FD09E0 /* libbz2.dylib */; };
+		7D8745C3183BAC2700FD09E0 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745C2183BAC2700FD09E0 /* libiconv.dylib */; };
+		7D8745C5183BAC3100FD09E0 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745C4183BAC3100FD09E0 /* libstdc++.dylib */; };
+		7D8745C7183BACAE00FD09E0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8745C6183BACAE00FD09E0 /* QuartzCore.framework */; };
+		7D8745C8183BACBF00FD09E0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D11B36D183BA71600FF0D25 /* CoreGraphics.framework */; };
+		7DEBFE68183BEA9E00BC53D5 /* VDLAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEBFE65183BEA9E00BC53D5 /* VDLAppDelegate.m */; };
+		7DEBFE69183BEA9E00BC53D5 /* VDLPlaybackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEBFE67183BEA9E00BC53D5 /* VDLPlaybackViewController.m */; };
+		7DEBFE6D183BEAB500BC53D5 /* VDLPlaybackViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE6B183BEAB500BC53D5 /* VDLPlaybackViewController.xib */; };
+		7DEBFE70183BEAC300BC53D5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE6E183BEAC300BC53D5 /* InfoPlist.strings */; };
+		7DEBFE77183BEAD500BC53D5 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE71183BEAD500BC53D5 /* Default-568h@2x.png */; };
+		7DEBFE78183BEAD500BC53D5 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE72183BEAD500BC53D5 /* Default.png */; };
+		7DEBFE79183BEAD500BC53D5 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE73183BEAD500BC53D5 /* Default@2x.png */; };
+		7DEBFE7B183BEAD500BC53D5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEBFE76183BEAD500BC53D5 /* main.m */; };
+		7DEBFE7D183BECDE00BC53D5 /* Dropin-Player-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE7C183BECDE00BC53D5 /* Dropin-Player-Info.plist */; };
+		7DEBFE7F183BEE7500BC53D5 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DEBFE7E183BEE7500BC53D5 /* MediaPlayer.framework */; };
+		7DEBFE81183BF0AA00BC53D5 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DEBFE80183BF0AA00BC53D5 /* AVFoundation.framework */; };
+		7DEBFE85183BFC6300BC53D5 /* VDLMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEBFE83183BFC6300BC53D5 /* VDLMainViewController.m */; };
+		7DEBFE86183BFC6300BC53D5 /* VDLMainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DEBFE84183BFC6300BC53D5 /* VDLMainViewController.xib */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		7D11B366183BA71600FF0D25 /* Dropin-Player.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Dropin-Player.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		7D11B369183BA71600FF0D25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		7D11B36B183BA71600FF0D25 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		7D11B36D183BA71600FF0D25 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		7D8745B4183BA8F900FD09E0 /* libMobileVLCKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileVLCKit.a; path = "../../build/Release-iphonesimulator/libMobileVLCKit.a"; sourceTree = "<group>"; };
+		7D8745B6183BABE800FD09E0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		7D8745B7183BABE800FD09E0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
+		7D8745BA183BABEE00FD09E0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		7D8745BC183BAC0D00FD09E0 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
+		7D8745BE183BAC1200FD09E0 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+		7D8745C0183BAC2300FD09E0 /* libbz2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbz2.dylib; path = usr/lib/libbz2.dylib; sourceTree = SDKROOT; };
+		7D8745C2183BAC2700FD09E0 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
+		7D8745C4183BAC3100FD09E0 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; };
+		7D8745C6183BACAE00FD09E0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		7DEBFE64183BEA9E00BC53D5 /* VDLAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VDLAppDelegate.h; path = "Dropin-Player/VDLAppDelegate.h"; sourceTree = SOURCE_ROOT; };
+		7DEBFE65183BEA9E00BC53D5 /* VDLAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VDLAppDelegate.m; path = "Dropin-Player/VDLAppDelegate.m"; sourceTree = SOURCE_ROOT; };
+		7DEBFE66183BEA9E00BC53D5 /* VDLPlaybackViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VDLPlaybackViewController.h; path = "Dropin-Player/VDLPlaybackViewController.h"; sourceTree = SOURCE_ROOT; };
+		7DEBFE67183BEA9E00BC53D5 /* VDLPlaybackViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VDLPlaybackViewController.m; path = "Dropin-Player/VDLPlaybackViewController.m"; sourceTree = SOURCE_ROOT; };
+		7DEBFE6C183BEAB500BC53D5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = "Dropin-Player/en.lproj/VDLPlaybackViewController.xib"; sourceTree = SOURCE_ROOT; };
+		7DEBFE6F183BEAC300BC53D5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = "Dropin-Player/en.lproj/InfoPlist.strings"; sourceTree = SOURCE_ROOT; };
+		7DEBFE71183BEAD500BC53D5 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "Dropin-Player/Default-568h@2x.png"; sourceTree = SOURCE_ROOT; };
+		7DEBFE72183BEAD500BC53D5 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = "Dropin-Player/Default.png"; sourceTree = SOURCE_ROOT; };
+		7DEBFE73183BEAD500BC53D5 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "Dropin-Player/Default@2x.png"; sourceTree = SOURCE_ROOT; };
+		7DEBFE75183BEAD500BC53D5 /* Dropin-Player-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Dropin-Player-Prefix.pch"; path = "Dropin-Player/Dropin-Player-Prefix.pch"; sourceTree = SOURCE_ROOT; };
+		7DEBFE76183BEAD500BC53D5 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "Dropin-Player/main.m"; sourceTree = SOURCE_ROOT; };
+		7DEBFE7C183BECDE00BC53D5 /* Dropin-Player-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Dropin-Player-Info.plist"; path = "Dropin-Player/Dropin-Player-Info.plist"; sourceTree = SOURCE_ROOT; };
+		7DEBFE7E183BEE7500BC53D5 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
+		7DEBFE80183BF0AA00BC53D5 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		7DEBFE82183BFC6300BC53D5 /* VDLMainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VDLMainViewController.h; sourceTree = SOURCE_ROOT; };
+		7DEBFE83183BFC6300BC53D5 /* VDLMainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VDLMainViewController.m; sourceTree = SOURCE_ROOT; };
+		7DEBFE84183BFC6300BC53D5 /* VDLMainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VDLMainViewController.xib; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		7D11B363183BA71600FF0D25 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DEBFE81183BF0AA00BC53D5 /* AVFoundation.framework in Frameworks */,
+				7DEBFE7F183BEE7500BC53D5 /* MediaPlayer.framework in Frameworks */,
+				7D8745C8183BACBF00FD09E0 /* CoreGraphics.framework in Frameworks */,
+				7D8745C7183BACAE00FD09E0 /* QuartzCore.framework in Frameworks */,
+				7D8745C5183BAC3100FD09E0 /* libstdc++.dylib in Frameworks */,
+				7D8745C3183BAC2700FD09E0 /* libiconv.dylib in Frameworks */,
+				7D8745C1183BAC2300FD09E0 /* libbz2.dylib in Frameworks */,
+				7D8745BF183BAC1200FD09E0 /* CoreText.framework in Frameworks */,
+				7D8745BD183BAC0D00FD09E0 /* CFNetwork.framework in Frameworks */,
+				7D8745BB183BABEE00FD09E0 /* OpenGLES.framework in Frameworks */,
+				7D8745B8183BABE800FD09E0 /* AudioToolbox.framework in Frameworks */,
+				7D11B36A183BA71600FF0D25 /* UIKit.framework in Frameworks */,
+				7D11B36C183BA71600FF0D25 /* Foundation.framework in Frameworks */,
+				7D8745B5183BA8F900FD09E0 /* libMobileVLCKit.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		7D11B35D183BA71600FF0D25 = {
+			isa = PBXGroup;
+			children = (
+				7D11B36F183BA71600FF0D25 /* Dropin-Player */,
+				7D11B368183BA71600FF0D25 /* Frameworks */,
+				7D11B367183BA71600FF0D25 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		7D11B367183BA71600FF0D25 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				7D11B366183BA71600FF0D25 /* Dropin-Player.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		7D11B368183BA71600FF0D25 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				7DEBFE80183BF0AA00BC53D5 /* AVFoundation.framework */,
+				7DEBFE7E183BEE7500BC53D5 /* MediaPlayer.framework */,
+				7D8745B4183BA8F900FD09E0 /* libMobileVLCKit.a */,
+				7D8745C6183BACAE00FD09E0 /* QuartzCore.framework */,
+				7D8745C4183BAC3100FD09E0 /* libstdc++.dylib */,
+				7D8745C2183BAC2700FD09E0 /* libiconv.dylib */,
+				7D8745C0183BAC2300FD09E0 /* libbz2.dylib */,
+				7D8745BE183BAC1200FD09E0 /* CoreText.framework */,
+				7D8745BC183BAC0D00FD09E0 /* CFNetwork.framework */,
+				7D8745BA183BABEE00FD09E0 /* OpenGLES.framework */,
+				7D8745B6183BABE800FD09E0 /* AudioToolbox.framework */,
+				7D8745B7183BABE800FD09E0 /* AudioUnit.framework */,
+				7D11B369183BA71600FF0D25 /* UIKit.framework */,
+				7D11B36B183BA71600FF0D25 /* Foundation.framework */,
+				7D11B36D183BA71600FF0D25 /* CoreGraphics.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		7D11B36F183BA71600FF0D25 /* Dropin-Player */ = {
+			isa = PBXGroup;
+			children = (
+				7DEBFE64183BEA9E00BC53D5 /* VDLAppDelegate.h */,
+				7DEBFE65183BEA9E00BC53D5 /* VDLAppDelegate.m */,
+				7DEBFE82183BFC6300BC53D5 /* VDLMainViewController.h */,
+				7DEBFE83183BFC6300BC53D5 /* VDLMainViewController.m */,
+				7DEBFE84183BFC6300BC53D5 /* VDLMainViewController.xib */,
+				7DEBFE66183BEA9E00BC53D5 /* VDLPlaybackViewController.h */,
+				7DEBFE67183BEA9E00BC53D5 /* VDLPlaybackViewController.m */,
+				7DEBFE6B183BEAB500BC53D5 /* VDLPlaybackViewController.xib */,
+				7D11B370183BA71600FF0D25 /* Supporting Files */,
+			);
+			name = "Dropin-Player";
+			path = SimplePlayback;
+			sourceTree = "<group>";
+		};
+		7D11B370183BA71600FF0D25 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				7DEBFE7C183BECDE00BC53D5 /* Dropin-Player-Info.plist */,
+				7DEBFE71183BEAD500BC53D5 /* Default-568h@2x.png */,
+				7DEBFE72183BEAD500BC53D5 /* Default.png */,
+				7DEBFE73183BEAD500BC53D5 /* Default@2x.png */,
+				7DEBFE75183BEAD500BC53D5 /* Dropin-Player-Prefix.pch */,
+				7DEBFE76183BEAD500BC53D5 /* main.m */,
+				7DEBFE6E183BEAC300BC53D5 /* InfoPlist.strings */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		7D11B365183BA71600FF0D25 /* Dropin-Player */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7D11B389183BA71600FF0D25 /* Build configuration list for PBXNativeTarget "Dropin-Player" */;
+			buildPhases = (
+				7D11B362183BA71600FF0D25 /* Sources */,
+				7D11B363183BA71600FF0D25 /* Frameworks */,
+				7D11B364183BA71600FF0D25 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "Dropin-Player";
+			productName = SimplePlayback;
+			productReference = 7D11B366183BA71600FF0D25 /* Dropin-Player.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		7D11B35E183BA71600FF0D25 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				CLASSPREFIX = VDL;
+				LastUpgradeCheck = 0460;
+				ORGANIZATIONNAME = VideoLAN;
+			};
+			buildConfigurationList = 7D11B361183BA71600FF0D25 /* Build configuration list for PBXProject "Dropin-Player" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 7D11B35D183BA71600FF0D25;
+			productRefGroup = 7D11B367183BA71600FF0D25 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				7D11B365183BA71600FF0D25 /* Dropin-Player */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		7D11B364183BA71600FF0D25 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DEBFE70183BEAC300BC53D5 /* InfoPlist.strings in Resources */,
+				7DEBFE86183BFC6300BC53D5 /* VDLMainViewController.xib in Resources */,
+				7DEBFE7D183BECDE00BC53D5 /* Dropin-Player-Info.plist in Resources */,
+				7DEBFE6D183BEAB500BC53D5 /* VDLPlaybackViewController.xib in Resources */,
+				7DEBFE79183BEAD500BC53D5 /* Default@2x.png in Resources */,
+				7DEBFE77183BEAD500BC53D5 /* Default-568h@2x.png in Resources */,
+				7DEBFE78183BEAD500BC53D5 /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		7D11B362183BA71600FF0D25 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DEBFE85183BFC6300BC53D5 /* VDLMainViewController.m in Sources */,
+				7DEBFE68183BEA9E00BC53D5 /* VDLAppDelegate.m in Sources */,
+				7DEBFE7B183BEAD500BC53D5 /* main.m in Sources */,
+				7DEBFE69183BEA9E00BC53D5 /* VDLPlaybackViewController.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		7DEBFE6B183BEAB500BC53D5 /* VDLPlaybackViewController.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				7DEBFE6C183BEAB500BC53D5 /* en */,
+			);
+			name = VDLPlaybackViewController.xib;
+			sourceTree = "<group>";
+		};
+		7DEBFE6E183BEAC300BC53D5 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				7DEBFE6F183BEAC300BC53D5 /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		7D11B387183BA71600FF0D25 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		7D11B388183BA71600FF0D25 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		7D11B38A183BA71600FF0D25 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Dropin-Player/Dropin-Player-Prefix.pch";
+				HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../build/Release-iphonesimulator/include\"";
+				INFOPLIST_FILE = "Dropin-Player/Dropin-Player-Info.plist";
+				LIBRARY_SEARCH_PATHS = (
+					"\"$(SRCROOT)/../../build/Release-iphonesimulator\"",
+					"\"$(SRCROOT)/../../build/Release-iphonesos\"",
+				);
+				PRODUCT_NAME = "Dropin-Player";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		7D11B38B183BA71600FF0D25 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Dropin-Player/Dropin-Player-Prefix.pch";
+				HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../build/Release-iphonesimulator/include\"";
+				INFOPLIST_FILE = "Dropin-Player/Dropin-Player-Info.plist";
+				LIBRARY_SEARCH_PATHS = (
+					"\"$(SRCROOT)/../../build/Release-iphonesimulator\"",
+					"\"$(SRCROOT)/../../build/Release-iphonesos\"",
+				);
+				PRODUCT_NAME = "Dropin-Player";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		7D11B361183BA71600FF0D25 /* Build configuration list for PBXProject "Dropin-Player" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7D11B387183BA71600FF0D25 /* Debug */,
+				7D11B388183BA71600FF0D25 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		7D11B389183BA71600FF0D25 /* Build configuration list for PBXNativeTarget "Dropin-Player" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7D11B38A183BA71600FF0D25 /* Debug */,
+				7D11B38B183BA71600FF0D25 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 7D11B35E183BA71600FF0D25 /* Project object */;
+}

BIN
Examples_iOS/DropIn-Player/Dropin-Player/Default-568h@2x.png


BIN
Examples_iOS/DropIn-Player/Dropin-Player/Default.png


BIN
Examples_iOS/DropIn-Player/Dropin-Player/Default@2x.png


+ 40 - 0
Examples_iOS/DropIn-Player/Dropin-Player/Dropin-Player-Info.plist

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.videolan.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UIViewControllerBasedStatusBarAppearance</key>
+	<false/>
+</dict>
+</plist>

+ 29 - 0
Examples_iOS/DropIn-Player/Dropin-Player/Dropin-Player-Prefix.pch

@@ -0,0 +1,29 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import <UIKit/UIKit.h>
+#import <Foundation/Foundation.h>
+
+#import <MobileVLCKit/MobileVLCKit.h>

+ 38 - 0
Examples_iOS/DropIn-Player/Dropin-Player/VDLAppDelegate.h

@@ -0,0 +1,38 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import <UIKit/UIKit.h>
+
+@class VDLMainViewController;
+
+@interface VDLAppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@property (strong, nonatomic) VDLMainViewController *viewController;
+
+- (void)playStreamFromURL:(NSURL *)url;
+
+@end

+ 90 - 0
Examples_iOS/DropIn-Player/Dropin-Player/VDLAppDelegate.m

@@ -0,0 +1,90 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import "VDLAppDelegate.h"
+
+#import "VDLMainViewController.h"
+#import "VDLPlaybackViewController.h"
+
+@interface VDLAppDelegate ()
+{
+    VDLPlaybackViewController *_playbackViewController;
+}
+
+@end
+
+@implementation VDLAppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+    // Override point for customization after application launch.
+    self.viewController = [[VDLMainViewController alloc] initWithNibName:nil bundle:nil];
+    self.window.rootViewController = self.viewController;
+
+    /* load the playback VC we will inevitably need later */
+    _playbackViewController = [[VDLPlaybackViewController alloc] initWithNibName:nil bundle:nil];
+
+    [self.window makeKeyAndVisible];
+    return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+- (void)playStreamFromURL:(NSURL *)url
+{
+    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:_playbackViewController];
+    navCon.modalPresentationStyle = UIModalPresentationFullScreen;
+    [self.window.rootViewController presentViewController:navCon animated:YES completion:nil];
+
+    [_playbackViewController playMediaFromURL:url];
+}
+
+@end

+ 53 - 0
Examples_iOS/DropIn-Player/Dropin-Player/VDLPlaybackViewController.h

@@ -0,0 +1,53 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import <UIKit/UIKit.h>
+#import <MediaPlayer/MediaPlayer.h>
+
+@interface VDLPlaybackViewController : UIViewController
+
+@property (nonatomic, strong) IBOutlet UIView *movieView;
+@property (nonatomic, strong) IBOutlet UISlider *positionSlider;
+@property (nonatomic, strong) IBOutlet UIButton *timeDisplay;
+@property (nonatomic, strong) IBOutlet UIButton *playPauseButton;
+@property (nonatomic, strong) IBOutlet UIButton *subtitleSwitcherButton;
+@property (nonatomic, strong) IBOutlet UIButton *audioSwitcherButton;
+@property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;
+@property (nonatomic, strong) IBOutlet UIView *controllerPanel;
+@property (nonatomic, strong) IBOutlet MPVolumeView *volumeView;
+
+- (void)playMediaFromURL:(NSURL*)theURL;
+
+- (IBAction)closePlayback:(id)sender;
+
+- (IBAction)positionSliderAction:(id)sender;
+- (IBAction)toggleTimeDisplay:(id)sender;
+
+- (IBAction)playandPause:(id)sender;
+- (IBAction)switchAudioTrack:(id)sender;
+- (IBAction)switchSubtitleTrack:(id)sender;
+- (IBAction)switchVideoDimensions:(id)sender;
+
+@end

+ 291 - 0
Examples_iOS/DropIn-Player/Dropin-Player/VDLPlaybackViewController.m

@@ -0,0 +1,291 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, 
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import "VDLPlaybackViewController.h"
+#import <AVFoundation/AVFoundation.h>
+
+@interface VDLPlaybackViewController () <UIGestureRecognizerDelegate, UIActionSheetDelegate>
+{
+    VLCMediaPlayer *_mediaplayer;
+    BOOL _setPosition;
+    BOOL _displayRemainingTime;
+    int _currentAspectRatioMask;
+    NSArray *_aspectRatios;
+    UIActionSheet *_audiotrackActionSheet;
+    UIActionSheet *_subtitleActionSheet;
+    NSURL *_url;
+}
+
+@end
+
+@implementation VDLPlaybackViewController
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+
+    /* fix-up UI */
+    self.wantsFullScreenLayout = YES;
+    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
+
+    /* we want to influence the system volume */
+    [[AVAudioSession sharedInstance] setDelegate:self];
+
+    /* populate array of supported aspect ratios (there are more!) */
+    _aspectRatios = @[@"DEFAULT", @"FILL_TO_SCREEN", @"4:3", @"16:9", @"16:10", @"2.21:1"];
+
+    /* fix-up the UI */
+    CGRect rect = self.toolbar.frame;
+    rect.size.height += 20.;
+    self.toolbar.frame = rect;
+    [self.timeDisplay setTitle:@"" forState:UIControlStateNormal];
+
+    /* setup gesture recognizer to toggle controls' visibility */
+    _movieView.userInteractionEnabled = NO;
+    UITapGestureRecognizer *tapOnVideoRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleControlsVisible)];
+    tapOnVideoRecognizer.delegate = self;
+    [self.view addGestureRecognizer:tapOnVideoRecognizer];
+}
+
+- (void)playMediaFromURL:(NSURL*)theURL
+{
+    _url = theURL;
+}
+
+- (IBAction)playandPause:(id)sender
+{
+    if (_mediaplayer.isPlaying)
+        [_mediaplayer pause];
+
+    [_mediaplayer play];
+}
+
+- (IBAction)closePlayback:(id)sender
+{
+    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+
+    [self.navigationController setNavigationBarHidden:YES animated:YES];
+
+    /* setup the media player instance, give it a delegate and something to draw into */
+    _mediaplayer = [[VLCMediaPlayer alloc] init];
+    _mediaplayer.delegate = self;
+    _mediaplayer.drawable = self.movieView;
+
+    /* listen for notifications from the player */
+    [_mediaplayer addObserver:self forKeyPath:@"time" options:0 context:nil];
+    [_mediaplayer addObserver:self forKeyPath:@"remainingTime" options:0 context:nil];
+
+    /* create a media object and give it to the player */
+    _mediaplayer.media = [VLCMedia mediaWithURL:_url];
+
+    [_mediaplayer play];
+}
+
+
+- (void)viewWillDisappear:(BOOL)animated
+{
+    [super viewWillDisappear:animated];
+
+    if (_mediaplayer) {
+        @try {
+            [_mediaplayer removeObserver:self forKeyPath:@"time"];
+            [_mediaplayer removeObserver:self forKeyPath:@"remainingTime"];
+        }
+        @catch (NSException *exception) {
+            NSLog(@"we weren't an observer yet");
+        }
+
+        if (_mediaplayer.media)
+            [_mediaplayer stop];
+
+        if (_mediaplayer)
+            _mediaplayer = nil;
+    }
+
+    [self.navigationController setNavigationBarHidden:NO animated:YES];
+    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
+}
+
+- (IBAction)positionSliderAction:(UISlider *)sender
+{
+    /* we need to limit the number of events sent by the slider, since otherwise, the user
+     * wouldn't see the I-frames when seeking on current mobile devices. This isn't a problem
+     * within the Simulator, but especially on older ARMv7 devices, it's clearly noticeable. */
+    [self performSelector:@selector(_setPositionForReal) withObject:nil afterDelay:0.3];
+    _setPosition = NO;
+}
+
+- (void)_setPositionForReal
+{
+    if (!_setPosition) {
+        _mediaplayer.position = _positionSlider.value;
+        _setPosition = YES;
+    }
+}
+
+- (void)mediaPlayerStateChanged:(NSNotification *)aNotification
+{
+    VLCMediaPlayerState currentState = _mediaplayer.state;
+
+    /* distruct view controller on error */
+    if (currentState == VLCMediaPlayerStateError)
+        [self performSelector:@selector(closePlayback:) withObject:nil afterDelay:2.];
+
+    /* or if playback ended */
+    if (currentState == VLCMediaPlayerStateEnded || currentState == VLCMediaPlayerStateStopped)
+        [self performSelector:@selector(closePlayback:) withObject:nil afterDelay:2.];
+
+    [self.playPauseButton setTitle:[_mediaplayer isPlaying]? @"Pause" : @"Play" forState:UIControlStateNormal];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+    self.positionSlider.value = [_mediaplayer position];
+
+    if (_displayRemainingTime)
+        [self.timeDisplay setTitle:[[_mediaplayer remainingTime] stringValue] forState:UIControlStateNormal];
+    else
+        [self.timeDisplay setTitle:[[_mediaplayer time] stringValue] forState:UIControlStateNormal];
+}
+
+- (IBAction)toggleTimeDisplay:(id)sender
+{
+    _displayRemainingTime = !_displayRemainingTime;
+}
+
+- (void)toggleControlsVisible
+{
+    BOOL controlsHidden = !self.controllerPanel.hidden;
+    self.controllerPanel.hidden = controlsHidden;
+    self.toolbar.hidden = controlsHidden;
+    [[UIApplication sharedApplication] setStatusBarHidden:controlsHidden withAnimation:UIStatusBarAnimationFade];
+}
+
+- (IBAction)switchVideoDimensions:(id)sender
+{
+    NSUInteger count = [_aspectRatios count];
+
+    if (_currentAspectRatioMask + 1 > count - 1) {
+        _mediaplayer.videoAspectRatio = NULL;
+        _mediaplayer.videoCropGeometry = NULL;
+        _currentAspectRatioMask = 0;
+        NSLog(@"crop disabled");
+    } else {
+        _currentAspectRatioMask++;
+
+        if ([_aspectRatios[_currentAspectRatioMask] isEqualToString:@"FILL_TO_SCREEN"]) {
+            UIScreen *screen = [UIScreen mainScreen];
+            float f_ar = screen.bounds.size.width / screen.bounds.size.height;
+
+            if (f_ar == (float)(640./1136.)) // iPhone 5 aka 16:9.01
+                _mediaplayer.videoCropGeometry = "16:9";
+            else if (f_ar == (float)(2./3.)) // all other iPhones
+                _mediaplayer.videoCropGeometry = "16:10"; // libvlc doesn't support 2:3 crop
+            else if (f_ar == .75) // all iPads
+                _mediaplayer.videoCropGeometry = "4:3";
+            else if (f_ar == .5625) // AirPlay
+                _mediaplayer.videoCropGeometry = "16:9";
+            else
+                NSLog(@"unknown screen format %f, can't crop", f_ar);
+
+            NSLog(@"FILL_TO_SCREEN");
+            return;
+        }
+
+        _mediaplayer.videoCropGeometry = NULL;
+        _mediaplayer.videoAspectRatio = (char *)[_aspectRatios[_currentAspectRatioMask] UTF8String];
+        NSLog(@"crop switched to %@", _aspectRatios[_currentAspectRatioMask]);
+    }
+}
+
+- (IBAction)switchAudioTrack:(id)sender
+{
+    _audiotrackActionSheet = [[UIActionSheet alloc] initWithTitle:@"audio track selector" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];
+    NSArray *audioTracks = [_mediaplayer audioTrackNames];
+    NSArray *audioTrackIndexes = [_mediaplayer audioTrackIndexes];
+
+    NSUInteger count = [audioTracks count];
+    for (NSUInteger i = 0; i < count; i++) {
+        NSString *indexIndicator = ([audioTrackIndexes[i] intValue] == [_mediaplayer currentAudioTrackIndex])? @"\u2713": @"";
+        NSString *buttonTitle = [NSString stringWithFormat:@"%@ %@", indexIndicator, audioTracks[i]];
+        [_audiotrackActionSheet addButtonWithTitle:buttonTitle];
+    }
+
+    [_audiotrackActionSheet addButtonWithTitle:@"Cancel"];
+    [_audiotrackActionSheet setCancelButtonIndex:[_audiotrackActionSheet numberOfButtons] - 1];
+    [_audiotrackActionSheet showInView:self.audioSwitcherButton];
+}
+
+- (IBAction)switchSubtitleTrack:(id)sender
+{
+    NSArray *spuTracks = [_mediaplayer videoSubTitlesNames];
+    NSArray *spuTrackIndexes = [_mediaplayer videoSubTitlesIndexes];
+
+    NSUInteger count = [spuTracks count];
+    if (count <= 1)
+        return;
+    _subtitleActionSheet = [[UIActionSheet alloc] initWithTitle:@"subtitle track selector" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil];
+
+    for (NSUInteger i = 0; i < count; i++) {
+        NSString *indexIndicator = ([spuTrackIndexes[i] intValue] == [_mediaplayer currentVideoSubTitleIndex])? @"\u2713": @"";
+        NSString *buttonTitle = [NSString stringWithFormat:@"%@ %@", indexIndicator, spuTracks[i]];
+        [_subtitleActionSheet addButtonWithTitle:buttonTitle];
+    }
+
+    [_subtitleActionSheet addButtonWithTitle:@"Cancel"];
+    [_subtitleActionSheet setCancelButtonIndex:[_subtitleActionSheet numberOfButtons] - 1];
+    [_subtitleActionSheet showInView: self.subtitleSwitcherButton];
+}
+
+- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
+    if (buttonIndex == [actionSheet cancelButtonIndex])
+        return;
+
+    NSArray *indexArray;
+    if (actionSheet == _subtitleActionSheet) {
+        indexArray = _mediaplayer.videoSubTitlesIndexes;
+        if (buttonIndex <= indexArray.count) {
+            _mediaplayer.currentVideoSubTitleIndex = [indexArray[buttonIndex] intValue];
+        }
+    } else if (actionSheet == _audiotrackActionSheet) {
+        indexArray = _mediaplayer.audioTrackIndexes;
+        if (buttonIndex <= indexArray.count) {
+            _mediaplayer.currentAudioTrackIndex = [indexArray[buttonIndex] intValue];
+        }
+    }
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 2 - 0
Examples_iOS/DropIn-Player/Dropin-Player/en.lproj/InfoPlist.strings

@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+

+ 598 - 0
Examples_iOS/DropIn-Player/Dropin-Player/en.lproj/VDLPlaybackViewController.xib

@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
+	<data>
+		<int key="IBDocument.SystemTarget">1552</int>
+		<string key="IBDocument.SystemVersion">12F45</string>
+		<string key="IBDocument.InterfaceBuilderVersion">4514</string>
+		<string key="IBDocument.AppKitVersion">1187.40</string>
+		<string key="IBDocument.HIToolboxVersion">626.00</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+			<string key="NS.object.0">3747</string>
+		</object>
+		<array key="IBDocument.IntegratedClassDependencies">
+			<string>IBProxyObject</string>
+			<string>IBUIBarButtonItem</string>
+			<string>IBUIButton</string>
+			<string>IBUINavigationBar</string>
+			<string>IBUINavigationItem</string>
+			<string>IBUISlider</string>
+			<string>IBUIView</string>
+		</array>
+		<array key="IBDocument.PluginDependencies">
+			<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+		</array>
+		<object class="NSMutableDictionary" key="IBDocument.Metadata">
+			<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+			<integer value="1" key="NS.object.0"/>
+		</object>
+		<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+			<object class="IBProxyObject" id="372490531">
+				<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+			</object>
+			<object class="IBProxyObject" id="843779117">
+				<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+			</object>
+			<object class="IBUIView" id="774585933">
+				<nil key="NSNextResponder"/>
+				<int key="NSvFlags">274</int>
+				<array class="NSMutableArray" key="NSSubviews">
+					<object class="IBUIView" id="970364256">
+						<reference key="NSNextResponder" ref="774585933"/>
+						<int key="NSvFlags">274</int>
+						<string key="NSFrameSize">{320, 550}</string>
+						<reference key="NSSuperview" ref="774585933"/>
+						<reference key="NSNextKeyView" ref="254588830"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">3</int>
+							<bytes key="NSWhite">MAA</bytes>
+						</object>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+					</object>
+					<object class="IBUINavigationBar" id="254588830">
+						<reference key="NSNextResponder" ref="774585933"/>
+						<int key="NSvFlags">290</int>
+						<array class="NSMutableArray" key="NSSubviews"/>
+						<string key="NSFrameSize">{320, 44}</string>
+						<reference key="NSSuperview" ref="774585933"/>
+						<reference key="NSNextKeyView" ref="897908297"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+						<int key="IBUIBarStyle">2</int>
+						<array key="IBUIItems">
+							<object class="IBUINavigationItem" id="231808411">
+								<reference key="IBUINavigationBar" ref="254588830"/>
+								<string key="IBUITitle">Title</string>
+								<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+							</object>
+						</array>
+					</object>
+					<object class="IBUIView" id="897908297">
+						<reference key="NSNextResponder" ref="774585933"/>
+						<int key="NSvFlags">269</int>
+						<array class="NSMutableArray" key="NSSubviews">
+							<object class="IBUIButton" id="695335035">
+								<reference key="NSNextResponder" ref="897908297"/>
+								<int key="NSvFlags">292</int>
+								<string key="NSFrame">{{139, 13}, {44, 26}}</string>
+								<reference key="NSSuperview" ref="897908297"/>
+								<reference key="NSNextKeyView" ref="776049213"/>
+								<string key="NSReuseIdentifierKey">_NS:9</string>
+								<object class="NSColor" key="IBUIBackgroundColor" id="665591321">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MCAwAA</bytes>
+								</object>
+								<bool key="IBUIOpaque">NO</bool>
+								<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+								<int key="IBUIContentHorizontalAlignment">0</int>
+								<int key="IBUIContentVerticalAlignment">0</int>
+								<double key="IBUIContentEdgeInsets.top">4</double>
+								<double key="IBUIContentEdgeInsets.bottom">4</double>
+								<double key="IBUIContentEdgeInsets.left">0.0</double>
+								<double key="IBUIContentEdgeInsets.right">0.0</double>
+								<object class="NSColor" key="IBUIHighlightedTitleColor" id="733852039">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MQA</bytes>
+								</object>
+								<string key="IBUINormalTitle">Pause</string>
+								<object class="NSColor" key="IBUINormalTitleShadowColor" id="733518820">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MC41AA</bytes>
+								</object>
+								<object class="IBUIFontDescription" key="IBUIFontDescription" id="18318103">
+									<int key="type">2</int>
+									<double key="pointSize">15</double>
+								</object>
+								<object class="NSFont" key="IBUIFont" id="909620577">
+									<string key="NSName">HelveticaNeue-Bold</string>
+									<double key="NSSize">15</double>
+									<int key="NSfFlags">16</int>
+								</object>
+							</object>
+							<object class="IBUIButton" id="288523396">
+								<reference key="NSNextResponder" ref="897908297"/>
+								<int key="NSvFlags">292</int>
+								<string key="NSFrame">{{20, 13}, {41, 26}}</string>
+								<reference key="NSSuperview" ref="897908297"/>
+								<reference key="NSNextKeyView" ref="695335035"/>
+								<string key="NSReuseIdentifierKey">_NS:9</string>
+								<reference key="IBUIBackgroundColor" ref="665591321"/>
+								<bool key="IBUIOpaque">NO</bool>
+								<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+								<int key="IBUIContentHorizontalAlignment">0</int>
+								<int key="IBUIContentVerticalAlignment">0</int>
+								<double key="IBUIContentEdgeInsets.top">4</double>
+								<double key="IBUIContentEdgeInsets.bottom">4</double>
+								<double key="IBUIContentEdgeInsets.left">0.0</double>
+								<double key="IBUIContentEdgeInsets.right">0.0</double>
+								<reference key="IBUIHighlightedTitleColor" ref="733852039"/>
+								<string key="IBUINormalTitle">Audio</string>
+								<reference key="IBUINormalTitleShadowColor" ref="733518820"/>
+								<reference key="IBUIFontDescription" ref="18318103"/>
+								<reference key="IBUIFont" ref="909620577"/>
+							</object>
+							<object class="IBUIButton" id="776049213">
+								<reference key="NSNextResponder" ref="897908297"/>
+								<int key="NSvFlags">292</int>
+								<string key="NSFrame">{{238, 13}, {62, 26}}</string>
+								<reference key="NSSuperview" ref="897908297"/>
+								<reference key="NSNextKeyView" ref="396325696"/>
+								<string key="NSReuseIdentifierKey">_NS:9</string>
+								<reference key="IBUIBackgroundColor" ref="665591321"/>
+								<bool key="IBUIOpaque">NO</bool>
+								<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+								<int key="IBUIContentHorizontalAlignment">0</int>
+								<int key="IBUIContentVerticalAlignment">0</int>
+								<double key="IBUIContentEdgeInsets.top">4</double>
+								<double key="IBUIContentEdgeInsets.bottom">4</double>
+								<double key="IBUIContentEdgeInsets.left">0.0</double>
+								<double key="IBUIContentEdgeInsets.right">0.0</double>
+								<reference key="IBUIHighlightedTitleColor" ref="733852039"/>
+								<string key="IBUINormalTitle">Subtitles</string>
+								<reference key="IBUINormalTitleShadowColor" ref="733518820"/>
+								<reference key="IBUIFontDescription" ref="18318103"/>
+								<reference key="IBUIFont" ref="909620577"/>
+							</object>
+							<object class="IBUIView" id="396325696">
+								<reference key="NSNextResponder" ref="897908297"/>
+								<int key="NSvFlags">292</int>
+								<string key="NSFrame">{{20, 47}, {284, 22}}</string>
+								<reference key="NSSuperview" ref="897908297"/>
+								<string key="NSReuseIdentifierKey">_NS:9</string>
+								<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+							</object>
+						</array>
+						<string key="NSFrame">{{0, 408}, {320, 82}}</string>
+						<reference key="NSSuperview" ref="774585933"/>
+						<reference key="NSNextKeyView" ref="288523396"/>
+						<string key="NSReuseIdentifierKey">_NS:10</string>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">3</int>
+							<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+						</object>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+					</object>
+				</array>
+				<string key="NSFrame">{{0, 20}, {320, 548}}</string>
+				<reference key="NSNextKeyView" ref="970364256"/>
+				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+				<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+				<object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
+					<string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
+					<object class="NSMutableDictionary" key="IBUINormalizedOrientationToSizeMap">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<array key="dict.sortedKeys">
+							<integer value="1"/>
+							<integer value="3"/>
+						</array>
+						<array key="dict.values">
+							<string>{320, 568}</string>
+							<string>{568, 320}</string>
+						</array>
+					</object>
+					<string key="IBUITargetRuntime">IBCocoaTouchFramework</string>
+					<string key="IBUIDisplayName">Retina 4-inch Full Screen</string>
+					<int key="IBUIType">2</int>
+				</object>
+				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+			</object>
+			<object class="IBUIView" id="646556287">
+				<nil key="NSNextResponder"/>
+				<int key="NSvFlags">290</int>
+				<array class="NSMutableArray" key="NSSubviews">
+					<object class="IBUISlider" id="134433983">
+						<reference key="NSNextResponder" ref="646556287"/>
+						<int key="NSvFlags">290</int>
+						<string key="NSFrame">{{5, 10}, {188, 23}}</string>
+						<reference key="NSSuperview" ref="646556287"/>
+						<reference key="NSNextKeyView" ref="438248784"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<string key="NSHuggingPriority">{250, 250}</string>
+						<bool key="IBUIOpaque">NO</bool>
+						<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
+							<integer value="512" key="IBUIAccessibilityTraits"/>
+						</object>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+						<int key="IBUIContentHorizontalAlignment">0</int>
+						<int key="IBUIContentVerticalAlignment">0</int>
+						<float key="IBUIValue">0.5</float>
+					</object>
+					<object class="IBUIButton" id="637398771">
+						<reference key="NSNextResponder" ref="646556287"/>
+						<int key="NSvFlags">289</int>
+						<string key="NSFrame">{{241, 6}, {59, 29}}</string>
+						<reference key="NSSuperview" ref="646556287"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<bool key="IBUIOpaque">NO</bool>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+						<int key="IBUIContentHorizontalAlignment">0</int>
+						<int key="IBUIContentVerticalAlignment">0</int>
+						<reference key="IBUIHighlightedTitleColor" ref="733852039"/>
+						<string key="IBUINormalTitle">VidDi</string>
+						<reference key="IBUIFontDescription" ref="18318103"/>
+						<reference key="IBUIFont" ref="909620577"/>
+					</object>
+					<object class="IBUIButton" id="438248784">
+						<reference key="NSNextResponder" ref="646556287"/>
+						<int key="NSvFlags">289</int>
+						<string key="NSFrame">{{193, 11}, {50, 20}}</string>
+						<reference key="NSSuperview" ref="646556287"/>
+						<reference key="NSNextKeyView" ref="637398771"/>
+						<string key="NSReuseIdentifierKey">_NS:9</string>
+						<bool key="IBUIOpaque">NO</bool>
+						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+						<int key="IBUIContentHorizontalAlignment">0</int>
+						<int key="IBUIContentVerticalAlignment">0</int>
+						<reference key="IBUIHighlightedTitleColor" ref="733852039"/>
+						<string key="IBUINormalTitle">--:--</string>
+						<reference key="IBUINormalTitleShadowColor" ref="733518820"/>
+						<object class="IBUIFontDescription" key="IBUIFontDescription">
+							<int key="type">2</int>
+							<double key="pointSize">13</double>
+						</object>
+						<object class="NSFont" key="IBUIFont">
+							<string key="NSName">HelveticaNeue-Bold</string>
+							<double key="NSSize">13</double>
+							<int key="NSfFlags">16</int>
+						</object>
+					</object>
+				</array>
+				<string key="NSFrameSize">{300, 40}</string>
+				<reference key="NSNextKeyView" ref="134433983"/>
+				<string key="NSReuseIdentifierKey">_NS:9</string>
+				<reference key="IBUIBackgroundColor" ref="665591321"/>
+				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+			</object>
+			<object class="IBUIBarButtonItem" id="272455831">
+				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+				<int key="IBUIStyle">1</int>
+				<int key="IBUISystemItemIdentifier">0</int>
+			</object>
+		</array>
+		<object class="IBObjectContainer" key="IBDocument.Objects">
+			<array class="NSMutableArray" key="connectionRecords">
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">view</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="774585933"/>
+					</object>
+					<int key="connectionID">7</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">movieView</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="970364256"/>
+					</object>
+					<int key="connectionID">29</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">positionSlider</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="134433983"/>
+					</object>
+					<int key="connectionID">179</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">timeDisplay</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="438248784"/>
+					</object>
+					<int key="connectionID">181</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">volumeView</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="396325696"/>
+					</object>
+					<int key="connectionID">182</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">controllerPanel</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="897908297"/>
+					</object>
+					<int key="connectionID">183</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">toolbar</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="254588830"/>
+					</object>
+					<int key="connectionID">184</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">audioSwitcherButton</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="288523396"/>
+					</object>
+					<int key="connectionID">190</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">subtitleSwitcherButton</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="776049213"/>
+					</object>
+					<int key="connectionID">191</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">playPauseButton</string>
+						<reference key="source" ref="372490531"/>
+						<reference key="destination" ref="695335035"/>
+					</object>
+					<int key="connectionID">192</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">toggleTimeDisplay:</string>
+						<reference key="source" ref="438248784"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">7</int>
+					</object>
+					<int key="connectionID">180</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">switchVideoDimensions:</string>
+						<reference key="source" ref="637398771"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">7</int>
+					</object>
+					<int key="connectionID">177</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">positionSliderAction:</string>
+						<reference key="source" ref="134433983"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">13</int>
+					</object>
+					<int key="connectionID">178</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">switchSubtitleTrack:</string>
+						<reference key="source" ref="776049213"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">7</int>
+					</object>
+					<int key="connectionID">176</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">playandPause:</string>
+						<reference key="source" ref="695335035"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">7</int>
+					</object>
+					<int key="connectionID">174</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">switchAudioTrack:</string>
+						<reference key="source" ref="288523396"/>
+						<reference key="destination" ref="372490531"/>
+						<int key="IBEventType">7</int>
+					</object>
+					<int key="connectionID">175</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">titleView</string>
+						<reference key="source" ref="231808411"/>
+						<reference key="destination" ref="646556287"/>
+					</object>
+					<int key="connectionID">186</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchOutletConnection" key="connection">
+						<string key="label">leftBarButtonItem</string>
+						<reference key="source" ref="231808411"/>
+						<reference key="destination" ref="272455831"/>
+					</object>
+					<int key="connectionID">188</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBCocoaTouchEventConnection" key="connection">
+						<string key="label">closePlayback:</string>
+						<reference key="source" ref="272455831"/>
+						<reference key="destination" ref="372490531"/>
+					</object>
+					<int key="connectionID">189</int>
+				</object>
+			</array>
+			<object class="IBMutableOrderedSet" key="objectRecords">
+				<array key="orderedObjects">
+					<object class="IBObjectRecord">
+						<int key="objectID">0</int>
+						<array key="object" id="0"/>
+						<reference key="children" ref="1000"/>
+						<nil key="parent"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-1</int>
+						<reference key="object" ref="372490531"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">File's Owner</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-2</int>
+						<reference key="object" ref="843779117"/>
+						<reference key="parent" ref="0"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">6</int>
+						<reference key="object" ref="774585933"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="254588830"/>
+							<reference ref="970364256"/>
+							<reference ref="897908297"/>
+						</array>
+						<reference key="parent" ref="0"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">14</int>
+						<reference key="object" ref="970364256"/>
+						<reference key="parent" ref="774585933"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">30</int>
+						<reference key="object" ref="646556287"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="438248784"/>
+							<reference ref="637398771"/>
+							<reference ref="134433983"/>
+						</array>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Time view</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">31</int>
+						<reference key="object" ref="438248784"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="646556287"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">32</int>
+						<reference key="object" ref="637398771"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="646556287"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">33</int>
+						<reference key="object" ref="134433983"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="646556287"/>
+						<string key="objectName">Position Slider</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">45</int>
+						<reference key="object" ref="254588830"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="231808411"/>
+						</array>
+						<reference key="parent" ref="774585933"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">59</int>
+						<reference key="object" ref="231808411"/>
+						<reference key="parent" ref="254588830"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">47</int>
+						<reference key="object" ref="897908297"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="396325696"/>
+							<reference ref="695335035"/>
+							<reference ref="776049213"/>
+							<reference ref="288523396"/>
+						</array>
+						<reference key="parent" ref="774585933"/>
+						<string key="objectName">Controls panel</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">56</int>
+						<reference key="object" ref="396325696"/>
+						<reference key="parent" ref="897908297"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">52</int>
+						<reference key="object" ref="288523396"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="897908297"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">50</int>
+						<reference key="object" ref="695335035"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="897908297"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">48</int>
+						<reference key="object" ref="776049213"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="897908297"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">187</int>
+						<reference key="object" ref="272455831"/>
+						<reference key="parent" ref="0"/>
+					</object>
+				</array>
+			</object>
+			<dictionary class="NSMutableDictionary" key="flattenedProperties">
+				<string key="-1.CustomClassName">VDLPlaybackViewController</string>
+				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="-2.CustomClassName">UIResponder</string>
+				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="187.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="30.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="31.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="47.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="48.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="50.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="52.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="56.CustomClassName">MPVolumeView</string>
+				<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="59.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+			</dictionary>
+			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+			<nil key="activeLocalization"/>
+			<dictionary class="NSMutableDictionary" key="localizations"/>
+			<nil key="sourceID"/>
+			<int key="maxID">192</int>
+		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes"/>
+		<int key="IBDocument.localizationMode">0</int>
+		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+		<bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">YES</bool>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+			<real value="1552" key="NS.object.0"/>
+		</object>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+			<integer value="4600" key="NS.object.0"/>
+		</object>
+		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+		<int key="IBDocument.defaultPropertyAccessControl">3</int>
+		<string key="IBCocoaTouchPluginVersion">3747</string>
+	</data>
+</archive>

+ 35 - 0
Examples_iOS/DropIn-Player/Dropin-Player/main.m

@@ -0,0 +1,35 @@
+/* Copyright (c) 2013, Felix Paul Kühne and VideoLAN
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE. */
+
+#import <UIKit/UIKit.h>
+
+#import "VDLAppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+    @autoreleasepool {
+        return UIApplicationMain(argc, argv, nil, NSStringFromClass([VDLAppDelegate class]));
+    }
+}

+ 15 - 0
Examples_iOS/DropIn-Player/VDLMainViewController.h

@@ -0,0 +1,15 @@
+//
+//  VDLMainViewController.h
+//  Dropin-Player
+//
+//  Created by Felix Paul Kühne on 19.11.13.
+//  Copyright (c) 2013 VideoLAN. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface VDLMainViewController : UIViewController
+
+- (IBAction)startPlayback:(id)sender;
+
+@end

+ 45 - 0
Examples_iOS/DropIn-Player/VDLMainViewController.m

@@ -0,0 +1,45 @@
+//
+//  VDLMainViewController.m
+//  Dropin-Player
+//
+//  Created by Felix Paul Kühne on 19.11.13.
+//  Copyright (c) 2013 VideoLAN. All rights reserved.
+//
+
+#import "VDLMainViewController.h"
+#import "VDLAppDelegate.h"
+
+@interface VDLMainViewController ()
+
+@end
+
+@implementation VDLMainViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+}
+
+- (IBAction)startPlayback:(id)sender
+{
+    VDLAppDelegate *appDelegate = (VDLAppDelegate *)[UIApplication sharedApplication].delegate;
+    [appDelegate playStreamFromURL:[NSURL URLWithString:@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"]];
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 34 - 0
Examples_iOS/DropIn-Player/VDLMainViewController.xib

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4514" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
+    <dependencies>
+        <deployment defaultVersion="1552" identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VDLMainViewController">
+            <connections>
+                <outlet property="view" destination="1" id="3"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="1">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9Rz-Bs-fHG">
+                    <rect key="frame" x="86" y="269" width="149" height="30"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <state key="normal" title="Start Playback">
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="startPlayback:" destination="-1" eventType="touchUpInside" id="rRa-Q4-l36"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+            <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
+            <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
+        </view>
+    </objects>
+</document>