From 3b56db192c63b134cac767b4a09171d27ca1241c Mon Sep 17 00:00:00 2001 From: Xavi Artigas Date: Thu, 9 May 2013 18:07:30 +0200 Subject: [PATCH] First iOS Tutorial 4 (a copy of Tutorial 3) --- .../project.pbxproj | 317 ++++++ .../xcode iOS/Tutorial 4/AppDelegate.h | 15 + .../xcode iOS/Tutorial 4/AppDelegate.m | 46 + .../xcode iOS/Tutorial 4/Default-568h@2x.png | Bin 0 -> 18594 bytes .../xcode iOS/Tutorial 4/Default.png | Bin 0 -> 6540 bytes .../xcode iOS/Tutorial 4/Default@2x.png | Bin 0 -> 16107 bytes .../xcode iOS/Tutorial 4/EaglUIVIew.h | 55 + .../xcode iOS/Tutorial 4/EaglUIVIew.m | 57 + .../xcode iOS/Tutorial 4/GStreamerBackend.h | 17 + .../xcode iOS/Tutorial 4/GStreamerBackend.m | 191 ++++ .../Tutorial 4/GStreamerBackendDelegate.h | 14 + .../Tutorial 4/Images/appicon-4-iPad.png | Bin 0 -> 6891 bytes .../Tutorial 4/Images/appicon-4-iPad@2x.png | Bin 0 -> 17472 bytes .../Tutorial 4/Images/appicon-4-iPhone.png | Bin 0 -> 5404 bytes .../Tutorial 4/Images/appicon-4-iPhone@2x.png | Bin 0 -> 12573 bytes .../Tutorial 4/Tutorial 4-Info.plist | 62 ++ .../Tutorial 4/Tutorial 4-Prefix.pch | 14 + .../xcode iOS/Tutorial 4/ViewController.h | 21 + .../xcode iOS/Tutorial 4/ViewController.m | 88 ++ .../Tutorial 4/en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard_iPad.storyboard | 114 ++ .../en.lproj/MainStoryboard_iPhone.storyboard | 108 ++ .../xcode iOS/Tutorial 4/gst_ios_init.c | 995 ++++++++++++++++++ .../xcode iOS/Tutorial 4/gst_ios_init.h | 25 + gst-sdk/tutorials/xcode iOS/Tutorial 4/main.m | 13 + 25 files changed, 2154 insertions(+) create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.h create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.m create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/Default-568h@2x.png create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/Default.png create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/Default@2x.png create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.h create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.m create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.h create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.m create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackendDelegate.h create mode 100755 gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad.png create mode 100755 gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad@2x.png create mode 100755 gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPhone.png create mode 100755 gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPhone@2x.png create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Info.plist create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Prefix.pch create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.h create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.m create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/InfoPlist.strings create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPad.storyboard create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPhone.storyboard create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.c create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.h create mode 100644 gst-sdk/tutorials/xcode iOS/Tutorial 4/main.m diff --git a/gst-sdk/tutorials/xcode iOS/GStreamer iOS Tutorials.xcodeproj/project.pbxproj b/gst-sdk/tutorials/xcode iOS/GStreamer iOS Tutorials.xcodeproj/project.pbxproj index 9d2055068f..061137bd97 100644 --- a/gst-sdk/tutorials/xcode iOS/GStreamer iOS Tutorials.xcodeproj/project.pbxproj +++ b/gst-sdk/tutorials/xcode iOS/GStreamer iOS Tutorials.xcodeproj/project.pbxproj @@ -64,6 +64,26 @@ C6B6129617396231003FC410 /* appicon-3-iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B6129217396231003FC410 /* appicon-3-iPhone.png */; }; C6B6129717396231003FC410 /* appicon-3-iPhone@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B6129317396231003FC410 /* appicon-3-iPhone@2x.png */; }; C6EB857C173A4D9500C3953D /* EaglUIVIew.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB857B173A4D9500C3953D /* EaglUIVIew.m */; }; + C6EB8582173BEE5E00C3953D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C67B40CC172EBEA3008359CC /* UIKit.framework */; }; + C6EB8583173BEE5E00C3953D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C67B40CE172EBEA3008359CC /* Foundation.framework */; }; + C6EB8584173BEE5E00C3953D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C67B40D0172EBEA3008359CC /* CoreGraphics.framework */; }; + C6EB8585173BEE5E00C3953D /* GStreamer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C67B40D2172EBEA3008359CC /* GStreamer.framework */; }; + C6EB858B173BEE5E00C3953D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C6EB8589173BEE5E00C3953D /* InfoPlist.strings */; }; + C6EB858D173BEE5E00C3953D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB858C173BEE5E00C3953D /* main.m */; }; + C6EB8591173BEE5E00C3953D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB8590173BEE5E00C3953D /* AppDelegate.m */; }; + C6EB8593173BEE5E00C3953D /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB8592173BEE5E00C3953D /* Default.png */; }; + C6EB8595173BEE5E00C3953D /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB8594173BEE5E00C3953D /* Default@2x.png */; }; + C6EB8597173BEE5E00C3953D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB8596173BEE5E00C3953D /* Default-568h@2x.png */; }; + C6EB859A173BEE5E00C3953D /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C6EB8598173BEE5E00C3953D /* MainStoryboard_iPhone.storyboard */; }; + C6EB859D173BEE5E00C3953D /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C6EB859B173BEE5E00C3953D /* MainStoryboard_iPad.storyboard */; }; + C6EB85A0173BEE5E00C3953D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB859F173BEE5E00C3953D /* ViewController.m */; }; + C6EB85B1173BEF2600C3953D /* EaglUIVIew.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB85AB173BEF2600C3953D /* EaglUIVIew.m */; }; + C6EB85B2173BEF2600C3953D /* gst_ios_init.c in Sources */ = {isa = PBXBuildFile; fileRef = C6EB85AC173BEF2600C3953D /* gst_ios_init.c */; }; + C6EB85B3173BEF2600C3953D /* GStreamerBackend.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EB85AF173BEF2600C3953D /* GStreamerBackend.m */; }; + C6EB85B9173BEFF800C3953D /* appicon-4-iPad.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB85B5173BEFF800C3953D /* appicon-4-iPad.png */; }; + C6EB85BA173BEFF800C3953D /* appicon-4-iPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB85B6173BEFF800C3953D /* appicon-4-iPad@2x.png */; }; + C6EB85BB173BEFF800C3953D /* appicon-4-iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB85B7173BEFF800C3953D /* appicon-4-iPhone.png */; }; + C6EB85BC173BEFF800C3953D /* appicon-4-iPhone@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EB85B8173BEFF800C3953D /* appicon-4-iPhone@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -141,6 +161,31 @@ C6B6129317396231003FC410 /* appicon-3-iPhone@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appicon-3-iPhone@2x.png"; sourceTree = ""; }; C6EB857A173A4D9500C3953D /* EaglUIVIew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EaglUIVIew.h; sourceTree = ""; }; C6EB857B173A4D9500C3953D /* EaglUIVIew.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EaglUIVIew.m; sourceTree = ""; }; + C6EB8581173BEE5D00C3953D /* Tutorial 4.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Tutorial 4.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + C6EB8588173BEE5E00C3953D /* Tutorial 4-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tutorial 4-Info.plist"; sourceTree = ""; }; + C6EB858A173BEE5E00C3953D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + C6EB858C173BEE5E00C3953D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + C6EB858E173BEE5E00C3953D /* Tutorial 4-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tutorial 4-Prefix.pch"; sourceTree = ""; }; + C6EB858F173BEE5E00C3953D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + C6EB8590173BEE5E00C3953D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + C6EB8592173BEE5E00C3953D /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + C6EB8594173BEE5E00C3953D /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + C6EB8596173BEE5E00C3953D /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + C6EB8599173BEE5E00C3953D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = ""; }; + C6EB859C173BEE5E00C3953D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = ""; }; + C6EB859E173BEE5E00C3953D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + C6EB859F173BEE5E00C3953D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + C6EB85AA173BEF2600C3953D /* EaglUIVIew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EaglUIVIew.h; sourceTree = ""; }; + C6EB85AB173BEF2600C3953D /* EaglUIVIew.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EaglUIVIew.m; sourceTree = ""; }; + C6EB85AC173BEF2600C3953D /* gst_ios_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gst_ios_init.c; sourceTree = ""; }; + C6EB85AD173BEF2600C3953D /* gst_ios_init.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gst_ios_init.h; sourceTree = ""; }; + C6EB85AE173BEF2600C3953D /* GStreamerBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GStreamerBackend.h; sourceTree = ""; }; + C6EB85AF173BEF2600C3953D /* GStreamerBackend.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GStreamerBackend.m; sourceTree = ""; }; + C6EB85B0173BEF2600C3953D /* GStreamerBackendDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GStreamerBackendDelegate.h; sourceTree = ""; }; + C6EB85B5173BEFF800C3953D /* appicon-4-iPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appicon-4-iPad.png"; sourceTree = ""; }; + C6EB85B6173BEFF800C3953D /* appicon-4-iPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appicon-4-iPad@2x.png"; sourceTree = ""; }; + C6EB85B7173BEFF800C3953D /* appicon-4-iPhone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appicon-4-iPhone.png"; sourceTree = ""; }; + C6EB85B8173BEFF800C3953D /* appicon-4-iPhone@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appicon-4-iPhone@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -177,6 +222,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C6EB857E173BEE5D00C3953D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C6EB8582173BEE5E00C3953D /* UIKit.framework in Frameworks */, + C6EB8583173BEE5E00C3953D /* Foundation.framework in Frameworks */, + C6EB8584173BEE5E00C3953D /* CoreGraphics.framework in Frameworks */, + C6EB8585173BEE5E00C3953D /* GStreamer.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -186,6 +242,7 @@ C67B40D4172EBEA3008359CC /* Tutorial 1 */, C67B4104172FC7F4008359CC /* Tutorial 2 */, C6B6126417395CF2003FC410 /* Tutorial 3 */, + C6EB8586173BEE5E00C3953D /* Tutorial 4 */, C67B40CB172EBEA3008359CC /* Frameworks */, C67B40CA172EBEA3008359CC /* Products */, ); @@ -197,6 +254,7 @@ C67B40C9172EBEA3008359CC /* Tutorial 1.app */, C67B40FF172FC7F4008359CC /* Tutorial 2.app */, C6B6125F17395CF1003FC410 /* Tutorial 3.app */, + C6EB8581173BEE5D00C3953D /* Tutorial 4.app */, ); name = Products; sourceTree = ""; @@ -348,6 +406,53 @@ path = Images; sourceTree = ""; }; + C6EB8586173BEE5E00C3953D /* Tutorial 4 */ = { + isa = PBXGroup; + children = ( + C6EB85AA173BEF2600C3953D /* EaglUIVIew.h */, + C6EB85AB173BEF2600C3953D /* EaglUIVIew.m */, + C6EB85B4173BEFF800C3953D /* Images */, + C6EB85AE173BEF2600C3953D /* GStreamerBackend.h */, + C6EB85AF173BEF2600C3953D /* GStreamerBackend.m */, + C6EB858F173BEE5E00C3953D /* AppDelegate.h */, + C6EB8590173BEE5E00C3953D /* AppDelegate.m */, + C6EB8598173BEE5E00C3953D /* MainStoryboard_iPhone.storyboard */, + C6EB859B173BEE5E00C3953D /* MainStoryboard_iPad.storyboard */, + C6EB859E173BEE5E00C3953D /* ViewController.h */, + C6EB859F173BEE5E00C3953D /* ViewController.m */, + C6EB8587173BEE5E00C3953D /* Supporting Files */, + ); + path = "Tutorial 4"; + sourceTree = ""; + }; + C6EB8587173BEE5E00C3953D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C6EB85AC173BEF2600C3953D /* gst_ios_init.c */, + C6EB85AD173BEF2600C3953D /* gst_ios_init.h */, + C6EB8588173BEE5E00C3953D /* Tutorial 4-Info.plist */, + C6EB8589173BEE5E00C3953D /* InfoPlist.strings */, + C6EB858C173BEE5E00C3953D /* main.m */, + C6EB858E173BEE5E00C3953D /* Tutorial 4-Prefix.pch */, + C6EB8592173BEE5E00C3953D /* Default.png */, + C6EB8594173BEE5E00C3953D /* Default@2x.png */, + C6EB8596173BEE5E00C3953D /* Default-568h@2x.png */, + C6EB85B0173BEF2600C3953D /* GStreamerBackendDelegate.h */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + C6EB85B4173BEFF800C3953D /* Images */ = { + isa = PBXGroup; + children = ( + C6EB85B5173BEFF800C3953D /* appicon-4-iPad.png */, + C6EB85B6173BEFF800C3953D /* appicon-4-iPad@2x.png */, + C6EB85B7173BEFF800C3953D /* appicon-4-iPhone.png */, + C6EB85B8173BEFF800C3953D /* appicon-4-iPhone@2x.png */, + ); + path = Images; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -402,6 +507,23 @@ productReference = C6B6125F17395CF1003FC410 /* Tutorial 3.app */; productType = "com.apple.product-type.application"; }; + C6EB8580173BEE5D00C3953D /* Tutorial 4 */ = { + isa = PBXNativeTarget; + buildConfigurationList = C6EB85A7173BEE5F00C3953D /* Build configuration list for PBXNativeTarget "Tutorial 4" */; + buildPhases = ( + C6EB857D173BEE5D00C3953D /* Sources */, + C6EB857E173BEE5D00C3953D /* Frameworks */, + C6EB857F173BEE5D00C3953D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Tutorial 4"; + productName = "Tutorial 4"; + productReference = C6EB8581173BEE5D00C3953D /* Tutorial 4.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -425,6 +547,7 @@ C67B40C8172EBEA3008359CC /* Tutorial 1 */, C67B40FE172FC7F4008359CC /* Tutorial 2 */, C6B6125E17395CF1003FC410 /* Tutorial 3 */, + C6EB8580173BEE5D00C3953D /* Tutorial 4 */, ); }; /* End PBXProject section */ @@ -480,6 +603,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C6EB857F173BEE5D00C3953D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C6EB858B173BEE5E00C3953D /* InfoPlist.strings in Resources */, + C6EB8593173BEE5E00C3953D /* Default.png in Resources */, + C6EB8595173BEE5E00C3953D /* Default@2x.png in Resources */, + C6EB8597173BEE5E00C3953D /* Default-568h@2x.png in Resources */, + C6EB859A173BEE5E00C3953D /* MainStoryboard_iPhone.storyboard in Resources */, + C6EB859D173BEE5E00C3953D /* MainStoryboard_iPad.storyboard in Resources */, + C6EB85B9173BEFF800C3953D /* appicon-4-iPad.png in Resources */, + C6EB85BA173BEFF800C3953D /* appicon-4-iPad@2x.png in Resources */, + C6EB85BB173BEFF800C3953D /* appicon-4-iPhone.png in Resources */, + C6EB85BC173BEFF800C3953D /* appicon-4-iPhone@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -520,6 +660,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C6EB857D173BEE5D00C3953D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C6EB858D173BEE5E00C3953D /* main.m in Sources */, + C6EB8591173BEE5E00C3953D /* AppDelegate.m in Sources */, + C6EB85A0173BEE5E00C3953D /* ViewController.m in Sources */, + C6EB85B1173BEF2600C3953D /* EaglUIVIew.m in Sources */, + C6EB85B2173BEF2600C3953D /* gst_ios_init.c in Sources */, + C6EB85B3173BEF2600C3953D /* GStreamerBackend.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ @@ -595,6 +748,30 @@ name = MainStoryboard_iPad.storyboard; sourceTree = ""; }; + C6EB8589173BEE5E00C3953D /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + C6EB858A173BEE5E00C3953D /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C6EB8598173BEE5E00C3953D /* MainStoryboard_iPhone.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C6EB8599173BEE5E00C3953D /* en */, + ); + name = MainStoryboard_iPhone.storyboard; + sourceTree = ""; + }; + C6EB859B173BEE5E00C3953D /* MainStoryboard_iPad.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C6EB859C173BEE5E00C3953D /* en */, + ); + name = MainStoryboard_iPad.storyboard; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -1006,6 +1183,138 @@ }; name = Release; }; + C6EB85A8173BEE5F00C3953D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = armv7; + 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; + FRAMEWORK_SEARCH_PATHS = ( + "\"~/Library/Developer/GStreamer/iPhone.sdk\"", + "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Tutorial 4/Tutorial 4-Prefix.pch"; + 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; + HEADER_SEARCH_PATHS = "\"~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/Headers\""; + INFOPLIST_FILE = "Tutorial 4/Tutorial 4-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "-lresolv", + "-lstdc++", + "-framework", + CoreFoundation, + "-framework", + Foundation, + "-framework", + AVFoundation, + "-framework", + CoreMedia, + "-framework", + CoreVideo, + "-framework", + CoreAudio, + "-framework", + AudioToolbox, + "-framework", + OpenGLES, + "-framework", + AssetsLibrary, + "-framework", + QuartzCore, + "-framework", + AssetsLibrary, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C6EB85A9173BEE5F00C3953D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = armv7; + 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; + FRAMEWORK_SEARCH_PATHS = ( + "\"~/Library/Developer/GStreamer/iPhone.sdk\"", + "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Tutorial 4/Tutorial 4-Prefix.pch"; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "\"~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/Headers\""; + INFOPLIST_FILE = "Tutorial 4/Tutorial 4-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + OTHER_LDFLAGS = ( + "-lresolv", + "-lstdc++", + "-framework", + CoreFoundation, + "-framework", + Foundation, + "-framework", + AVFoundation, + "-framework", + CoreMedia, + "-framework", + CoreVideo, + "-framework", + CoreAudio, + "-framework", + AudioToolbox, + "-framework", + OpenGLES, + "-framework", + AssetsLibrary, + "-framework", + QuartzCore, + "-framework", + AssetsLibrary, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1045,6 +1354,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + C6EB85A7173BEE5F00C3953D /* Build configuration list for PBXNativeTarget "Tutorial 4" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C6EB85A8173BEE5F00C3953D /* Debug */, + C6EB85A9173BEE5F00C3953D /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; /* End XCConfigurationList section */ }; rootObject = C67B40BF172EBDF1008359CC /* Project object */; diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.h new file mode 100644 index 0000000000..e6762d68bc --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// Tutorial 4 +// +// Created by Xavi Artigas on 5/9/13. +// +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.m b/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.m new file mode 100644 index 0000000000..643f794ac3 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/AppDelegate.m @@ -0,0 +1,46 @@ +// +// AppDelegate.m +// Tutorial 4 +// +// Created by Xavi Artigas on 5/9/13. +// +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + 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:. +} + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Default-568h@2x.png b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Default.png b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.h new file mode 100644 index 0000000000..01700b59ff --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.h @@ -0,0 +1,55 @@ +/* + * GStreamer Player demo app for IOS + * Copyright (C) 2013 Collabora Ltd. + * @author: Thiago Santos + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Alternatively, the contents of this file may be used under the + * GNU Lesser General Public License Version 2.1 (the "LGPL"), in + * which case the following provisions apply instead of the ones + * mentioned above: + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import +#import +#include +#include + +@interface EaglUIView : UIView +{ +} + +@end + diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.m b/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.m new file mode 100644 index 0000000000..f1bcfe7bb1 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/EaglUIVIew.m @@ -0,0 +1,57 @@ +/* + * GStreamer Player demo app for IOS + * Copyright (C) 2013 Collabora Ltd. + * @author: Thiago Santos + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Alternatively, the contents of this file may be used under the + * GNU Lesser General Public License Version 2.1 (the "LGPL"), in + * which case the following provisions apply instead of the ones + * mentioned above: + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import "EaglUIVIew.h" + +#import + +@implementation EaglUIView + + ++ (Class) layerClass +{ + return [CAEAGLLayer class]; +} + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.h new file mode 100644 index 0000000000..a23c4cefe6 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.h @@ -0,0 +1,17 @@ +#import +#import "GStreamerBackendDelegate.h" + +@interface GStreamerBackend : NSObject + +/* Initialization method. Pass the delegate that will take care of the UI. + * This delegate must implement the GStreamerBackendDelegate protocol. + * Pass also the UIView object that will hold the video window. */ +-(id) init:(id) uiDelegate videoView:(UIView*) video_view; + +/* Set the pipeline to PLAYING */ +-(void) play; + +/* Set the pipeline to PAUSED */ +-(void) pause; + +@end \ No newline at end of file diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.m b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.m new file mode 100644 index 0000000000..8adceac8be --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackend.m @@ -0,0 +1,191 @@ +#import "GStreamerBackend.h" + +#include +#include + +GST_DEBUG_CATEGORY_STATIC (debug_category); +#define GST_CAT_DEFAULT debug_category + +@interface GStreamerBackend() +-(void)setUIMessage:(gchar*) message; +-(void)app_function; +-(void)check_initialization_complete; +@end + +@implementation GStreamerBackend { + id ui_delegate; /* Class that we use to interact with the user interface */ + GstElement *pipeline; /* The running pipeline */ + GstElement *video_sink;/* The video sink element which receives XOverlay commands */ + GMainContext *context; /* GLib context used to run the main loop */ + GMainLoop *main_loop; /* GLib main loop */ + gboolean initialized; /* To avoid informing the UI multiple times about the initialization */ + UIView *ui_video_view; /* UIView that holds the video */ +} + +/* + * Interface methods + */ + +-(id) init:(id) uiDelegate videoView:(UIView *)video_view +{ + if (self = [super init]) + { + self->ui_delegate = uiDelegate; + self->ui_video_view = video_view; + + GST_DEBUG_CATEGORY_INIT (debug_category, "tutorial-4", 0, "iOS tutorial 4"); + gst_debug_set_threshold_for_name("tutorial-4", GST_LEVEL_DEBUG); + + /* Start the bus monitoring task */ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [self app_function]; + }); + } + + return self; +} + +-(void) dealloc +{ + if (pipeline) { + GST_DEBUG("Setting the pipeline to NULL"); + gst_element_set_state(pipeline, GST_STATE_NULL); + gst_object_unref(pipeline); + pipeline = NULL; + } +} + +-(void) play +{ + if(gst_element_set_state(pipeline, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) { + [self setUIMessage:"Failed to set pipeline to playing"]; + } +} + +-(void) pause +{ + if(gst_element_set_state(pipeline, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + [self setUIMessage:"Failed to set pipeline to paused"]; + } +} + +/* + * Private methods + */ + +/* Change the message on the UI through the UI delegate */ +-(void)setUIMessage:(gchar*) message +{ + NSString *string = [NSString stringWithUTF8String:message]; + if(ui_delegate && [ui_delegate respondsToSelector:@selector(gstreamerSetUIMessage:)]) + { + [ui_delegate gstreamerSetUIMessage:string]; + } +} + +/* Retrieve errors from the bus and show them on the UI */ +static void error_cb (GstBus *bus, GstMessage *msg, GStreamerBackend *self) +{ + GError *err; + gchar *debug_info; + gchar *message_string; + + gst_message_parse_error (msg, &err, &debug_info); + message_string = g_strdup_printf ("Error received from element %s: %s", GST_OBJECT_NAME (msg->src), err->message); + g_clear_error (&err); + g_free (debug_info); + [self setUIMessage:message_string]; + g_free (message_string); + gst_element_set_state (self->pipeline, GST_STATE_NULL); +} + +/* Notify UI about pipeline state changes */ +static void state_changed_cb (GstBus *bus, GstMessage *msg, GStreamerBackend *self) +{ + GstState old_state, new_state, pending_state; + gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state); + /* Only pay attention to messages coming from the pipeline, not its children */ + if (GST_MESSAGE_SRC (msg) == GST_OBJECT (self->pipeline)) { + gchar *message = g_strdup_printf("State changed to %s", gst_element_state_get_name(new_state)); + [self setUIMessage:message]; + g_free (message); + } +} + +/* Check if all conditions are met to report GStreamer as initialized. + * These conditions will change depending on the application */ +-(void) check_initialization_complete +{ + if (!initialized && main_loop) { + GST_DEBUG ("Initialization complete, notifying application."); + if (ui_delegate && [ui_delegate respondsToSelector:@selector(gstreamerInitialized)]) + { + [ui_delegate gstreamerInitialized]; + } + initialized = TRUE; + } +} + +/* Main method for the bus monitoring code */ +-(void) app_function +{ + GstBus *bus; + GSource *bus_source; + GError *error = NULL; + + GST_DEBUG ("Creating pipeline"); + + /* Create our own GLib Main Context and make it the default one */ + context = g_main_context_new (); + g_main_context_push_thread_default(context); + + /* Build pipeline */ + pipeline = gst_parse_launch("videotestsrc ! warptv ! ffmpegcolorspace ! autovideosink", &error); + if (error) { + gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message); + g_clear_error (&error); + [self setUIMessage:message]; + g_free (message); + return; + } + + /* Set the pipeline to READY, so it can already accept a window handle */ + gst_element_set_state(pipeline, GST_STATE_READY); + + video_sink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_X_OVERLAY); + if (!video_sink) { + GST_ERROR ("Could not retrieve video sink"); + return; + } + gst_x_overlay_set_window_handle(GST_X_OVERLAY(video_sink), (guintptr) (id) ui_video_view); + + /* Instruct the bus to emit signals for each received message, and connect to the interesting signals */ + bus = gst_element_get_bus (pipeline); + bus_source = gst_bus_create_watch (bus); + g_source_set_callback (bus_source, (GSourceFunc) gst_bus_async_signal_func, NULL, NULL); + g_source_attach (bus_source, context); + g_source_unref (bus_source); + g_signal_connect (G_OBJECT (bus), "message::error", (GCallback)error_cb, (__bridge void *)self); + g_signal_connect (G_OBJECT (bus), "message::state-changed", (GCallback)state_changed_cb, (__bridge void *)self); + gst_object_unref (bus); + + /* Create a GLib Main Loop and set it to run */ + GST_DEBUG ("Entering main loop..."); + main_loop = g_main_loop_new (context, FALSE); + [self check_initialization_complete]; + g_main_loop_run (main_loop); + GST_DEBUG ("Exited main loop"); + g_main_loop_unref (main_loop); + main_loop = NULL; + + /* Free resources */ + g_main_context_pop_thread_default(context); + g_main_context_unref (context); + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); + + return; +} + +@end + diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackendDelegate.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackendDelegate.h new file mode 100644 index 0000000000..5586373157 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/GStreamerBackendDelegate.h @@ -0,0 +1,14 @@ +#import + +@protocol GStreamerBackendDelegate + +@optional +/* Called when the GStreamer backend has finished initializing + * and is ready to accept orders. */ +-(void) gstreamerInitialized; + +/* Called when the GStreamer backend wants to output some message + * to the screen. */ +-(void) gstreamerSetUIMessage:(NSString *)message; + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad.png b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad.png new file mode 100755 index 0000000000000000000000000000000000000000..ceea35d00fae049a7e0d8ca3ff6f43db36411651 GIT binary patch literal 6891 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 literal 0 HcmV?d00001 diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad@2x.png b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPad@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..9613a6fdda4310e07157f851d7b2eadef965d984 GIT binary patch literal 17472 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 Ef{YXUO#lD@ literal 0 HcmV?d00001 diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPhone.png b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Images/appicon-4-iPhone.png new file mode 100755 index 0000000000000000000000000000000000000000..6535733e820efb485124a7b1779198bcf7644207 GIT binary patch literal 5404 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 literal 0 HcmV?d00001 diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Info.plist b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Info.plist new file mode 100644 index 0000000000..68ea7113ae --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Info.plist @@ -0,0 +1,62 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + appicon-4-iPhone.png + appicon-4-iPhone@2x.png + appicon-4-iPad.png + appicon-4-iPad@2x.png + + + + CFBundleIdentifier + gstreamer-sdk.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + MainStoryboard_iPhone + UIMainStoryboardFile~ipad + MainStoryboard_iPad + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Prefix.pch b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Prefix.pch new file mode 100644 index 0000000000..9288e96dc2 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/Tutorial 4-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'Tutorial 4' target in the 'Tutorial 4' project +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.h new file mode 100644 index 0000000000..677f65bc25 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.h @@ -0,0 +1,21 @@ +#import +#import "GStreamerBackendDelegate.h" + +@interface ViewController : UIViewController { + IBOutlet UILabel *message_label; + IBOutlet UIBarButtonItem *play_button; + IBOutlet UIBarButtonItem *pause_button; + IBOutlet UIView *video_view; + IBOutlet UIView *video_container_view; + IBOutlet NSLayoutConstraint *video_width_constraint; + IBOutlet NSLayoutConstraint *video_height_constraint; +} + +-(IBAction) play:(id)sender; +-(IBAction) pause:(id)sender; + +/* From GStreamerBackendDelegate */ +-(void) gstreamerInitialized; +-(void) gstreamerSetUIMessage:(NSString *)message; + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.m b/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.m new file mode 100644 index 0000000000..93eae203e4 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/ViewController.m @@ -0,0 +1,88 @@ +#import "ViewController.h" +#import "GStreamerBackend.h" +#import + +@interface ViewController () { + GStreamerBackend *gst_backend; + int media_width; + int media_height; +} + +@end + +@implementation ViewController + +/* + * Methods from UIViewController + */ + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + play_button.enabled = FALSE; + pause_button.enabled = FALSE; + + /* Make these constant for now, later tutorials will change them */ + media_width = 320; + media_height = 240; + + gst_backend = [[GStreamerBackend alloc] init:self videoView:video_view]; +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* Called when the Play button is pressed */ +-(IBAction) play:(id)sender +{ + [gst_backend play]; +} + +/* Called when the Pause button is pressed */ +-(IBAction) pause:(id)sender +{ + [gst_backend pause]; +} + +- (void)viewDidLayoutSubviews +{ + CGFloat view_width = video_container_view.bounds.size.width; + CGFloat view_height = video_container_view.bounds.size.height; + + CGFloat correct_height = view_width * media_height / media_width; + CGFloat correct_width = view_height * media_width / media_height; + + if (correct_height < view_height) { + video_height_constraint.constant = correct_height; + video_width_constraint.constant = view_width; + } else { + video_width_constraint.constant = correct_width; + video_height_constraint.constant = view_height; + } +} + +/* + * Methods from GstreamerBackendDelegate + */ + +-(void) gstreamerInitialized +{ + dispatch_async(dispatch_get_main_queue(), ^{ + play_button.enabled = TRUE; + pause_button.enabled = TRUE; + message_label.text = @"Ready"; + }); +} + +-(void) gstreamerSetUIMessage:(NSString *)message +{ + dispatch_async(dispatch_get_main_queue(), ^{ + message_label.text = message; + }); +} + +@end diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/InfoPlist.strings b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/InfoPlist.strings new file mode 100644 index 0000000000..477b28ff8f --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPad.storyboard b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPad.storyboard new file mode 100644 index 0000000000..98d0b70aaf --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPad.storyboard @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPhone.storyboard b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPhone.storyboard new file mode 100644 index 0000000000..262d1143d6 --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/en.lproj/MainStoryboard_iPhone.storyboard @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.c b/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.c new file mode 100644 index 0000000000..cffa57e65c --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.c @@ -0,0 +1,995 @@ +#include "gst_ios_init.h" + +#if defined(GST_IOS_PLUGIN_COREELEMENTS) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(coreelements); +#endif +#if defined(GST_IOS_PLUGIN_COREINDEXERS) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(coreindexers); +#endif +#if defined(GST_IOS_PLUGIN_ADDER) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(adder); +#endif +#if defined(GST_IOS_PLUGIN_APP) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(app); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOCONVERT) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(audioconvert); +#endif +#if defined(GST_IOS_PLUGIN_AUDIORATE) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(audiorate); +#endif +#if defined(GST_IOS_PLUGIN_AUDIORESAMPLE) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(audioresample); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOTESTSRC) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(audiotestsrc); +#endif +#if defined(GST_IOS_PLUGIN_FFMPEGCOLORSPACE) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(ffmpegcolorspace); +#endif +#if defined(GST_IOS_PLUGIN_GDP) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(gdp); +#endif +#if defined(GST_IOS_PLUGIN_GIO) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(gio); +#endif +#if defined(GST_IOS_PLUGIN_PANGO) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(pango); +#endif +#if defined(GST_IOS_PLUGIN_TYPEFINDFUNCTIONS) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(typefindfunctions); +#endif +#if defined(GST_IOS_PLUGIN_VIDEORATE) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(videorate); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOSCALE) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(videoscale); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOTESTSRC) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(videotestsrc); +#endif +#if defined(GST_IOS_PLUGIN_VOLUME) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(volume); +#endif +#if defined(GST_IOS_PLUGIN_AUTODETECT) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(autodetect); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOFILTER) || defined(GST_IOS_PLUGINS_CORE) +GST_PLUGIN_STATIC_DECLARE(videofilter); +#endif +#if defined(GST_IOS_PLUGIN_CAMERABIN2) || defined(GST_IOS_PLUGINS_CAPTURE) +GST_PLUGIN_STATIC_DECLARE(camerabin2); +#endif +#if defined(GST_IOS_PLUGIN_ASFMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(asfmux); +#endif +#if defined(GST_IOS_PLUGIN_DTSDEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(dtsdec); +#endif +#if defined(GST_IOS_PLUGIN_FAAD) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(faad); +#endif +#if defined(GST_IOS_PLUGIN_MPEGDEMUX2) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpegdemux2); +#endif +#if defined(GST_IOS_PLUGIN_MPEGPSMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpegpsmux); +#endif +#if defined(GST_IOS_PLUGIN_MPEGTSDEMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpegtsdemux); +#endif +#if defined(GST_IOS_PLUGIN_MPEGTSMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpegtsmux); +#endif +#if defined(GST_IOS_PLUGIN_A52DEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(a52dec); +#endif +#if defined(GST_IOS_PLUGIN_AMRNB) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(amrnb); +#endif +#if defined(GST_IOS_PLUGIN_AMRWBDEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(amrwbdec); +#endif +#if defined(GST_IOS_PLUGIN_ASF) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(asf); +#endif +#if defined(GST_IOS_PLUGIN_MAD) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mad); +#endif +#if defined(GST_IOS_PLUGIN_MPEG2DEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpeg2dec); +#endif +#if defined(GST_IOS_PLUGIN_MPEGAUDIOPARSE) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mpegaudioparse); +#endif +#if defined(GST_IOS_PLUGIN_REALMEDIA) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(realmedia); +#endif +#if defined(GST_IOS_PLUGIN_X264) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(x264); +#endif +#if defined(GST_IOS_PLUGIN_FFMPEG) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(ffmpeg); +#endif +#if defined(GST_IOS_PLUGIN_ENCODING) || defined(GST_IOS_PLUGINS_ENCODING) +GST_PLUGIN_STATIC_DECLARE(encoding); +#endif +#if defined(GST_IOS_PLUGIN_INDVD) || defined(GST_IOS_PLUGINS_DVD) +GST_PLUGIN_STATIC_DECLARE(indvd); +#endif +#if defined(GST_IOS_PLUGIN_DVDLPCMDEC) || defined(GST_IOS_PLUGINS_DVD) +GST_PLUGIN_STATIC_DECLARE(dvdlpcmdec); +#endif +#if defined(GST_IOS_PLUGIN_DVDREAD) || defined(GST_IOS_PLUGINS_DVD) +GST_PLUGIN_STATIC_DECLARE(dvdread); +#endif +#if defined(GST_IOS_PLUGIN_ASSRENDER) || defined(GST_IOS_PLUGINS_CODECS_GPL) +GST_PLUGIN_STATIC_DECLARE(assrender); +#endif +#if defined(GST_IOS_PLUGIN_MMS) || defined(GST_IOS_PLUGINS_NET_RESTRICTED) +GST_PLUGIN_STATIC_DECLARE(mms); +#endif +#if defined(GST_IOS_PLUGIN_OSXAUDIO) || defined(GST_IOS_PLUGINS_SYS) +GST_PLUGIN_STATIC_DECLARE(osxaudio); +#endif +#if defined(GST_IOS_PLUGIN_EGLGLESSINK) || defined(GST_IOS_PLUGINS_SYS) +GST_PLUGIN_STATIC_DECLARE(eglglessink); +#endif +#if defined(GST_IOS_PLUGIN_APPLEMEDIA_NONPUBLIC) || defined(GST_IOS_PLUGINS_SYS) +GST_PLUGIN_STATIC_DECLARE(applemedia_nonpublic); +#endif +#if defined(GST_IOS_PLUGIN_LIBVISUAL) || defined(GST_IOS_PLUGINS_VIS) +GST_PLUGIN_STATIC_DECLARE(libvisual); +#endif +#if defined(GST_IOS_PLUGIN_GOOM) || defined(GST_IOS_PLUGINS_VIS) +GST_PLUGIN_STATIC_DECLARE(goom); +#endif +#if defined(GST_IOS_PLUGIN_GOOM2K1) || defined(GST_IOS_PLUGINS_VIS) +GST_PLUGIN_STATIC_DECLARE(goom2k1); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOVISUALIZERS) || defined(GST_IOS_PLUGINS_VIS) +GST_PLUGIN_STATIC_DECLARE(audiovisualizers); +#endif +#if defined(GST_IOS_PLUGIN_URIDECODEBIN) || defined(GST_IOS_PLUGINS_PLAYBACK) +GST_PLUGIN_STATIC_DECLARE(uridecodebin); +#endif +#if defined(GST_IOS_PLUGIN_PLAYBACK) || defined(GST_IOS_PLUGINS_PLAYBACK) +GST_PLUGIN_STATIC_DECLARE(playback); +#endif +#if defined(GST_IOS_PLUGIN_ALPHA) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(alpha); +#endif +#if defined(GST_IOS_PLUGIN_ALPHACOLOR) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(alphacolor); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOFX) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(audiofx); +#endif +#if defined(GST_IOS_PLUGIN_CAIRO) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(cairo); +#endif +#if defined(GST_IOS_PLUGIN_CUTTER) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(cutter); +#endif +#if defined(GST_IOS_PLUGIN_DEBUG) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(debug); +#endif +#if defined(GST_IOS_PLUGIN_DEINTERLACE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(deinterlace); +#endif +#if defined(GST_IOS_PLUGIN_EFFECTV) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(effectv); +#endif +#if defined(GST_IOS_PLUGIN_EQUALIZER) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(equalizer); +#endif +#if defined(GST_IOS_PLUGIN_GDKPIXBUF) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(gdkpixbuf); +#endif +#if defined(GST_IOS_PLUGIN_IMAGEFREEZE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(imagefreeze); +#endif +#if defined(GST_IOS_PLUGIN_INTERLEAVE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(interleave); +#endif +#if defined(GST_IOS_PLUGIN_LEVEL) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(level); +#endif +#if defined(GST_IOS_PLUGIN_MULTIFILE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(multifile); +#endif +#if defined(GST_IOS_PLUGIN_REPLAYGAIN) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(replaygain); +#endif +#if defined(GST_IOS_PLUGIN_SHAPEWIPE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(shapewipe); +#endif +#if defined(GST_IOS_PLUGIN_SMPTE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(smpte); +#endif +#if defined(GST_IOS_PLUGIN_SPECTRUM) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(spectrum); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOBOX) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videobox); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOCROP) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videocrop); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOMIXER) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videomixer); +#endif +#if defined(GST_IOS_PLUGIN_AUTOCONVERT) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(autoconvert); +#endif +#if defined(GST_IOS_PLUGIN_BAYER) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(bayer); +#endif +#if defined(GST_IOS_PLUGIN_COLOREFFECTS) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(coloreffects); +#endif +#if defined(GST_IOS_PLUGIN_FACEOVERLAY) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(faceoverlay); +#endif +#if defined(GST_IOS_PLUGIN_FIELDANALYSIS) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(fieldanalysis); +#endif +#if defined(GST_IOS_PLUGIN_FREEVERB) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(freeverb); +#endif +#if defined(GST_IOS_PLUGIN_FREI0R) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(frei0r); +#endif +#if defined(GST_IOS_PLUGIN_GAUDIEFFECTS) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(gaudieffects); +#endif +#if defined(GST_IOS_PLUGIN_GEOMETRICTRANSFORM) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(geometrictransform); +#endif +#if defined(GST_IOS_PLUGIN_INTERLACE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(interlace); +#endif +#if defined(GST_IOS_PLUGIN_JP2KDECIMATOR) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(jp2kdecimator); +#endif +#if defined(GST_IOS_PLUGIN_LIVEADDER) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(liveadder); +#endif +#if defined(GST_IOS_PLUGIN_RAWPARSE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(rawparse); +#endif +#if defined(GST_IOS_PLUGIN_REMOVESILENCE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(removesilence); +#endif +#if defined(GST_IOS_PLUGIN_SCALETEMPO) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(scaletempo); +#endif +#if defined(GST_IOS_PLUGIN_SEGMENTCLIP) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(segmentclip); +#endif +#if defined(GST_IOS_PLUGIN_SMOOTH) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(smooth); +#endif +#if defined(GST_IOS_PLUGIN_SOUNDTOUCH) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(soundtouch); +#endif +#if defined(GST_IOS_PLUGIN_SPEED) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(speed); +#endif +#if defined(GST_IOS_PLUGIN_STEREO) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(stereo); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOFILTERSBAD) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videofiltersbad); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOMEASURE) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videomeasure); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOSIGNAL) || defined(GST_IOS_PLUGINS_EFFECTS) +GST_PLUGIN_STATIC_DECLARE(videosignal); +#endif +#if defined(GST_IOS_PLUGIN_SUBPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(subparse); +#endif +#if defined(GST_IOS_PLUGIN_OGG) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(ogg); +#endif +#if defined(GST_IOS_PLUGIN_THEORA) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(theora); +#endif +#if defined(GST_IOS_PLUGIN_VORBIS) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(vorbis); +#endif +#if defined(GST_IOS_PLUGIN_IVORBISDEC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(ivorbisdec); +#endif +#if defined(GST_IOS_PLUGIN_ALAW) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(alaw); +#endif +#if defined(GST_IOS_PLUGIN_ANNODEX) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(annodex); +#endif +#if defined(GST_IOS_PLUGIN_APETAG) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(apetag); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOPARSERS) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(audioparsers); +#endif +#if defined(GST_IOS_PLUGIN_AUPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(auparse); +#endif +#if defined(GST_IOS_PLUGIN_AVI) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(avi); +#endif +#if defined(GST_IOS_PLUGIN_DV) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(dv); +#endif +#if defined(GST_IOS_PLUGIN_FLAC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(flac); +#endif +#if defined(GST_IOS_PLUGIN_FLV) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(flv); +#endif +#if defined(GST_IOS_PLUGIN_FLXDEC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(flxdec); +#endif +#if defined(GST_IOS_PLUGIN_ICYDEMUX) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(icydemux); +#endif +#if defined(GST_IOS_PLUGIN_ID3DEMUX) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(id3demux); +#endif +#if defined(GST_IOS_PLUGIN_ISOMP4) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(isomp4); +#endif +#if defined(GST_IOS_PLUGIN_JPEG) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(jpeg); +#endif +#if defined(GST_IOS_PLUGIN_MATROSKA) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(matroska); +#endif +#if defined(GST_IOS_PLUGIN_MULAW) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(mulaw); +#endif +#if defined(GST_IOS_PLUGIN_MULTIPART) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(multipart); +#endif +#if defined(GST_IOS_PLUGIN_PNG) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(png); +#endif +#if defined(GST_IOS_PLUGIN_SPEEX) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(speex); +#endif +#if defined(GST_IOS_PLUGIN_TAGLIB) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(taglib); +#endif +#if defined(GST_IOS_PLUGIN_WAVENC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(wavenc); +#endif +#if defined(GST_IOS_PLUGIN_WAVPACK) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(wavpack); +#endif +#if defined(GST_IOS_PLUGIN_WAVPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(wavparse); +#endif +#if defined(GST_IOS_PLUGIN_Y4MENC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(y4menc); +#endif +#if defined(GST_IOS_PLUGIN_ADPCMDEC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(adpcmdec); +#endif +#if defined(GST_IOS_PLUGIN_ADPCMENC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(adpcmenc); +#endif +#if defined(GST_IOS_PLUGIN_AIFF) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(aiff); +#endif +#if defined(GST_IOS_PLUGIN_CDXAPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(cdxaparse); +#endif +#if defined(GST_IOS_PLUGIN_DCCP) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(dccp); +#endif +#if defined(GST_IOS_PLUGIN_DTMF) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(dtmf); +#endif +#if defined(GST_IOS_PLUGIN_DVBSUBOVERLAY) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(dvbsuboverlay); +#endif +#if defined(GST_IOS_PLUGIN_DVDSPU) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(dvdspu); +#endif +#if defined(GST_IOS_PLUGIN_FRAGMENTED) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(fragmented); +#endif +#if defined(GST_IOS_PLUGIN_HDVPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(hdvparse); +#endif +#if defined(GST_IOS_PLUGIN_ID3TAG) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(id3tag); +#endif +#if defined(GST_IOS_PLUGIN_IVFPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(ivfparse); +#endif +#if defined(GST_IOS_PLUGIN_JP2K) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(jp2k); +#endif +#if defined(GST_IOS_PLUGIN_KATE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(kate); +#endif +#if defined(GST_IOS_PLUGIN_MVE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(mve); +#endif +#if defined(GST_IOS_PLUGIN_MXF) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(mxf); +#endif +#if defined(GST_IOS_PLUGIN_NSF) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(nsf); +#endif +#if defined(GST_IOS_PLUGIN_NUVDEMUX) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(nuvdemux); +#endif +#if defined(GST_IOS_PLUGIN_OPUS) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(opus); +#endif +#if defined(GST_IOS_PLUGIN_PCAPPARSE) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(pcapparse); +#endif +#if defined(GST_IOS_PLUGIN_PNM) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(pnm); +#endif +#if defined(GST_IOS_PLUGIN_SCHRO) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(schro); +#endif +#if defined(GST_IOS_PLUGIN_GSTSIREN) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(gstsiren); +#endif +#if defined(GST_IOS_PLUGIN_SUBENC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(subenc); +#endif +#if defined(GST_IOS_PLUGIN_TTA) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(tta); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOPARSERSBAD) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(videoparsersbad); +#endif +#if defined(GST_IOS_PLUGIN_VMNC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(vmnc); +#endif +#if defined(GST_IOS_PLUGIN_VP8) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(vp8); +#endif +#if defined(GST_IOS_PLUGIN_Y4MDEC) || defined(GST_IOS_PLUGINS_CODECS) +GST_PLUGIN_STATIC_DECLARE(y4mdec); +#endif +#if defined(GST_IOS_PLUGIN_TCP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(tcp); +#endif +#if defined(GST_IOS_PLUGIN_RTSP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(rtsp); +#endif +#if defined(GST_IOS_PLUGIN_RTP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(rtp); +#endif +#if defined(GST_IOS_PLUGIN_GSTRTPMANAGER) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(gstrtpmanager); +#endif +#if defined(GST_IOS_PLUGIN_SOUP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(soup); +#endif +#if defined(GST_IOS_PLUGIN_UDP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(udp); +#endif +#if defined(GST_IOS_PLUGIN_DATAURISRC) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(dataurisrc); +#endif +#if defined(GST_IOS_PLUGIN_RTPMUX) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(rtpmux); +#endif +#if defined(GST_IOS_PLUGIN_RTPVP8) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(rtpvp8); +#endif +#if defined(GST_IOS_PLUGIN_SDP) || defined(GST_IOS_PLUGINS_NET) +GST_PLUGIN_STATIC_DECLARE(sdp); +#endif + +void +gst_ios_init (void) +{ + gst_init (NULL, NULL); + gst_debug_set_colored(FALSE); + gst_debug_set_default_threshold(GST_LEVEL_WARNING); + +#if defined(GST_IOS_PLUGIN_COREELEMENTS) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(coreelements); +#endif +#if defined(GST_IOS_PLUGIN_COREINDEXERS) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(coreindexers); +#endif +#if defined(GST_IOS_PLUGIN_ADDER) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(adder); +#endif +#if defined(GST_IOS_PLUGIN_APP) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(app); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOCONVERT) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(audioconvert); +#endif +#if defined(GST_IOS_PLUGIN_AUDIORATE) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(audiorate); +#endif +#if defined(GST_IOS_PLUGIN_AUDIORESAMPLE) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(audioresample); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOTESTSRC) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(audiotestsrc); +#endif +#if defined(GST_IOS_PLUGIN_FFMPEGCOLORSPACE) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(ffmpegcolorspace); +#endif +#if defined(GST_IOS_PLUGIN_GDP) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(gdp); +#endif +#if defined(GST_IOS_PLUGIN_GIO) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(gio); +#endif +#if defined(GST_IOS_PLUGIN_PANGO) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(pango); +#endif +#if defined(GST_IOS_PLUGIN_TYPEFINDFUNCTIONS) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(typefindfunctions); +#endif +#if defined(GST_IOS_PLUGIN_VIDEORATE) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(videorate); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOSCALE) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(videoscale); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOTESTSRC) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(videotestsrc); +#endif +#if defined(GST_IOS_PLUGIN_VOLUME) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(volume); +#endif +#if defined(GST_IOS_PLUGIN_AUTODETECT) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(autodetect); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOFILTER) || defined(GST_IOS_PLUGINS_CORE) + GST_PLUGIN_STATIC_REGISTER(videofilter); +#endif +#if defined(GST_IOS_PLUGIN_CAMERABIN2) || defined(GST_IOS_PLUGINS_CAPTURE) + GST_PLUGIN_STATIC_REGISTER(camerabin2); +#endif +#if defined(GST_IOS_PLUGIN_ASFMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(asfmux); +#endif +#if defined(GST_IOS_PLUGIN_DTSDEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(dtsdec); +#endif +#if defined(GST_IOS_PLUGIN_FAAD) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(faad); +#endif +#if defined(GST_IOS_PLUGIN_MPEGDEMUX2) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpegdemux2); +#endif +#if defined(GST_IOS_PLUGIN_MPEGPSMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpegpsmux); +#endif +#if defined(GST_IOS_PLUGIN_MPEGTSDEMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpegtsdemux); +#endif +#if defined(GST_IOS_PLUGIN_MPEGTSMUX) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpegtsmux); +#endif +#if defined(GST_IOS_PLUGIN_A52DEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(a52dec); +#endif +#if defined(GST_IOS_PLUGIN_AMRNB) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(amrnb); +#endif +#if defined(GST_IOS_PLUGIN_AMRWBDEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(amrwbdec); +#endif +#if defined(GST_IOS_PLUGIN_ASF) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(asf); +#endif +#if defined(GST_IOS_PLUGIN_MAD) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mad); +#endif +#if defined(GST_IOS_PLUGIN_MPEG2DEC) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpeg2dec); +#endif +#if defined(GST_IOS_PLUGIN_MPEGAUDIOPARSE) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mpegaudioparse); +#endif +#if defined(GST_IOS_PLUGIN_REALMEDIA) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(realmedia); +#endif +#if defined(GST_IOS_PLUGIN_X264) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(x264); +#endif +#if defined(GST_IOS_PLUGIN_FFMPEG) || defined(GST_IOS_PLUGINS_CODECS_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(ffmpeg); +#endif +#if defined(GST_IOS_PLUGIN_ENCODING) || defined(GST_IOS_PLUGINS_ENCODING) + GST_PLUGIN_STATIC_REGISTER(encoding); +#endif +#if defined(GST_IOS_PLUGIN_INDVD) || defined(GST_IOS_PLUGINS_DVD) + GST_PLUGIN_STATIC_REGISTER(indvd); +#endif +#if defined(GST_IOS_PLUGIN_DVDLPCMDEC) || defined(GST_IOS_PLUGINS_DVD) + GST_PLUGIN_STATIC_REGISTER(dvdlpcmdec); +#endif +#if defined(GST_IOS_PLUGIN_DVDREAD) || defined(GST_IOS_PLUGINS_DVD) + GST_PLUGIN_STATIC_REGISTER(dvdread); +#endif +#if defined(GST_IOS_PLUGIN_ASSRENDER) || defined(GST_IOS_PLUGINS_CODECS_GPL) + GST_PLUGIN_STATIC_REGISTER(assrender); +#endif +#if defined(GST_IOS_PLUGIN_MMS) || defined(GST_IOS_PLUGINS_NET_RESTRICTED) + GST_PLUGIN_STATIC_REGISTER(mms); +#endif +#if defined(GST_IOS_PLUGIN_OSXAUDIO) || defined(GST_IOS_PLUGINS_SYS) + GST_PLUGIN_STATIC_REGISTER(osxaudio); +#endif +#if defined(GST_IOS_PLUGIN_EGLGLESSINK) || defined(GST_IOS_PLUGINS_SYS) + GST_PLUGIN_STATIC_REGISTER(eglglessink); +#endif +#if defined(GST_IOS_PLUGIN_APPLEMEDIA_NONPUBLIC) || defined(GST_IOS_PLUGINS_SYS) + GST_PLUGIN_STATIC_REGISTER(applemedia_nonpublic); +#endif +#if defined(GST_IOS_PLUGIN_LIBVISUAL) || defined(GST_IOS_PLUGINS_VIS) + GST_PLUGIN_STATIC_REGISTER(libvisual); +#endif +#if defined(GST_IOS_PLUGIN_GOOM) || defined(GST_IOS_PLUGINS_VIS) + GST_PLUGIN_STATIC_REGISTER(goom); +#endif +#if defined(GST_IOS_PLUGIN_GOOM2K1) || defined(GST_IOS_PLUGINS_VIS) + GST_PLUGIN_STATIC_REGISTER(goom2k1); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOVISUALIZERS) || defined(GST_IOS_PLUGINS_VIS) + GST_PLUGIN_STATIC_REGISTER(audiovisualizers); +#endif +#if defined(GST_IOS_PLUGIN_URIDECODEBIN) || defined(GST_IOS_PLUGINS_PLAYBACK) + GST_PLUGIN_STATIC_REGISTER(uridecodebin); +#endif +#if defined(GST_IOS_PLUGIN_PLAYBACK) || defined(GST_IOS_PLUGINS_PLAYBACK) + GST_PLUGIN_STATIC_REGISTER(playback); +#endif +#if defined(GST_IOS_PLUGIN_ALPHA) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(alpha); +#endif +#if defined(GST_IOS_PLUGIN_ALPHACOLOR) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(alphacolor); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOFX) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(audiofx); +#endif +#if defined(GST_IOS_PLUGIN_CAIRO) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(cairo); +#endif +#if defined(GST_IOS_PLUGIN_CUTTER) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(cutter); +#endif +#if defined(GST_IOS_PLUGIN_DEBUG) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(debug); +#endif +#if defined(GST_IOS_PLUGIN_DEINTERLACE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(deinterlace); +#endif +#if defined(GST_IOS_PLUGIN_EFFECTV) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(effectv); +#endif +#if defined(GST_IOS_PLUGIN_EQUALIZER) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(equalizer); +#endif +#if defined(GST_IOS_PLUGIN_GDKPIXBUF) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(gdkpixbuf); +#endif +#if defined(GST_IOS_PLUGIN_IMAGEFREEZE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(imagefreeze); +#endif +#if defined(GST_IOS_PLUGIN_INTERLEAVE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(interleave); +#endif +#if defined(GST_IOS_PLUGIN_LEVEL) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(level); +#endif +#if defined(GST_IOS_PLUGIN_MULTIFILE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(multifile); +#endif +#if defined(GST_IOS_PLUGIN_REPLAYGAIN) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(replaygain); +#endif +#if defined(GST_IOS_PLUGIN_SHAPEWIPE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(shapewipe); +#endif +#if defined(GST_IOS_PLUGIN_SMPTE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(smpte); +#endif +#if defined(GST_IOS_PLUGIN_SPECTRUM) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(spectrum); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOBOX) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videobox); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOCROP) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videocrop); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOMIXER) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videomixer); +#endif +#if defined(GST_IOS_PLUGIN_AUTOCONVERT) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(autoconvert); +#endif +#if defined(GST_IOS_PLUGIN_BAYER) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(bayer); +#endif +#if defined(GST_IOS_PLUGIN_COLOREFFECTS) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(coloreffects); +#endif +#if defined(GST_IOS_PLUGIN_FACEOVERLAY) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(faceoverlay); +#endif +#if defined(GST_IOS_PLUGIN_FIELDANALYSIS) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(fieldanalysis); +#endif +#if defined(GST_IOS_PLUGIN_FREEVERB) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(freeverb); +#endif +#if defined(GST_IOS_PLUGIN_FREI0R) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(frei0r); +#endif +#if defined(GST_IOS_PLUGIN_GAUDIEFFECTS) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(gaudieffects); +#endif +#if defined(GST_IOS_PLUGIN_GEOMETRICTRANSFORM) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(geometrictransform); +#endif +#if defined(GST_IOS_PLUGIN_INTERLACE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(interlace); +#endif +#if defined(GST_IOS_PLUGIN_JP2KDECIMATOR) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(jp2kdecimator); +#endif +#if defined(GST_IOS_PLUGIN_LIVEADDER) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(liveadder); +#endif +#if defined(GST_IOS_PLUGIN_RAWPARSE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(rawparse); +#endif +#if defined(GST_IOS_PLUGIN_REMOVESILENCE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(removesilence); +#endif +#if defined(GST_IOS_PLUGIN_SCALETEMPO) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(scaletempo); +#endif +#if defined(GST_IOS_PLUGIN_SEGMENTCLIP) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(segmentclip); +#endif +#if defined(GST_IOS_PLUGIN_SMOOTH) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(smooth); +#endif +#if defined(GST_IOS_PLUGIN_SOUNDTOUCH) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(soundtouch); +#endif +#if defined(GST_IOS_PLUGIN_SPEED) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(speed); +#endif +#if defined(GST_IOS_PLUGIN_STEREO) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(stereo); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOFILTERSBAD) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videofiltersbad); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOMEASURE) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videomeasure); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOSIGNAL) || defined(GST_IOS_PLUGINS_EFFECTS) + GST_PLUGIN_STATIC_REGISTER(videosignal); +#endif +#if defined(GST_IOS_PLUGIN_SUBPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(subparse); +#endif +#if defined(GST_IOS_PLUGIN_OGG) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(ogg); +#endif +#if defined(GST_IOS_PLUGIN_THEORA) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(theora); +#endif +#if defined(GST_IOS_PLUGIN_VORBIS) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(vorbis); +#endif +#if defined(GST_IOS_PLUGIN_IVORBISDEC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(ivorbisdec); +#endif +#if defined(GST_IOS_PLUGIN_ALAW) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(alaw); +#endif +#if defined(GST_IOS_PLUGIN_ANNODEX) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(annodex); +#endif +#if defined(GST_IOS_PLUGIN_APETAG) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(apetag); +#endif +#if defined(GST_IOS_PLUGIN_AUDIOPARSERS) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(audioparsers); +#endif +#if defined(GST_IOS_PLUGIN_AUPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(auparse); +#endif +#if defined(GST_IOS_PLUGIN_AVI) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(avi); +#endif +#if defined(GST_IOS_PLUGIN_DV) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(dv); +#endif +#if defined(GST_IOS_PLUGIN_FLAC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(flac); +#endif +#if defined(GST_IOS_PLUGIN_FLV) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(flv); +#endif +#if defined(GST_IOS_PLUGIN_FLXDEC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(flxdec); +#endif +#if defined(GST_IOS_PLUGIN_ICYDEMUX) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(icydemux); +#endif +#if defined(GST_IOS_PLUGIN_ID3DEMUX) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(id3demux); +#endif +#if defined(GST_IOS_PLUGIN_ISOMP4) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(isomp4); +#endif +#if defined(GST_IOS_PLUGIN_JPEG) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(jpeg); +#endif +#if defined(GST_IOS_PLUGIN_MATROSKA) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(matroska); +#endif +#if defined(GST_IOS_PLUGIN_MULAW) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(mulaw); +#endif +#if defined(GST_IOS_PLUGIN_MULTIPART) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(multipart); +#endif +#if defined(GST_IOS_PLUGIN_PNG) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(png); +#endif +#if defined(GST_IOS_PLUGIN_SPEEX) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(speex); +#endif +#if defined(GST_IOS_PLUGIN_TAGLIB) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(taglib); +#endif +#if defined(GST_IOS_PLUGIN_WAVENC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(wavenc); +#endif +#if defined(GST_IOS_PLUGIN_WAVPACK) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(wavpack); +#endif +#if defined(GST_IOS_PLUGIN_WAVPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(wavparse); +#endif +#if defined(GST_IOS_PLUGIN_Y4MENC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(y4menc); +#endif +#if defined(GST_IOS_PLUGIN_ADPCMDEC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(adpcmdec); +#endif +#if defined(GST_IOS_PLUGIN_ADPCMENC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(adpcmenc); +#endif +#if defined(GST_IOS_PLUGIN_AIFF) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(aiff); +#endif +#if defined(GST_IOS_PLUGIN_CDXAPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(cdxaparse); +#endif +#if defined(GST_IOS_PLUGIN_DCCP) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(dccp); +#endif +#if defined(GST_IOS_PLUGIN_DTMF) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(dtmf); +#endif +#if defined(GST_IOS_PLUGIN_DVBSUBOVERLAY) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(dvbsuboverlay); +#endif +#if defined(GST_IOS_PLUGIN_DVDSPU) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(dvdspu); +#endif +#if defined(GST_IOS_PLUGIN_FRAGMENTED) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(fragmented); +#endif +#if defined(GST_IOS_PLUGIN_HDVPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(hdvparse); +#endif +#if defined(GST_IOS_PLUGIN_ID3TAG) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(id3tag); +#endif +#if defined(GST_IOS_PLUGIN_IVFPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(ivfparse); +#endif +#if defined(GST_IOS_PLUGIN_JP2K) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(jp2k); +#endif +#if defined(GST_IOS_PLUGIN_KATE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(kate); +#endif +#if defined(GST_IOS_PLUGIN_MVE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(mve); +#endif +#if defined(GST_IOS_PLUGIN_MXF) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(mxf); +#endif +#if defined(GST_IOS_PLUGIN_NSF) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(nsf); +#endif +#if defined(GST_IOS_PLUGIN_NUVDEMUX) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(nuvdemux); +#endif +#if defined(GST_IOS_PLUGIN_OPUS) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(opus); +#endif +#if defined(GST_IOS_PLUGIN_PCAPPARSE) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(pcapparse); +#endif +#if defined(GST_IOS_PLUGIN_PNM) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(pnm); +#endif +#if defined(GST_IOS_PLUGIN_SCHRO) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(schro); +#endif +#if defined(GST_IOS_PLUGIN_GSTSIREN) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(gstsiren); +#endif +#if defined(GST_IOS_PLUGIN_SUBENC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(subenc); +#endif +#if defined(GST_IOS_PLUGIN_TTA) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(tta); +#endif +#if defined(GST_IOS_PLUGIN_VIDEOPARSERSBAD) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(videoparsersbad); +#endif +#if defined(GST_IOS_PLUGIN_VMNC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(vmnc); +#endif +#if defined(GST_IOS_PLUGIN_VP8) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(vp8); +#endif +#if defined(GST_IOS_PLUGIN_Y4MDEC) || defined(GST_IOS_PLUGINS_CODECS) + GST_PLUGIN_STATIC_REGISTER(y4mdec); +#endif +#if defined(GST_IOS_PLUGIN_TCP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(tcp); +#endif +#if defined(GST_IOS_PLUGIN_RTSP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(rtsp); +#endif +#if defined(GST_IOS_PLUGIN_RTP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(rtp); +#endif +#if defined(GST_IOS_PLUGIN_GSTRTPMANAGER) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(gstrtpmanager); +#endif +#if defined(GST_IOS_PLUGIN_SOUP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(soup); +#endif +#if defined(GST_IOS_PLUGIN_UDP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(udp); +#endif +#if defined(GST_IOS_PLUGIN_DATAURISRC) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(dataurisrc); +#endif +#if defined(GST_IOS_PLUGIN_RTPMUX) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(rtpmux); +#endif +#if defined(GST_IOS_PLUGIN_RTPVP8) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(rtpvp8); +#endif +#if defined(GST_IOS_PLUGIN_SDP) || defined(GST_IOS_PLUGINS_NET) + GST_PLUGIN_STATIC_REGISTER(sdp); +#endif +} diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.h b/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.h new file mode 100644 index 0000000000..d60c3377bc --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/gst_ios_init.h @@ -0,0 +1,25 @@ +#ifndef __GST_IOS_INIT_H__ +#define __GST_IOS_INIT_H__ + +#include + +/* Uncomment each line to enable the plugin categories that your application needs. + * You can also enable individual plugins. See gst_ios_init.c to see their names + */ +#define GST_IOS_PLUGINS_CORE +//#define GST_IOS_PLUGINS_CAPTURE +//#define GST_IOS_PLUGINS_CODECS_RESTRICTED +//#define GST_IOS_PLUGINS_ENCODING +//#define GST_IOS_PLUGINS_DVD +//#define GST_IOS_PLUGINS_CODECS_GPL +//#define GST_IOS_PLUGINS_NET_RESTRICTED +#define GST_IOS_PLUGINS_SYS +//#define GST_IOS_PLUGINS_VIS +#define GST_IOS_PLUGINS_PLAYBACK +#define GST_IOS_PLUGINS_EFFECTS +//#define GST_IOS_PLUGINS_CODECS +//#define GST_IOS_PLUGINS_NET + +void gst_ios_init (); + +#endif diff --git a/gst-sdk/tutorials/xcode iOS/Tutorial 4/main.m b/gst-sdk/tutorials/xcode iOS/Tutorial 4/main.m new file mode 100644 index 0000000000..3ca35079fb --- /dev/null +++ b/gst-sdk/tutorials/xcode iOS/Tutorial 4/main.m @@ -0,0 +1,13 @@ + +#import + +#import "AppDelegate.h" +#include "gst_ios_init.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + gst_ios_init(); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +}