From 96359b7f09a6600160d6ba1ef556aaaa374b8bd3 Mon Sep 17 00:00:00 2001 From: Andreas Smas Date: Tue, 1 Dec 2015 22:02:34 +0100 Subject: [PATCH] Initial iOS/tvOS port --- .gitignore | 4 + .gitmodules | 3 + Autobuild/ios.sh | 11 + ios/Movian-tvOS/Base.lproj/Main.storyboard | 24 + ios/Movian-tvOS/Info.plist | 32 + ios/Movian.xcodeproj/project.pbxproj | 3192 +++++++++++++++++ ios/Movian/AppDelegate.h | 17 + ios/Movian/AppDelegate.m | 121 + ios/Movian/Base.lproj/LaunchScreen.xib | 19 + ios/Movian/Base.lproj/Main.storyboard | 26 + ios/Movian/GameViewController.h | 14 + ios/Movian/GameViewController.m | 358 ++ .../AppIcon.appiconset/Contents.json | 85 + .../AppIcon.appiconset/Icon-40.png | Bin 0 -> 1747 bytes .../AppIcon.appiconset/Icon-40@2x-1.png | Bin 0 -> 3938 bytes .../AppIcon.appiconset/Icon-40@2x.png | Bin 0 -> 3938 bytes .../AppIcon.appiconset/Icon-40@3x.png | Bin 0 -> 6953 bytes .../AppIcon.appiconset/Icon-60@2x.png | Bin 0 -> 6953 bytes .../AppIcon.appiconset/Icon-60@3x.png | Bin 0 -> 11500 bytes .../AppIcon.appiconset/Icon-76.png | Bin 0 -> 3905 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 0 -> 10789 bytes .../AppIcon.appiconset/Icon-Small.png | Bin 0 -> 1370 bytes .../AppIcon.appiconset/Icon-Small@2x-1.png | Bin 0 -> 2674 bytes .../AppIcon.appiconset/Icon-Small@2x.png | Bin 0 -> 2674 bytes .../AppIcon.appiconset/Icon-Small@3x.png | Bin 0 -> 4486 bytes ios/Movian/Images.xcassets/Contents.json | 6 + ios/Movian/Info.plist | 52 + ios/Movian/ios_misc.c | 90 + ios/Movian/main.m | 16 + ios/build_libav.sh | 84 + ios/config.h | 130 + ios/freetype2-ios | 1 + ios/gas-preprocessor.pl | 1041 ++++++ res/shaders/glsl/yc2rgb_1f_norm.glsl | 23 + res/shaders/glsl/yc2rgb_2f_norm.glsl | 28 + res/shaders/glsl/yc2rgb_v.glsl | 18 + src/arch/posix/posix_threads.c | 4 +- src/htsmsg/persistent_nsuserdefaults.m | 2 +- src/service.c | 4 +- src/ui/glw/glw_opengl.h | 2 + src/ui/glw/glw_opengl_shaders.c | 19 + src/ui/glw/glw_scroll.c | 18 +- src/ui/glw/glw_video_ios.c | 438 +++ src/video/vtb.c | 81 +- support/dataroot/osxapp.c | 33 + 45 files changed, 5954 insertions(+), 42 deletions(-) create mode 100644 Autobuild/ios.sh create mode 100644 ios/Movian-tvOS/Base.lproj/Main.storyboard create mode 100644 ios/Movian-tvOS/Info.plist create mode 100644 ios/Movian.xcodeproj/project.pbxproj create mode 100644 ios/Movian/AppDelegate.h create mode 100644 ios/Movian/AppDelegate.m create mode 100644 ios/Movian/Base.lproj/LaunchScreen.xib create mode 100644 ios/Movian/Base.lproj/Main.storyboard create mode 100644 ios/Movian/GameViewController.h create mode 100644 ios/Movian/GameViewController.m create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-76.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png create mode 100644 ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png create mode 100644 ios/Movian/Images.xcassets/Contents.json create mode 100644 ios/Movian/Info.plist create mode 100644 ios/Movian/ios_misc.c create mode 100644 ios/Movian/main.m create mode 100755 ios/build_libav.sh create mode 100644 ios/config.h create mode 160000 ios/freetype2-ios create mode 100755 ios/gas-preprocessor.pl create mode 100644 res/shaders/glsl/yc2rgb_1f_norm.glsl create mode 100644 res/shaders/glsl/yc2rgb_2f_norm.glsl create mode 100644 res/shaders/glsl/yc2rgb_v.glsl create mode 100644 src/ui/glw/glw_video_ios.c create mode 100644 support/dataroot/osxapp.c diff --git a/.gitignore b/.gitignore index aa872ed45a..e62c023832 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,7 @@ debian/changelog android/Showtime/bin/ android/Showtime/gen/ android/Showtime/libs/ +*.xcuserstate +project.xcworkspace/ +xcuserdata/ +InfoPlist.h diff --git a/.gitmodules b/.gitmodules index a72451c796..c0c0291daf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "android"] path = android url = andoma@git.lonelycoder.com:movian-android.git +[submodule "ios/freetype2-ios"] + path = ios/freetype2-ios + url = https://github.com/andoma/freetype2-ios.git diff --git a/Autobuild/ios.sh b/Autobuild/ios.sh new file mode 100644 index 0000000000..dcab4e9dc0 --- /dev/null +++ b/Autobuild/ios.sh @@ -0,0 +1,11 @@ +set -e +BUILDDIR="${PWD}/build.ios" + +rm -rf "${BUILDDIR}" +mkdir -p "${BUILDDIR}" + +(cd ios && xcodebuild archive -scheme Movian -archivePath "${BUILDDIR}/app") + +(cd ios && xcodebuild -exportArchive -archivePath "${BUILDDIR}/app.xcarchive" -exportPath "${BUILDDIR}/" -exportOptionsPlist nobitcode.plist) + +artifact build.ios/Movian.ipa ipa application/octet-stream Movian.ipa diff --git a/ios/Movian-tvOS/Base.lproj/Main.storyboard b/ios/Movian-tvOS/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..682120fdec --- /dev/null +++ b/ios/Movian-tvOS/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Movian-tvOS/Info.plist b/ios/Movian-tvOS/Info.plist new file mode 100644 index 0000000000..7a42324c66 --- /dev/null +++ b/ios/Movian-tvOS/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Movian + CFBundlePackageType + APPL + CFBundleShortVersionString + GIT_REVISION + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + arm64 + + + diff --git a/ios/Movian.xcodeproj/project.pbxproj b/ios/Movian.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..bc0f658169 --- /dev/null +++ b/ios/Movian.xcodeproj/project.pbxproj @@ -0,0 +1,3192 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 6A35C2AE1C1045CD00D8EA86 /* libav-tvOS */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6A35C2B01C1045CD00D8EA86 /* Build configuration list for PBXAggregateTarget "libav-tvOS" */; + buildPhases = ( + 6A35C2AF1C1045CD00D8EA86 /* ShellScript */, + ); + dependencies = ( + ); + name = "libav-tvOS"; + productName = libav; + }; + 6A697AC21C0B103700156A56 /* libav-iOS */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6A697AC31C0B103700156A56 /* Build configuration list for PBXAggregateTarget "libav-iOS" */; + buildPhases = ( + 6A697AC61C0B103D00156A56 /* ShellScript */, + ); + dependencies = ( + ); + name = "libav-iOS"; + productName = libav; + }; + 6A6AD6D31C0E2EDC00931F45 /* GitRevision */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6A6AD6D41C0E2EDC00931F45 /* Build configuration list for PBXAggregateTarget "GitRevision" */; + buildPhases = ( + 6A6AD6D71C0E2EE500931F45 /* ShellScript */, + ); + dependencies = ( + ); + name = GitRevision; + productName = GitRevision; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 6A04C0381C2156080043FA93 /* fa_filepicker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A04C0361C2156080043FA93 /* fa_filepicker.c */; }; + 6A04C0391C2156110043FA93 /* fa_filepicker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A04C0361C2156080043FA93 /* fa_filepicker.c */; }; + 6A04C0451C21A2C80043FA93 /* vtb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A04C0441C21A2C80043FA93 /* vtb.c */; }; + 6A04C0481C21A2F90043FA93 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A04C0471C21A2F90043FA93 /* VideoToolbox.framework */; }; + 6A04C0501C21F7B10043FA93 /* glw_video_ios.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A04C04F1C21F7B10043FA93 /* glw_video_ios.c */; }; + 6A04C0511C21F7B10043FA93 /* glw_video_ios.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A04C04F1C21F7B10043FA93 /* glw_video_ios.c */; }; + 6A08CDDC1C06FEE000387E87 /* libFreetype2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A08CDDB1C06FD8300387E87 /* libFreetype2.a */; }; + 6A08CDED1C07000F00387E87 /* glw_scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A08CDEB1C07000F00387E87 /* glw_scroll.c */; }; + 6A08CDF01C07006500387E87 /* nanosvg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A08CDEF1C07006500387E87 /* nanosvg.c */; }; + 6A2DC23B1CAD1EC7005CD9F3 /* glw_scope.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A2DC23A1CAD1EC7005CD9F3 /* glw_scope.c */; }; + 6A2DC23D1CAD1EDE005CD9F3 /* glw_scope.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A2DC23A1CAD1EC7005CD9F3 /* glw_scope.c */; }; + 6A35C1B61C1040B600D8EA86 /* sqlite3.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF4E1B3065CE0099FB5A /* sqlite3.c */; }; + 6A35C1B71C1040B900D8EA86 /* attribute.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD981B3016110099FB5A /* attribute.c */; }; + 6A35C1B81C1040BD00D8EA86 /* char_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD9A1B3016110099FB5A /* char_ref.c */; }; + 6A35C1B91C1040C300D8EA86 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD9D1B3016110099FB5A /* error.c */; }; + 6A35C1BA1C1040E500D8EA86 /* parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA11B3016110099FB5A /* parser.c */; }; + 6A35C1BB1C1040E700D8EA86 /* string_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA31B3016110099FB5A /* string_buffer.c */; }; + 6A35C1BC1C10412700D8EA86 /* string_piece.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA51B3016110099FB5A /* string_piece.c */; }; + 6A35C1BD1C10415B00D8EA86 /* tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA71B3016110099FB5A /* tag.c */; }; + 6A35C1BE1C10415B00D8EA86 /* tokenizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDAE1B3016110099FB5A /* tokenizer.c */; }; + 6A35C1BF1C10415B00D8EA86 /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB11B3016110099FB5A /* utf8.c */; }; + 6A35C1C01C10415B00D8EA86 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB31B3016110099FB5A /* util.c */; }; + 6A35C1C11C10415B00D8EA86 /* vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB51B3016110099FB5A /* vector.c */; }; + 6A35C1C21C10416400D8EA86 /* trex.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD7E1B3015A80099FB5A /* trex.c */; }; + 6A35C1C31C10416400D8EA86 /* duktape.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD441B3013E10099FB5A /* duktape.c */; }; + 6A35C1C41C10417300D8EA86 /* screenshot.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADBF62D1B9A443D00A21726 /* screenshot.c */; }; + 6A35C1C51C10417300D8EA86 /* httpcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF131B304EFE0099FB5A /* httpcontrol.c */; }; + 6A35C1C61C10417300D8EA86 /* lastfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF141B304EFE0099FB5A /* lastfm.c */; }; + 6A35C1C71C10417300D8EA86 /* soap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF171B304EFE0099FB5A /* soap.c */; }; + 6A35C1C81C10417300D8EA86 /* tmdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1A1B304EFE0099FB5A /* tmdb.c */; }; + 6A35C1C91C10417300D8EA86 /* tvdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1B1B304EFE0099FB5A /* tvdb.c */; }; + 6A35C1CA1C10417300D8EA86 /* xmlrpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1C1B304EFE0099FB5A /* xmlrpc.c */; }; + 6A35C1CB1C10417B00D8EA86 /* posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCCA1B3011790099FB5A /* posix.c */; }; + 6A35C1CC1C10417B00D8EA86 /* posix_threads.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCCC1B3011790099FB5A /* posix_threads.c */; }; + 6A35C1CD1C10418000D8EA86 /* mac_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AB9264D1C0743CD002D59A6 /* mac_audio.c */; }; + 6A35C1CE1C10418000D8EA86 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF2F1B305BC40099FB5A /* audio.c */; }; + 6A35C1CF1C10418000D8EA86 /* audio_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF321B305BC40099FB5A /* audio_test.c */; }; + 6A35C1D01C10418200D8EA86 /* blobcache_file.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD111B30135B0099FB5A /* blobcache_file.c */; }; + 6A35C1D11C10418700D8EA86 /* db_support.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEC81B304DFA0099FB5A /* db_support.c */; }; + 6A35C1D21C10418700D8EA86 /* kvstore.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCECA1B304DFA0099FB5A /* kvstore.c */; }; + 6A35C1D31C10419700D8EA86 /* ecmascript.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD481B30154E0099FB5A /* ecmascript.c */; }; + 6A35C1D41C10419700D8EA86 /* es_console.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4A1B30154E0099FB5A /* es_console.c */; }; + 6A35C1D51C10419700D8EA86 /* es_crypto.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4B1B30154E0099FB5A /* es_crypto.c */; }; + 6A35C1D61C10419700D8EA86 /* es_fs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4C1B30154E0099FB5A /* es_fs.c */; }; + 6A35C1D71C10419700D8EA86 /* es_gumbo.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4D1B30154E0099FB5A /* es_gumbo.c */; }; + 6A35C1D81C10419700D8EA86 /* es_hook.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4E1B30154E0099FB5A /* es_hook.c */; }; + 6A35C1D91C10419700D8EA86 /* es_htsmsg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4F1B30154E0099FB5A /* es_htsmsg.c */; }; + 6A35C1DA1C10419700D8EA86 /* es_io.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD501B30154E0099FB5A /* es_io.c */; }; + 6A35C1DB1C10419700D8EA86 /* es_kvstore.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD511B30154E0099FB5A /* es_kvstore.c */; }; + 6A35C1DC1C10419700D8EA86 /* es_metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD521B30154E0099FB5A /* es_metadata.c */; }; + 6A35C1DD1C10419700D8EA86 /* es_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD531B30154E0099FB5A /* es_misc.c */; }; + 6A35C1DE1C10419700D8EA86 /* es_native_obj.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD541B30154E0099FB5A /* es_native_obj.c */; }; + 6A35C1DF1C10419700D8EA86 /* es_prop.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD551B30154E0099FB5A /* es_prop.c */; }; + 6A35C1E01C10419700D8EA86 /* es_root.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD561B30154E0099FB5A /* es_root.c */; }; + 6A35C1E11C10419700D8EA86 /* es_route.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD571B30154E0099FB5A /* es_route.c */; }; + 6A35C1E21C10419700D8EA86 /* es_searcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD581B30154E0099FB5A /* es_searcher.c */; }; + 6A35C1E31C10419700D8EA86 /* es_service.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD591B30154E0099FB5A /* es_service.c */; }; + 6A35C1E41C10419700D8EA86 /* es_sqlite.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5A1B30154E0099FB5A /* es_sqlite.c */; }; + 6A35C1E51C10419700D8EA86 /* es_stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5B1B30154E0099FB5A /* es_stats.c */; }; + 6A35C1E61C10419700D8EA86 /* es_string.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5C1B30154E0099FB5A /* es_string.c */; }; + 6A35C1E71C10419700D8EA86 /* es_subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5D1B30154E0099FB5A /* es_subtitles.c */; }; + 6A35C1E81C10419700D8EA86 /* es_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5E1B30154E0099FB5A /* es_timer.c */; }; + 6A35C1E91C10419700D8EA86 /* event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD131B30135B0099FB5A /* event.c */; }; + 6A35C1EA1C1041C000D8EA86 /* fa_aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC51B30165D0099FB5A /* fa_aes.c */; }; + 6A35C1EB1C1041C000D8EA86 /* fa_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC61B30165D0099FB5A /* fa_audio.c */; }; + 6A35C1EC1C1041C000D8EA86 /* fa_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC81B30165D0099FB5A /* fa_backend.c */; }; + 6A35C1ED1C1041C000D8EA86 /* fa_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC91B30165D0099FB5A /* fa_buffer.c */; }; + 6A35C1EE1C1041C000D8EA86 /* fa_bundle.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCA1B30165D0099FB5A /* fa_bundle.c */; }; + 6A35C1EF1C1041C000D8EA86 /* fa_bwlimit.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCB1B30165D0099FB5A /* fa_bwlimit.c */; }; + 6A35C1F01C1041C000D8EA86 /* fa_cmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCC1B30165D0099FB5A /* fa_cmp.c */; }; + 6A35C1F11C1041C000D8EA86 /* fa_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCD1B30165D0099FB5A /* fa_data.c */; }; + 6A35C1F21C1041C000D8EA86 /* fa_fs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCF1B30165D0099FB5A /* fa_fs.c */; }; + 6A35C1F31C1041C000D8EA86 /* fa_ftp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD01B30165D0099FB5A /* fa_ftp.c */; }; + 6A35C1F41C1041C000D8EA86 /* fa_funopen.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD11B30165D0099FB5A /* fa_funopen.c */; }; + 6A35C1F51C1041C000D8EA86 /* fa_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD31B30165D0099FB5A /* fa_http.c */; }; + 6A35C1F61C1041C000D8EA86 /* fa_imageloader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD41B30165D0099FB5A /* fa_imageloader.c */; }; + 6A35C1F71C1041C000D8EA86 /* fa_indexer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD61B30165D0099FB5A /* fa_indexer.c */; }; + 6A35C1F81C1041C000D8EA86 /* fa_libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD81B30165D0099FB5A /* fa_libav.c */; }; + 6A35C1F91C1041C000D8EA86 /* fa_probe.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDDD1B30165D0099FB5A /* fa_probe.c */; }; + 6A35C1FA1C1041C000D8EA86 /* fa_rar.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE01B30165D0099FB5A /* fa_rar.c */; }; + 6A35C1FB1C1041C000D8EA86 /* fa_scanner.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE11B30165D0099FB5A /* fa_scanner.c */; }; + 6A35C1FC1C1041C000D8EA86 /* fa_slice.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE41B30165D0099FB5A /* fa_slice.c */; }; + 6A35C1FD1C1041C000D8EA86 /* fa_vfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE61B30165D0099FB5A /* fa_vfs.c */; }; + 6A35C1FE1C1041C000D8EA86 /* fa_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE81B30165D0099FB5A /* fa_video.c */; }; + 6A35C1FF1C1041C000D8EA86 /* fa_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEB1B30165D0099FB5A /* fa_zip.c */; }; + 6A35C2001C1041C000D8EA86 /* fa_zlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEC1B30165D0099FB5A /* fa_zlib.c */; }; + 6A35C2011C1041C000D8EA86 /* fileaccess.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEE1B30165E0099FB5A /* fileaccess.c */; }; + 6A35C2021C1041C000D8EA86 /* ftpparse.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF11B30165E0099FB5A /* ftpparse.c */; }; + 6A35C2031C1041D200D8EA86 /* fa_nativesmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF51B30165E0099FB5A /* fa_nativesmb.c */; }; + 6A35C2041C1041D200D8EA86 /* nmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF71B30165E0099FB5A /* nmb.c */; }; + 6A35C2051C1041FC00D8EA86 /* glw_popup.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6D11C0E2EC700931F45 /* glw_popup.c */; }; + 6A35C2061C1041FC00D8EA86 /* glw_scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A08CDEB1C07000F00387E87 /* glw_scroll.c */; }; + 6A35C2071C1041FC00D8EA86 /* glw_array.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF631B30785D0099FB5A /* glw_array.c */; }; + 6A35C2081C1041FC00D8EA86 /* glw_bar.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF641B30785D0099FB5A /* glw_bar.c */; }; + 6A35C2091C1041FC00D8EA86 /* glw_bloom.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF651B30785D0099FB5A /* glw_bloom.c */; }; + 6A35C20A1C1041FC00D8EA86 /* glw_clip.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF661B30785D0099FB5A /* glw_clip.c */; }; + 6A35C20B1C1041FC00D8EA86 /* glw_clist.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF671B30785D0099FB5A /* glw_clist.c */; }; + 6A35C20C1C1041FC00D8EA86 /* glw_container.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF691B30785D0099FB5A /* glw_container.c */; }; + 6A35C20D1C1041FC00D8EA86 /* glw_cube.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6B1B30785D0099FB5A /* glw_cube.c */; }; + 6A35C20E1C1041FC00D8EA86 /* glw_cursor.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6C1B30785D0099FB5A /* glw_cursor.c */; }; + 6A35C20F1C1041FC00D8EA86 /* glw_deck.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6E1B30785D0099FB5A /* glw_deck.c */; }; + 6A35C2101C1041FC00D8EA86 /* glw_detachable.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6F1B30785D0099FB5A /* glw_detachable.c */; }; + 6A35C2111C1041FC00D8EA86 /* glw_displacement.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF701B30785D0099FB5A /* glw_displacement.c */; }; + 6A35C2121C1041FC00D8EA86 /* glw_dummy.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF711B30785D0099FB5A /* glw_dummy.c */; }; + 6A35C2131C1041FC00D8EA86 /* glw_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF721B30785D0099FB5A /* glw_event.c */; }; + 6A35C2141C1041FC00D8EA86 /* glw_expander.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF741B30785D0099FB5A /* glw_expander.c */; }; + 6A35C2151C1041FC00D8EA86 /* glw_flicker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF751B30785D0099FB5A /* glw_flicker.c */; }; + 6A35C2161C1041FC00D8EA86 /* glw_freefloat.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF761B30785D0099FB5A /* glw_freefloat.c */; }; + 6A35C2171C1041FC00D8EA86 /* glw_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF771B30785D0099FB5A /* glw_image.c */; }; + 6A35C2181C1041FC00D8EA86 /* glw_keyintercept.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF781B30785D0099FB5A /* glw_keyintercept.c */; }; + 6A35C2191C1041FC00D8EA86 /* glw_layer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF791B30785D0099FB5A /* glw_layer.c */; }; + 6A35C21A1C1041FC00D8EA86 /* glw_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF7A1B30785D0099FB5A /* glw_list.c */; }; + 6A35C21B1C1041FC00D8EA86 /* glw_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF7F1B30785D0099FB5A /* glw_math.c */; }; + 6A35C21C1C1041FC00D8EA86 /* glw_mirror.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF801B30785D0099FB5A /* glw_mirror.c */; }; + 6A35C21D1C1041FC00D8EA86 /* glw_navigation.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF821B30785D0099FB5A /* glw_navigation.c */; }; + 6A35C21E1C1041FC00D8EA86 /* glw_opengl_es.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF841B30785D0099FB5A /* glw_opengl_es.c */; }; + 6A35C21F1C1041FC00D8EA86 /* glw_opengl_shaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF871B30785D0099FB5A /* glw_opengl_shaders.c */; }; + 6A35C2201C1041FC00D8EA86 /* glw_playfield.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF891B30785D0099FB5A /* glw_playfield.c */; }; + 6A35C2211C1041FC00D8EA86 /* glw_primitives.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF8A1B30785D0099FB5A /* glw_primitives.c */; }; + 6A35C2221C1041FC00D8EA86 /* glw_renderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF8E1B30785D0099FB5A /* glw_renderer.c */; }; + 6A35C2231C1041FC00D8EA86 /* glw_resizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF901B30785D0099FB5A /* glw_resizer.c */; }; + 6A35C2241C1041FC00D8EA86 /* glw_rotator.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF911B30785D0099FB5A /* glw_rotator.c */; }; + 6A35C2251C1041FC00D8EA86 /* glw_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF941B30785D0099FB5A /* glw_settings.c */; }; + 6A35C2261C1041FC00D8EA86 /* glw_slider.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF961B30785D0099FB5A /* glw_slider.c */; }; + 6A35C2271C1041FC00D8EA86 /* glw_slideshow.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF971B30785D0099FB5A /* glw_slideshow.c */; }; + 6A35C2281C1041FC00D8EA86 /* glw_style.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF981B30785D0099FB5A /* glw_style.c */; }; + 6A35C2291C1041FC00D8EA86 /* glw_text_bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9A1B30785D0099FB5A /* glw_text_bitmap.c */; }; + 6A35C22A1C1041FC00D8EA86 /* glw_texture_loader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9D1B30785D0099FB5A /* glw_texture_loader.c */; }; + 6A35C22B1C1041FC00D8EA86 /* glw_texture_opengl.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9E1B30785D0099FB5A /* glw_texture_opengl.c */; }; + 6A35C22C1C1041FC00D8EA86 /* glw_throbber.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA11B30785D0099FB5A /* glw_throbber.c */; }; + 6A35C22D1C1041FC00D8EA86 /* glw_transitions.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA21B30785D0099FB5A /* glw_transitions.c */; }; + 6A35C22E1C1041FC00D8EA86 /* glw_underscan.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA41B30785D0099FB5A /* glw_underscan.c */; }; + 6A35C22F1C1041FC00D8EA86 /* glw_video_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA61B30785D0099FB5A /* glw_video_common.c */; }; + 6A35C2301C1041FC00D8EA86 /* glw_video_overlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA91B30785D0099FB5A /* glw_video_overlay.c */; }; + 6A35C2311C1041FC00D8EA86 /* glw_video_yuvp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB11B30785D0099FB5A /* glw_video_yuvp.c */; }; + 6A35C2321C1041FC00D8EA86 /* glw_view_attrib.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB21B30785D0099FB5A /* glw_view_attrib.c */; }; + 6A35C2331C1041FC00D8EA86 /* glw_view_eval.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB31B30785D0099FB5A /* glw_view_eval.c */; }; + 6A35C2341C1041FC00D8EA86 /* glw_view_lexer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB41B30785D0099FB5A /* glw_view_lexer.c */; }; + 6A35C2351C1041FC00D8EA86 /* glw_view_loader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB51B30785D0099FB5A /* glw_view_loader.c */; }; + 6A35C2361C1041FC00D8EA86 /* glw_view_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB61B30785D0099FB5A /* glw_view_parser.c */; }; + 6A35C2371C1041FC00D8EA86 /* glw_view_preproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB71B30785D0099FB5A /* glw_view_preproc.c */; }; + 6A35C2381C1041FC00D8EA86 /* glw_view_support.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB81B30785D0099FB5A /* glw_view_support.c */; }; + 6A35C2391C1041FC00D8EA86 /* glw_view.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB91B30785D0099FB5A /* glw_view.c */; }; + 6A35C23A1C1041FC00D8EA86 /* glw.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFBD1B30785D0099FB5A /* glw.c */; }; + 6A35C23C1C10423600D8EA86 /* htsbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFB1B3012F60099FB5A /* htsbuf.c */; }; + 6A35C23D1C10423600D8EA86 /* htsmsg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFD1B3012F60099FB5A /* htsmsg.c */; }; + 6A35C23E1C10423600D8EA86 /* htsmsg_binary.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFF1B3012F60099FB5A /* htsmsg_binary.c */; }; + 6A35C23F1C10423600D8EA86 /* htsmsg_json.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD011B3012F60099FB5A /* htsmsg_json.c */; }; + 6A35C2401C10423600D8EA86 /* htsmsg_store.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD031B3012F60099FB5A /* htsmsg_store.c */; }; + 6A35C2411C10423600D8EA86 /* htsmsg_xml.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD071B3012F60099FB5A /* htsmsg_xml.c */; }; + 6A35C2421C10423600D8EA86 /* i18n.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD151B30135B0099FB5A /* i18n.c */; }; + 6A35C2431C10423600D8EA86 /* nanosvg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A08CDEF1C07006500387E87 /* nanosvg.c */; }; + 6A35C2441C10423600D8EA86 /* rasterizer_ft.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF471B30639D0099FB5A /* rasterizer_ft.c */; }; + 6A35C2451C10423600D8EA86 /* dominantcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE741B304D580099FB5A /* dominantcolor.c */; }; + 6A35C2461C10423600D8EA86 /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE751B304D580099FB5A /* image.c */; }; + 6A35C2471C10423600D8EA86 /* image_decoder_libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE771B304D580099FB5A /* image_decoder_libav.c */; }; + 6A35C2481C10423600D8EA86 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE781B304D580099FB5A /* jpeg.c */; }; + 6A35C2491C10423600D8EA86 /* pixmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7A1B304D580099FB5A /* pixmap.c */; }; + 6A35C24A1C10423600D8EA86 /* svg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7D1B304D580099FB5A /* svg.c */; }; + 6A35C24B1C10423600D8EA86 /* vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7E1B304D580099FB5A /* vector.c */; }; + 6A35C24C1C10423600D8EA86 /* keyring.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD191B30135B0099FB5A /* keyring.c */; }; + 6A35C24D1C10423600D8EA86 /* libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1B1B30135B0099FB5A /* libav.c */; }; + 6A35C24E1C10423600D8EA86 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AEAE74B1B9A374800235754 /* main.c */; }; + 6A35C24F1C10423D00D8EA86 /* media.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD821B3015C90099FB5A /* media.c */; }; + 6A35C2501C10423D00D8EA86 /* media_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD841B3015C90099FB5A /* media_buf.c */; }; + 6A35C2511C10423D00D8EA86 /* media_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD861B3015C90099FB5A /* media_codec.c */; }; + 6A35C2521C10423D00D8EA86 /* media_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD881B3015C90099FB5A /* media_event.c */; }; + 6A35C2531C10423D00D8EA86 /* media_queue.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8A1B3015C90099FB5A /* media_queue.c */; }; + 6A35C2541C10423D00D8EA86 /* media_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8C1B3015C90099FB5A /* media_settings.c */; }; + 6A35C2551C10423D00D8EA86 /* media_track.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8E1B3015C90099FB5A /* media_track.c */; }; + 6A35C2561C10424800D8EA86 /* browsemdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE21B304E5C0099FB5A /* browsemdb.c */; }; + 6A35C2571C10424800D8EA86 /* decoration.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE31B304E5C0099FB5A /* decoration.c */; }; + 6A35C2581C10424800D8EA86 /* metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE41B304E5C0099FB5A /* metadata.c */; }; + 6A35C2591C10424800D8EA86 /* metadata_sources.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE61B304E5C0099FB5A /* metadata_sources.c */; }; + 6A35C25A1C10424800D8EA86 /* metadata_str.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE81B304E5C0099FB5A /* metadata_str.c */; }; + 6A35C25B1C10424800D8EA86 /* metadb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEA1B304E5C0099FB5A /* metadb.c */; }; + 6A35C25C1C10424800D8EA86 /* mlp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEB1B304E5C0099FB5A /* mlp.c */; }; + 6A35C25D1C10424800D8EA86 /* playinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEC1B304E5C0099FB5A /* playinfo.c */; }; + 6A35C25E1C10425D00D8EA86 /* average.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC6E1B3000CC0099FB5A /* average.c */; }; + 6A35C25F1C10425D00D8EA86 /* big5.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC711B3000CC0099FB5A /* big5.c */; }; + 6A35C2601C10425D00D8EA86 /* bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC741B3000CC0099FB5A /* bitstream.c */; }; + 6A35C2611C10425D00D8EA86 /* buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC761B3000CC0099FB5A /* buf.c */; }; + 6A35C2621C10425D00D8EA86 /* callout.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC791B3000CC0099FB5A /* callout.c */; }; + 6A35C2631C10425D00D8EA86 /* cancellable.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7B1B3000CC0099FB5A /* cancellable.c */; }; + 6A35C2641C10425D00D8EA86 /* charset_detector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7D1B3000CC0099FB5A /* charset_detector.c */; }; + 6A35C2651C10425D00D8EA86 /* codepages.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7F1B3000CC0099FB5A /* codepages.c */; }; + 6A35C2661C10425D00D8EA86 /* dbl.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC801B3000CC0099FB5A /* dbl.c */; }; + 6A35C2671C10425D00D8EA86 /* extents.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC831B3000CC0099FB5A /* extents.c */; }; + 6A35C2681C10425D00D8EA86 /* gz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC851B3000CC0099FB5A /* gz.c */; }; + 6A35C2691C10425D00D8EA86 /* isolang.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC871B3000CC0099FB5A /* isolang.c */; }; + 6A35C26A1C10425D00D8EA86 /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC891B3000CC0099FB5A /* json.c */; }; + 6A35C26B1C10425D00D8EA86 /* pool.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC901B3000CC0099FB5A /* pool.c */; }; + 6A35C26C1C10425D00D8EA86 /* ptrvec.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC921B3000CC0099FB5A /* ptrvec.c */; }; + 6A35C26D1C10425D00D8EA86 /* rstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC971B3000CC0099FB5A /* rstr.c */; }; + 6A35C26E1C10425D00D8EA86 /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC9A1B3000CC0099FB5A /* str.c */; }; + 6A35C26F1C10425D00D8EA86 /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC9D1B3000CC0099FB5A /* time.c */; }; + 6A35C2701C10425D00D8EA86 /* unicode_composition.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCA01B3000CC0099FB5A /* unicode_composition.c */; }; + 6A35C2711C10426500D8EA86 /* navigator.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1D1B30135B0099FB5A /* navigator.c */; }; + 6A35C2721C10426F00D8EA86 /* websocket.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A8385341B4280E6002816FB /* websocket.c */; }; + 6A35C2731C10426F00D8EA86 /* asyncio_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE351B304C280099FB5A /* asyncio_http.c */; }; + 6A35C2741C10426F00D8EA86 /* asyncio_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE371B304C280099FB5A /* asyncio_posix.c */; }; + 6A35C2751C10426F00D8EA86 /* ftp_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3A1B304C280099FB5A /* ftp_server.c */; }; + 6A35C2761C10426F00D8EA86 /* http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3C1B304C280099FB5A /* http.c */; }; + 6A35C2771C10426F00D8EA86 /* http_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3E1B304C280099FB5A /* http_server.c */; }; + 6A35C2781C10426F00D8EA86 /* net_apple.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE421B304C280099FB5A /* net_apple.c */; }; + 6A35C2791C10426F00D8EA86 /* net_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE431B304C280099FB5A /* net_common.c */; }; + 6A35C27A1C10426F00D8EA86 /* net_ifaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE451B304C280099FB5A /* net_ifaddr.c */; }; + 6A35C27B1C10426F00D8EA86 /* net_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE4A1B304C280099FB5A /* net_posix.c */; }; + 6A35C27C1C10426F00D8EA86 /* ssdp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE4C1B304C280099FB5A /* ssdp.c */; }; + 6A35C27D1C10427200D8EA86 /* notifications.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1F1B30135B0099FB5A /* notifications.c */; }; + 6A35C27E1C10427200D8EA86 /* playqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD211B30135B0099FB5A /* playqueue.c */; }; + 6A35C2801C10427C00D8EA86 /* prop_proxy.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A8385311B4280C2002816FB /* prop_proxy.c */; }; + 6A35C2811C10427C00D8EA86 /* prop_concat.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD21B3011CF0099FB5A /* prop_concat.c */; }; + 6A35C2821C10427C00D8EA86 /* prop_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD41B3011CF0099FB5A /* prop_core.c */; }; + 6A35C2831C10427C00D8EA86 /* prop_grouper.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD71B3011CF0099FB5A /* prop_grouper.c */; }; + 6A35C2841C10427C00D8EA86 /* prop_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCDB1B3011CF0099FB5A /* prop_http.c */; }; + 6A35C2851C10427C00D8EA86 /* prop_linkselected.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCDF1B3011CF0099FB5A /* prop_linkselected.c */; }; + 6A35C2861C10427C00D8EA86 /* prop_nodefilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE11B3011CF0099FB5A /* prop_nodefilter.c */; }; + 6A35C2871C10427C00D8EA86 /* prop_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE31B3011CF0099FB5A /* prop_posix.c */; }; + 6A35C2881C10427C00D8EA86 /* prop_reorder.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE41B3011CF0099FB5A /* prop_reorder.c */; }; + 6A35C2891C10427C00D8EA86 /* prop_tags.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE61B3011CF0099FB5A /* prop_tags.c */; }; + 6A35C28A1C10427C00D8EA86 /* prop_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE71B3011CF0099FB5A /* prop_test.c */; }; + 6A35C28B1C10427C00D8EA86 /* prop_vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE81B3011CF0099FB5A /* prop_vector.c */; }; + 6A35C28C1C10427C00D8EA86 /* prop_window.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE91B3011CF0099FB5A /* prop_window.c */; }; + 6A35C28D1C10428300D8EA86 /* runcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD251B30135B0099FB5A /* runcontrol.c */; }; + 6A35C28E1C10428600D8EA86 /* sd.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF5B1B3069F60099FB5A /* sd.c */; }; + 6A35C28F1C10428900D8EA86 /* service.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD271B30135B0099FB5A /* service.c */; }; + 6A35C2901C10428900D8EA86 /* settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD291B30135B0099FB5A /* settings.c */; }; + 6A35C2911C10428F00D8EA86 /* dvdspu.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE611B304D390099FB5A /* dvdspu.c */; }; + 6A35C2921C10428F00D8EA86 /* ext_subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE631B304D390099FB5A /* ext_subtitles.c */; }; + 6A35C2931C10428F00D8EA86 /* sub_ass.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE661B304D390099FB5A /* sub_ass.c */; }; + 6A35C2941C10428F00D8EA86 /* subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE671B304D390099FB5A /* subtitles.c */; }; + 6A35C2951C10428F00D8EA86 /* video_overlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE691B304D390099FB5A /* video_overlay.c */; }; + 6A35C2961C10428F00D8EA86 /* vobsub.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE6B1B304D390099FB5A /* vobsub.c */; }; + 6A35C2971C10429200D8EA86 /* task.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD2C1B30135B0099FB5A /* task.c */; }; + 6A35C2981C10429700D8EA86 /* fontstash.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF3F1B3063130099FB5A /* fontstash.c */; }; + 6A35C2991C10429700D8EA86 /* freetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF401B3063130099FB5A /* freetype.c */; }; + 6A35C29A1C10429700D8EA86 /* parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF411B3063130099FB5A /* parser.c */; }; + 6A35C29B1C10429A00D8EA86 /* trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD2E1B30135B0099FB5A /* trace.c */; }; + 6A35C29C1C10429C00D8EA86 /* upgrade.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6CB1C0E293000931F45 /* upgrade.c */; }; + 6A35C29D1C10429E00D8EA86 /* usage.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6CD1C0E293000931F45 /* usage.c */; }; + 6A35C29E1C1042B700D8EA86 /* upnp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED11B304E360099FB5A /* upnp.c */; }; + 6A35C29F1C1042B700D8EA86 /* upnp_avtransport.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED31B304E360099FB5A /* upnp_avtransport.c */; }; + 6A35C2A01C1042B700D8EA86 /* upnp_browse.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED41B304E360099FB5A /* upnp_browse.c */; }; + 6A35C2A11C1042B700D8EA86 /* upnp_connectionmanager.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED51B304E360099FB5A /* upnp_connectionmanager.c */; }; + 6A35C2A21C1042B700D8EA86 /* upnp_control.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED61B304E360099FB5A /* upnp_control.c */; }; + 6A35C2A31C1042B700D8EA86 /* upnp_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED71B304E360099FB5A /* upnp_event.c */; }; + 6A35C2A41C1042B700D8EA86 /* upnp_renderingcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED81B304E360099FB5A /* upnp_renderingcontrol.c */; }; + 6A35C2A51C1042C000D8EA86 /* h264_annexb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEF91B304E800099FB5A /* h264_annexb.c */; }; + 6A35C2A61C1042C000D8EA86 /* h264_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEFB1B304E800099FB5A /* h264_parser.c */; }; + 6A35C2A71C1042C000D8EA86 /* video_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF011B304E800099FB5A /* video_decoder.c */; }; + 6A35C2A81C1042C000D8EA86 /* video_playback.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF031B304E800099FB5A /* video_playback.c */; }; + 6A35C2A91C1042C000D8EA86 /* video_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF051B304E800099FB5A /* video_settings.c */; }; + 6A35C2B61C10488E00D8EA86 /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE891B304DC80099FB5A /* backend.c */; }; + 6A35C2B81C10489000D8EA86 /* backend_prop.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE8B1B304DC80099FB5A /* backend_prop.c */; }; + 6A35C2B91C10489A00D8EA86 /* bencode.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE8E1B304DC80099FB5A /* bencode.c */; }; + 6A35C2BA1C10489A00D8EA86 /* bt_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE911B304DC80099FB5A /* bt_backend.c */; }; + 6A35C2BB1C10489A00D8EA86 /* diskio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE921B304DC80099FB5A /* diskio.c */; }; + 6A35C2BC1C10489A00D8EA86 /* fa_torrent.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE931B304DC80099FB5A /* fa_torrent.c */; }; + 6A35C2BD1C10489A00D8EA86 /* magnet.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE941B304DC80099FB5A /* magnet.c */; }; + 6A35C2BE1C10489A00D8EA86 /* peer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE951B304DC80099FB5A /* peer.c */; }; + 6A35C2BF1C10489A00D8EA86 /* torrent.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE961B304DC80099FB5A /* torrent.c */; }; + 6A35C2C01C10489A00D8EA86 /* torrent_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE971B304DC80099FB5A /* torrent_settings.c */; }; + 6A35C2C11C10489A00D8EA86 /* torrent_stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE981B304DC80099FB5A /* torrent_stats.c */; }; + 6A35C2C21C10489A00D8EA86 /* tracker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE991B304DC80099FB5A /* tracker.c */; }; + 6A35C2C31C10489A00D8EA86 /* tracker_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE9A1B304DC80099FB5A /* tracker_http.c */; }; + 6A35C2C41C10489A00D8EA86 /* tracker_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE9B1B304DC80099FB5A /* tracker_udp.c */; }; + 6A35C2C51C10489F00D8EA86 /* hls.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA21B304DC80099FB5A /* hls.c */; }; + 6A35C2C61C10489F00D8EA86 /* hls_ts.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA41B304DC80099FB5A /* hls_ts.c */; }; + 6A35C2C71C1048A300D8EA86 /* htsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA61B304DC80099FB5A /* htsp.c */; }; + 6A35C2C81C1048A700D8EA86 /* icecast.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA81B304DC80099FB5A /* icecast.c */; }; + 6A35C2C91C1048A900D8EA86 /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEAB1B304DC80099FB5A /* search.c */; }; + 6A35C2CA1C104A4F00D8EA86 /* ios_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF291B30561C0099FB5A /* ios_misc.c */; }; + 6A35C2CB1C104A5400D8EA86 /* osxapp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF601B306BC00099FB5A /* osxapp.c */; }; + 6A35C2CD1C104A9100D8EA86 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A35C2CC1C104A9100D8EA86 /* libz.tbd */; }; + 6A35C2CF1C104A9900D8EA86 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A35C2CE1C104A9900D8EA86 /* libbz2.tbd */; }; + 6A669FDE1C5035430042819C /* stpp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF191B304EFE0099FB5A /* stpp.c */; }; + 6A6AD6CE1C0E293000931F45 /* upgrade.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6CB1C0E293000931F45 /* upgrade.c */; }; + 6A6AD6CF1C0E293000931F45 /* usage.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6CD1C0E293000931F45 /* usage.c */; }; + 6A6AD6D21C0E2EC700931F45 /* glw_popup.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A6AD6D11C0E2EC700931F45 /* glw_popup.c */; }; + 6A7808C01C45B139009FADCB /* longpress.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A7808BF1C45B139009FADCB /* longpress.c */; }; + 6A7808C11C45B139009FADCB /* longpress.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A7808BF1C45B139009FADCB /* longpress.c */; }; + 6A8104391CBCBCD300E29BE8 /* persistent_nsuserdefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A8104381CBCBCD300E29BE8 /* persistent_nsuserdefaults.m */; }; + 6A81043B1CBCC14800E29BE8 /* persistent_nsuserdefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A8104381CBCBCD300E29BE8 /* persistent_nsuserdefaults.m */; }; + 6A8385301B427E0C002816FB /* res in Resources */ = {isa = PBXBuildFile; fileRef = 6A83852F1B427E0C002816FB /* res */; }; + 6A8385331B4280C2002816FB /* prop_proxy.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A8385311B4280C2002816FB /* prop_proxy.c */; }; + 6A8385361B4280E6002816FB /* websocket.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A8385341B4280E6002816FB /* websocket.c */; }; + 6A8385391B42811B002816FB /* glwskins in Resources */ = {isa = PBXBuildFile; fileRef = 6A8385371B42811B002816FB /* glwskins */; }; + 6A83853A1B42811B002816FB /* lang in Resources */ = {isa = PBXBuildFile; fileRef = 6A8385381B42811B002816FB /* lang */; }; + 6AB9264E1C0743CD002D59A6 /* mac_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AB9264D1C0743CD002D59A6 /* mac_audio.c */; }; + 6AC2B8761B1F23D700969FB4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B8751B1F23D700969FB4 /* main.m */; }; + 6AC2B8791B1F23D700969FB4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B8781B1F23D700969FB4 /* AppDelegate.m */; }; + 6AC2B8801B1F23D800969FB4 /* GameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B87F1B1F23D800969FB4 /* GameViewController.m */; }; + 6AC2B8881B1F23D800969FB4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6AC2B8861B1F23D800969FB4 /* LaunchScreen.xib */; }; + 6AC938711C0E443E00D54769 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6AC938701C0E443E00D54769 /* Assets.xcassets */; }; + 6AD574EC1C15FD8100FCA17D /* libFreetype2-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AD574EB1C15FD8100FCA17D /* libFreetype2-tvOS.a */; }; + 6AD574EF1C15FDC600FCA17D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B8751B1F23D700969FB4 /* main.m */; }; + 6AD574F01C15FDC900FCA17D /* GameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B87F1B1F23D800969FB4 /* GameViewController.m */; }; + 6AD574F11C15FDCD00FCA17D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC2B8781B1F23D700969FB4 /* AppDelegate.m */; }; + 6AD574F41C15FE6E00FCA17D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6AC9386D1C0E443E00D54769 /* Main.storyboard */; }; + 6AD574F51C15FE7700FCA17D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6AC2B8811B1F23D800969FB4 /* Main.storyboard */; }; + 6AD574F61C15FED600FCA17D /* res in Resources */ = {isa = PBXBuildFile; fileRef = 6A83852F1B427E0C002816FB /* res */; }; + 6AD574F71C15FED800FCA17D /* lang in Resources */ = {isa = PBXBuildFile; fileRef = 6A8385381B42811B002816FB /* lang */; }; + 6AD574F81C15FEDB00FCA17D /* glwskins in Resources */ = {isa = PBXBuildFile; fileRef = 6A8385371B42811B002816FB /* glwskins */; }; + 6ADBF62F1B9A443D00A21726 /* screenshot.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADBF62D1B9A443D00A21726 /* screenshot.c */; }; + 6ADCCCA21B3000CC0099FB5A /* average.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC6E1B3000CC0099FB5A /* average.c */; }; + 6ADCCCA31B3000CC0099FB5A /* big5.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC711B3000CC0099FB5A /* big5.c */; }; + 6ADCCCA41B3000CC0099FB5A /* bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC741B3000CC0099FB5A /* bitstream.c */; }; + 6ADCCCA51B3000CC0099FB5A /* buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC761B3000CC0099FB5A /* buf.c */; }; + 6ADCCCA61B3000CC0099FB5A /* callout.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC791B3000CC0099FB5A /* callout.c */; }; + 6ADCCCA71B3000CC0099FB5A /* cancellable.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7B1B3000CC0099FB5A /* cancellable.c */; }; + 6ADCCCA81B3000CC0099FB5A /* charset_detector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7D1B3000CC0099FB5A /* charset_detector.c */; }; + 6ADCCCA91B3000CC0099FB5A /* codepages.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC7F1B3000CC0099FB5A /* codepages.c */; }; + 6ADCCCAA1B3000CC0099FB5A /* dbl.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC801B3000CC0099FB5A /* dbl.c */; }; + 6ADCCCAB1B3000CC0099FB5A /* extents.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC831B3000CC0099FB5A /* extents.c */; }; + 6ADCCCAC1B3000CC0099FB5A /* gz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC851B3000CC0099FB5A /* gz.c */; }; + 6ADCCCAD1B3000CC0099FB5A /* isolang.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC871B3000CC0099FB5A /* isolang.c */; }; + 6ADCCCAE1B3000CC0099FB5A /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC891B3000CC0099FB5A /* json.c */; }; + 6ADCCCAF1B3000CC0099FB5A /* pool.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC901B3000CC0099FB5A /* pool.c */; }; + 6ADCCCB01B3000CC0099FB5A /* ptrvec.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC921B3000CC0099FB5A /* ptrvec.c */; }; + 6ADCCCB11B3000CC0099FB5A /* rstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC971B3000CC0099FB5A /* rstr.c */; }; + 6ADCCCB21B3000CC0099FB5A /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC9A1B3000CC0099FB5A /* str.c */; }; + 6ADCCCB31B3000CC0099FB5A /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCC9D1B3000CC0099FB5A /* time.c */; }; + 6ADCCCB41B3000CC0099FB5A /* unicode_composition.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCA01B3000CC0099FB5A /* unicode_composition.c */; }; + 6ADCCCCE1B3011790099FB5A /* posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCCA1B3011790099FB5A /* posix.c */; }; + 6ADCCCCF1B3011790099FB5A /* posix_threads.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCCC1B3011790099FB5A /* posix_threads.c */; }; + 6ADCCCEB1B3011CF0099FB5A /* prop_concat.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD21B3011CF0099FB5A /* prop_concat.c */; }; + 6ADCCCEC1B3011CF0099FB5A /* prop_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD41B3011CF0099FB5A /* prop_core.c */; }; + 6ADCCCEE1B3011CF0099FB5A /* prop_grouper.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCD71B3011CF0099FB5A /* prop_grouper.c */; }; + 6ADCCCF01B3011CF0099FB5A /* prop_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCDB1B3011CF0099FB5A /* prop_http.c */; }; + 6ADCCCF21B3011CF0099FB5A /* prop_linkselected.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCDF1B3011CF0099FB5A /* prop_linkselected.c */; }; + 6ADCCCF31B3011CF0099FB5A /* prop_nodefilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE11B3011CF0099FB5A /* prop_nodefilter.c */; }; + 6ADCCCF41B3011CF0099FB5A /* prop_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE31B3011CF0099FB5A /* prop_posix.c */; }; + 6ADCCCF51B3011CF0099FB5A /* prop_reorder.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE41B3011CF0099FB5A /* prop_reorder.c */; }; + 6ADCCCF61B3011CF0099FB5A /* prop_tags.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE61B3011CF0099FB5A /* prop_tags.c */; }; + 6ADCCCF71B3011CF0099FB5A /* prop_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE71B3011CF0099FB5A /* prop_test.c */; }; + 6ADCCCF81B3011CF0099FB5A /* prop_vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE81B3011CF0099FB5A /* prop_vector.c */; }; + 6ADCCCF91B3011CF0099FB5A /* prop_window.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCE91B3011CF0099FB5A /* prop_window.c */; }; + 6ADCCD091B3012F60099FB5A /* htsbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFB1B3012F60099FB5A /* htsbuf.c */; }; + 6ADCCD0A1B3012F60099FB5A /* htsmsg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFD1B3012F60099FB5A /* htsmsg.c */; }; + 6ADCCD0B1B3012F60099FB5A /* htsmsg_binary.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCCFF1B3012F60099FB5A /* htsmsg_binary.c */; }; + 6ADCCD0C1B3012F60099FB5A /* htsmsg_json.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD011B3012F60099FB5A /* htsmsg_json.c */; }; + 6ADCCD0D1B3012F60099FB5A /* htsmsg_store.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD031B3012F60099FB5A /* htsmsg_store.c */; }; + 6ADCCD101B3012F60099FB5A /* htsmsg_xml.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD071B3012F60099FB5A /* htsmsg_xml.c */; }; + 6ADCCD311B30135B0099FB5A /* blobcache_file.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD111B30135B0099FB5A /* blobcache_file.c */; }; + 6ADCCD321B30135B0099FB5A /* event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD131B30135B0099FB5A /* event.c */; }; + 6ADCCD331B30135B0099FB5A /* i18n.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD151B30135B0099FB5A /* i18n.c */; }; + 6ADCCD351B30135B0099FB5A /* keyring.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD191B30135B0099FB5A /* keyring.c */; }; + 6ADCCD361B30135B0099FB5A /* libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1B1B30135B0099FB5A /* libav.c */; }; + 6ADCCD371B30135B0099FB5A /* navigator.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1D1B30135B0099FB5A /* navigator.c */; }; + 6ADCCD381B30135B0099FB5A /* notifications.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD1F1B30135B0099FB5A /* notifications.c */; }; + 6ADCCD391B30135B0099FB5A /* playqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD211B30135B0099FB5A /* playqueue.c */; }; + 6ADCCD3B1B30135B0099FB5A /* runcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD251B30135B0099FB5A /* runcontrol.c */; }; + 6ADCCD3C1B30135B0099FB5A /* service.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD271B30135B0099FB5A /* service.c */; }; + 6ADCCD3D1B30135B0099FB5A /* settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD291B30135B0099FB5A /* settings.c */; }; + 6ADCCD3F1B30135B0099FB5A /* task.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD2C1B30135B0099FB5A /* task.c */; }; + 6ADCCD401B30135B0099FB5A /* trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD2E1B30135B0099FB5A /* trace.c */; }; + 6ADCCD461B3013E10099FB5A /* duktape.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD441B3013E10099FB5A /* duktape.c */; }; + 6ADCCD5F1B30154E0099FB5A /* ecmascript.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD481B30154E0099FB5A /* ecmascript.c */; }; + 6ADCCD601B30154E0099FB5A /* es_console.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4A1B30154E0099FB5A /* es_console.c */; }; + 6ADCCD611B30154E0099FB5A /* es_crypto.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4B1B30154E0099FB5A /* es_crypto.c */; }; + 6ADCCD621B30154E0099FB5A /* es_fs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4C1B30154E0099FB5A /* es_fs.c */; }; + 6ADCCD631B30154E0099FB5A /* es_gumbo.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4D1B30154E0099FB5A /* es_gumbo.c */; }; + 6ADCCD641B30154E0099FB5A /* es_hook.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4E1B30154E0099FB5A /* es_hook.c */; }; + 6ADCCD651B30154E0099FB5A /* es_htsmsg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD4F1B30154E0099FB5A /* es_htsmsg.c */; }; + 6ADCCD661B30154E0099FB5A /* es_io.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD501B30154E0099FB5A /* es_io.c */; }; + 6ADCCD671B30154E0099FB5A /* es_kvstore.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD511B30154E0099FB5A /* es_kvstore.c */; }; + 6ADCCD681B30154E0099FB5A /* es_metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD521B30154E0099FB5A /* es_metadata.c */; }; + 6ADCCD691B30154E0099FB5A /* es_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD531B30154E0099FB5A /* es_misc.c */; }; + 6ADCCD6A1B30154E0099FB5A /* es_native_obj.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD541B30154E0099FB5A /* es_native_obj.c */; }; + 6ADCCD6B1B30154E0099FB5A /* es_prop.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD551B30154E0099FB5A /* es_prop.c */; }; + 6ADCCD6C1B30154E0099FB5A /* es_root.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD561B30154E0099FB5A /* es_root.c */; }; + 6ADCCD6D1B30154E0099FB5A /* es_route.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD571B30154E0099FB5A /* es_route.c */; }; + 6ADCCD6E1B30154E0099FB5A /* es_searcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD581B30154E0099FB5A /* es_searcher.c */; }; + 6ADCCD6F1B30154E0099FB5A /* es_service.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD591B30154E0099FB5A /* es_service.c */; }; + 6ADCCD701B30154E0099FB5A /* es_sqlite.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5A1B30154E0099FB5A /* es_sqlite.c */; }; + 6ADCCD711B30154E0099FB5A /* es_stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5B1B30154E0099FB5A /* es_stats.c */; }; + 6ADCCD721B30154E0099FB5A /* es_string.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5C1B30154E0099FB5A /* es_string.c */; }; + 6ADCCD731B30154E0099FB5A /* es_subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5D1B30154E0099FB5A /* es_subtitles.c */; }; + 6ADCCD741B30154E0099FB5A /* es_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD5E1B30154E0099FB5A /* es_timer.c */; }; + 6ADCCD801B3015A80099FB5A /* trex.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD7E1B3015A80099FB5A /* trex.c */; }; + 6ADCCD901B3015C90099FB5A /* media.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD821B3015C90099FB5A /* media.c */; }; + 6ADCCD911B3015C90099FB5A /* media_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD841B3015C90099FB5A /* media_buf.c */; }; + 6ADCCD921B3015C90099FB5A /* media_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD861B3015C90099FB5A /* media_codec.c */; }; + 6ADCCD931B3015C90099FB5A /* media_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD881B3015C90099FB5A /* media_event.c */; }; + 6ADCCD941B3015C90099FB5A /* media_queue.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8A1B3015C90099FB5A /* media_queue.c */; }; + 6ADCCD951B3015C90099FB5A /* media_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8C1B3015C90099FB5A /* media_settings.c */; }; + 6ADCCD961B3015C90099FB5A /* media_track.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD8E1B3015C90099FB5A /* media_track.c */; }; + 6ADCCDB71B3016110099FB5A /* attribute.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD981B3016110099FB5A /* attribute.c */; }; + 6ADCCDB81B3016110099FB5A /* char_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD9A1B3016110099FB5A /* char_ref.c */; }; + 6ADCCDBA1B3016110099FB5A /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCD9D1B3016110099FB5A /* error.c */; }; + 6ADCCDBB1B3016110099FB5A /* parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA11B3016110099FB5A /* parser.c */; }; + 6ADCCDBC1B3016110099FB5A /* string_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA31B3016110099FB5A /* string_buffer.c */; }; + 6ADCCDBD1B3016110099FB5A /* string_piece.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA51B3016110099FB5A /* string_piece.c */; }; + 6ADCCDBE1B3016110099FB5A /* tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDA71B3016110099FB5A /* tag.c */; }; + 6ADCCDC01B3016110099FB5A /* tokenizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDAE1B3016110099FB5A /* tokenizer.c */; }; + 6ADCCDC11B3016110099FB5A /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB11B3016110099FB5A /* utf8.c */; }; + 6ADCCDC21B3016110099FB5A /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB31B3016110099FB5A /* util.c */; }; + 6ADCCDC31B3016110099FB5A /* vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDB51B3016110099FB5A /* vector.c */; }; + 6ADCCDFB1B30165E0099FB5A /* fa_aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC51B30165D0099FB5A /* fa_aes.c */; }; + 6ADCCDFC1B30165E0099FB5A /* fa_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC61B30165D0099FB5A /* fa_audio.c */; }; + 6ADCCDFD1B30165E0099FB5A /* fa_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC81B30165D0099FB5A /* fa_backend.c */; }; + 6ADCCDFE1B30165E0099FB5A /* fa_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDC91B30165D0099FB5A /* fa_buffer.c */; }; + 6ADCCDFF1B30165E0099FB5A /* fa_bundle.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCA1B30165D0099FB5A /* fa_bundle.c */; }; + 6ADCCE001B30165E0099FB5A /* fa_bwlimit.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCB1B30165D0099FB5A /* fa_bwlimit.c */; }; + 6ADCCE011B30165E0099FB5A /* fa_cmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCC1B30165D0099FB5A /* fa_cmp.c */; }; + 6ADCCE021B30165E0099FB5A /* fa_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCD1B30165D0099FB5A /* fa_data.c */; }; + 6ADCCE031B30165E0099FB5A /* fa_fs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDCF1B30165D0099FB5A /* fa_fs.c */; }; + 6ADCCE041B30165E0099FB5A /* fa_ftp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD01B30165D0099FB5A /* fa_ftp.c */; }; + 6ADCCE051B30165E0099FB5A /* fa_funopen.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD11B30165D0099FB5A /* fa_funopen.c */; }; + 6ADCCE071B30165E0099FB5A /* fa_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD31B30165D0099FB5A /* fa_http.c */; }; + 6ADCCE081B30165E0099FB5A /* fa_imageloader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD41B30165D0099FB5A /* fa_imageloader.c */; }; + 6ADCCE091B30165E0099FB5A /* fa_indexer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD61B30165D0099FB5A /* fa_indexer.c */; }; + 6ADCCE0A1B30165E0099FB5A /* fa_libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDD81B30165D0099FB5A /* fa_libav.c */; }; + 6ADCCE0E1B30165E0099FB5A /* fa_probe.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDDD1B30165D0099FB5A /* fa_probe.c */; }; + 6ADCCE0F1B30165E0099FB5A /* fa_rar.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE01B30165D0099FB5A /* fa_rar.c */; }; + 6ADCCE101B30165E0099FB5A /* fa_scanner.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE11B30165D0099FB5A /* fa_scanner.c */; }; + 6ADCCE121B30165E0099FB5A /* fa_slice.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE41B30165D0099FB5A /* fa_slice.c */; }; + 6ADCCE141B30165E0099FB5A /* fa_vfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE61B30165D0099FB5A /* fa_vfs.c */; }; + 6ADCCE151B30165E0099FB5A /* fa_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDE81B30165D0099FB5A /* fa_video.c */; }; + 6ADCCE171B30165E0099FB5A /* fa_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEB1B30165D0099FB5A /* fa_zip.c */; }; + 6ADCCE181B30165E0099FB5A /* fa_zlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEC1B30165D0099FB5A /* fa_zlib.c */; }; + 6ADCCE191B30165E0099FB5A /* fileaccess.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDEE1B30165E0099FB5A /* fileaccess.c */; }; + 6ADCCE1A1B30165E0099FB5A /* ftpparse.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF11B30165E0099FB5A /* ftpparse.c */; }; + 6ADCCE1B1B30165E0099FB5A /* fa_nativesmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF51B30165E0099FB5A /* fa_nativesmb.c */; }; + 6ADCCE1C1B30165E0099FB5A /* nmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCDF71B30165E0099FB5A /* nmb.c */; }; + 6ADCCE4E1B304C280099FB5A /* asyncio_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE351B304C280099FB5A /* asyncio_http.c */; }; + 6ADCCE501B304C280099FB5A /* asyncio_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE371B304C280099FB5A /* asyncio_posix.c */; }; + 6ADCCE521B304C280099FB5A /* ftp_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3A1B304C280099FB5A /* ftp_server.c */; }; + 6ADCCE531B304C280099FB5A /* http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3C1B304C280099FB5A /* http.c */; }; + 6ADCCE541B304C280099FB5A /* http_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE3E1B304C280099FB5A /* http_server.c */; }; + 6ADCCE561B304C280099FB5A /* net_apple.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE421B304C280099FB5A /* net_apple.c */; }; + 6ADCCE571B304C280099FB5A /* net_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE431B304C280099FB5A /* net_common.c */; }; + 6ADCCE581B304C280099FB5A /* net_ifaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE451B304C280099FB5A /* net_ifaddr.c */; }; + 6ADCCE5D1B304C280099FB5A /* net_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE4A1B304C280099FB5A /* net_posix.c */; }; + 6ADCCE5F1B304C280099FB5A /* ssdp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE4C1B304C280099FB5A /* ssdp.c */; }; + 6ADCCE6D1B304D390099FB5A /* dvdspu.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE611B304D390099FB5A /* dvdspu.c */; }; + 6ADCCE6E1B304D390099FB5A /* ext_subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE631B304D390099FB5A /* ext_subtitles.c */; }; + 6ADCCE6F1B304D390099FB5A /* sub_ass.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE661B304D390099FB5A /* sub_ass.c */; }; + 6ADCCE701B304D390099FB5A /* subtitles.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE671B304D390099FB5A /* subtitles.c */; }; + 6ADCCE711B304D390099FB5A /* video_overlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE691B304D390099FB5A /* video_overlay.c */; }; + 6ADCCE721B304D390099FB5A /* vobsub.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE6B1B304D390099FB5A /* vobsub.c */; }; + 6ADCCE801B304D580099FB5A /* dominantcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE741B304D580099FB5A /* dominantcolor.c */; }; + 6ADCCE811B304D580099FB5A /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE751B304D580099FB5A /* image.c */; }; + 6ADCCE821B304D580099FB5A /* image_decoder_libav.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE771B304D580099FB5A /* image_decoder_libav.c */; }; + 6ADCCE831B304D580099FB5A /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE781B304D580099FB5A /* jpeg.c */; }; + 6ADCCE841B304D580099FB5A /* pixmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7A1B304D580099FB5A /* pixmap.c */; }; + 6ADCCE861B304D580099FB5A /* svg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7D1B304D580099FB5A /* svg.c */; }; + 6ADCCE871B304D580099FB5A /* vector.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE7E1B304D580099FB5A /* vector.c */; }; + 6ADCCEAF1B304DC80099FB5A /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE891B304DC80099FB5A /* backend.c */; }; + 6ADCCEB01B304DC80099FB5A /* backend_prop.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE8B1B304DC80099FB5A /* backend_prop.c */; }; + 6ADCCEB11B304DC80099FB5A /* bencode.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE8E1B304DC80099FB5A /* bencode.c */; }; + 6ADCCEB21B304DC80099FB5A /* bt_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE911B304DC80099FB5A /* bt_backend.c */; }; + 6ADCCEB31B304DC80099FB5A /* diskio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE921B304DC80099FB5A /* diskio.c */; }; + 6ADCCEB41B304DC80099FB5A /* fa_torrent.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE931B304DC80099FB5A /* fa_torrent.c */; }; + 6ADCCEB51B304DC80099FB5A /* magnet.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE941B304DC80099FB5A /* magnet.c */; }; + 6ADCCEB61B304DC80099FB5A /* peer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE951B304DC80099FB5A /* peer.c */; }; + 6ADCCEB71B304DC80099FB5A /* torrent.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE961B304DC80099FB5A /* torrent.c */; }; + 6ADCCEB81B304DC80099FB5A /* torrent_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE971B304DC80099FB5A /* torrent_settings.c */; }; + 6ADCCEB91B304DC80099FB5A /* torrent_stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE981B304DC80099FB5A /* torrent_stats.c */; }; + 6ADCCEBA1B304DC80099FB5A /* tracker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE991B304DC80099FB5A /* tracker.c */; }; + 6ADCCEBB1B304DC80099FB5A /* tracker_http.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE9A1B304DC80099FB5A /* tracker_http.c */; }; + 6ADCCEBC1B304DC80099FB5A /* tracker_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCE9B1B304DC80099FB5A /* tracker_udp.c */; }; + 6ADCCEC01B304DC80099FB5A /* hls.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA21B304DC80099FB5A /* hls.c */; }; + 6ADCCEC11B304DC80099FB5A /* hls_ts.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA41B304DC80099FB5A /* hls_ts.c */; }; + 6ADCCEC21B304DC80099FB5A /* htsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA61B304DC80099FB5A /* htsp.c */; }; + 6ADCCEC31B304DC80099FB5A /* icecast.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEA81B304DC80099FB5A /* icecast.c */; }; + 6ADCCEC51B304DC80099FB5A /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEAB1B304DC80099FB5A /* search.c */; }; + 6ADCCECD1B304DFA0099FB5A /* db_support.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEC81B304DFA0099FB5A /* db_support.c */; }; + 6ADCCECE1B304DFA0099FB5A /* kvstore.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCECA1B304DFA0099FB5A /* kvstore.c */; }; + 6ADCCEDA1B304E360099FB5A /* upnp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED11B304E360099FB5A /* upnp.c */; }; + 6ADCCEDB1B304E360099FB5A /* upnp_avtransport.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED31B304E360099FB5A /* upnp_avtransport.c */; }; + 6ADCCEDC1B304E360099FB5A /* upnp_browse.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED41B304E360099FB5A /* upnp_browse.c */; }; + 6ADCCEDD1B304E360099FB5A /* upnp_connectionmanager.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED51B304E360099FB5A /* upnp_connectionmanager.c */; }; + 6ADCCEDE1B304E360099FB5A /* upnp_control.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED61B304E360099FB5A /* upnp_control.c */; }; + 6ADCCEDF1B304E360099FB5A /* upnp_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED71B304E360099FB5A /* upnp_event.c */; }; + 6ADCCEE01B304E360099FB5A /* upnp_renderingcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCED81B304E360099FB5A /* upnp_renderingcontrol.c */; }; + 6ADCCEEE1B304E5C0099FB5A /* browsemdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE21B304E5C0099FB5A /* browsemdb.c */; }; + 6ADCCEEF1B304E5C0099FB5A /* decoration.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE31B304E5C0099FB5A /* decoration.c */; }; + 6ADCCEF01B304E5C0099FB5A /* metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE41B304E5C0099FB5A /* metadata.c */; }; + 6ADCCEF11B304E5C0099FB5A /* metadata_sources.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE61B304E5C0099FB5A /* metadata_sources.c */; }; + 6ADCCEF21B304E5C0099FB5A /* metadata_str.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEE81B304E5C0099FB5A /* metadata_str.c */; }; + 6ADCCEF31B304E5C0099FB5A /* metadb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEA1B304E5C0099FB5A /* metadb.c */; }; + 6ADCCEF41B304E5C0099FB5A /* mlp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEB1B304E5C0099FB5A /* mlp.c */; }; + 6ADCCEF51B304E5C0099FB5A /* playinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEEC1B304E5C0099FB5A /* playinfo.c */; }; + 6ADCCF081B304E800099FB5A /* h264_annexb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEF91B304E800099FB5A /* h264_annexb.c */; }; + 6ADCCF091B304E800099FB5A /* h264_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCEFB1B304E800099FB5A /* h264_parser.c */; }; + 6ADCCF0C1B304E800099FB5A /* video_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF011B304E800099FB5A /* video_decoder.c */; }; + 6ADCCF0D1B304E800099FB5A /* video_playback.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF031B304E800099FB5A /* video_playback.c */; }; + 6ADCCF0E1B304E800099FB5A /* video_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF051B304E800099FB5A /* video_settings.c */; }; + 6ADCCF101B304EC60099FB5A /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ADCCF0F1B304EC60099FB5A /* libz.dylib */; }; + 6ADCCF1F1B304EFE0099FB5A /* httpcontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF131B304EFE0099FB5A /* httpcontrol.c */; }; + 6ADCCF201B304EFE0099FB5A /* lastfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF141B304EFE0099FB5A /* lastfm.c */; }; + 6ADCCF211B304EFE0099FB5A /* soap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF171B304EFE0099FB5A /* soap.c */; }; + 6ADCCF221B304EFE0099FB5A /* stpp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF191B304EFE0099FB5A /* stpp.c */; }; + 6ADCCF231B304EFE0099FB5A /* tmdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1A1B304EFE0099FB5A /* tmdb.c */; }; + 6ADCCF241B304EFE0099FB5A /* tvdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1B1B304EFE0099FB5A /* tvdb.c */; }; + 6ADCCF251B304EFE0099FB5A /* xmlrpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF1C1B304EFE0099FB5A /* xmlrpc.c */; }; + 6ADCCF271B304F410099FB5A /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ADCCF261B304F410099FB5A /* libbz2.dylib */; }; + 6ADCCF2A1B30561C0099FB5A /* ios_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF291B30561C0099FB5A /* ios_misc.c */; }; + 6ADCCF371B305BC40099FB5A /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF2F1B305BC40099FB5A /* audio.c */; }; + 6ADCCF381B305BC40099FB5A /* audio_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF321B305BC40099FB5A /* audio_test.c */; }; + 6ADCCF441B3063130099FB5A /* fontstash.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF3F1B3063130099FB5A /* fontstash.c */; }; + 6ADCCF451B3063130099FB5A /* freetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF401B3063130099FB5A /* freetype.c */; }; + 6ADCCF461B3063130099FB5A /* parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF411B3063130099FB5A /* parser.c */; }; + 6ADCCF481B30639D0099FB5A /* rasterizer_ft.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF471B30639D0099FB5A /* rasterizer_ft.c */; }; + 6ADCCF521B3065CE0099FB5A /* sqlite3.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF4E1B3065CE0099FB5A /* sqlite3.c */; }; + 6ADCCF5F1B3069F60099FB5A /* sd.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF5B1B3069F60099FB5A /* sd.c */; }; + 6ADCCF611B306BC00099FB5A /* osxapp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF601B306BC00099FB5A /* osxapp.c */; }; + 6ADCCFBF1B30785D0099FB5A /* glw_array.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF631B30785D0099FB5A /* glw_array.c */; }; + 6ADCCFC01B30785D0099FB5A /* glw_bar.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF641B30785D0099FB5A /* glw_bar.c */; }; + 6ADCCFC11B30785D0099FB5A /* glw_bloom.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF651B30785D0099FB5A /* glw_bloom.c */; }; + 6ADCCFC21B30785D0099FB5A /* glw_clip.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF661B30785D0099FB5A /* glw_clip.c */; }; + 6ADCCFC31B30785D0099FB5A /* glw_clist.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF671B30785D0099FB5A /* glw_clist.c */; }; + 6ADCCFC41B30785D0099FB5A /* glw_container.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF691B30785D0099FB5A /* glw_container.c */; }; + 6ADCCFC61B30785D0099FB5A /* glw_cube.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6B1B30785D0099FB5A /* glw_cube.c */; }; + 6ADCCFC71B30785D0099FB5A /* glw_cursor.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6C1B30785D0099FB5A /* glw_cursor.c */; }; + 6ADCCFC81B30785D0099FB5A /* glw_deck.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6E1B30785D0099FB5A /* glw_deck.c */; }; + 6ADCCFC91B30785D0099FB5A /* glw_detachable.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF6F1B30785D0099FB5A /* glw_detachable.c */; }; + 6ADCCFCA1B30785D0099FB5A /* glw_displacement.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF701B30785D0099FB5A /* glw_displacement.c */; }; + 6ADCCFCB1B30785D0099FB5A /* glw_dummy.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF711B30785D0099FB5A /* glw_dummy.c */; }; + 6ADCCFCC1B30785D0099FB5A /* glw_event.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF721B30785D0099FB5A /* glw_event.c */; }; + 6ADCCFCD1B30785D0099FB5A /* glw_expander.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF741B30785D0099FB5A /* glw_expander.c */; }; + 6ADCCFCE1B30785D0099FB5A /* glw_flicker.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF751B30785D0099FB5A /* glw_flicker.c */; }; + 6ADCCFCF1B30785D0099FB5A /* glw_freefloat.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF761B30785D0099FB5A /* glw_freefloat.c */; }; + 6ADCCFD01B30785D0099FB5A /* glw_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF771B30785D0099FB5A /* glw_image.c */; }; + 6ADCCFD11B30785D0099FB5A /* glw_keyintercept.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF781B30785D0099FB5A /* glw_keyintercept.c */; }; + 6ADCCFD21B30785D0099FB5A /* glw_layer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF791B30785D0099FB5A /* glw_layer.c */; }; + 6ADCCFD31B30785D0099FB5A /* glw_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF7A1B30785D0099FB5A /* glw_list.c */; }; + 6ADCCFD61B30785D0099FB5A /* glw_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF7F1B30785D0099FB5A /* glw_math.c */; }; + 6ADCCFD71B30785D0099FB5A /* glw_mirror.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF801B30785D0099FB5A /* glw_mirror.c */; }; + 6ADCCFD81B30785D0099FB5A /* glw_navigation.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF821B30785D0099FB5A /* glw_navigation.c */; }; + 6ADCCFD91B30785D0099FB5A /* glw_opengl_es.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF841B30785D0099FB5A /* glw_opengl_es.c */; }; + 6ADCCFDC1B30785D0099FB5A /* glw_opengl_shaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF871B30785D0099FB5A /* glw_opengl_shaders.c */; }; + 6ADCCFDD1B30785D0099FB5A /* glw_playfield.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF891B30785D0099FB5A /* glw_playfield.c */; }; + 6ADCCFDE1B30785D0099FB5A /* glw_primitives.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF8A1B30785D0099FB5A /* glw_primitives.c */; }; + 6ADCCFE11B30785D0099FB5A /* glw_renderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF8E1B30785D0099FB5A /* glw_renderer.c */; }; + 6ADCCFE21B30785D0099FB5A /* glw_resizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF901B30785D0099FB5A /* glw_resizer.c */; }; + 6ADCCFE31B30785D0099FB5A /* glw_rotator.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF911B30785D0099FB5A /* glw_rotator.c */; }; + 6ADCCFE51B30785D0099FB5A /* glw_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF941B30785D0099FB5A /* glw_settings.c */; }; + 6ADCCFE61B30785D0099FB5A /* glw_slider.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF961B30785D0099FB5A /* glw_slider.c */; }; + 6ADCCFE71B30785D0099FB5A /* glw_slideshow.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF971B30785D0099FB5A /* glw_slideshow.c */; }; + 6ADCCFE81B30785D0099FB5A /* glw_style.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF981B30785D0099FB5A /* glw_style.c */; }; + 6ADCCFE91B30785D0099FB5A /* glw_text_bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9A1B30785D0099FB5A /* glw_text_bitmap.c */; }; + 6ADCCFEB1B30785D0099FB5A /* glw_texture_loader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9D1B30785D0099FB5A /* glw_texture_loader.c */; }; + 6ADCCFEC1B30785D0099FB5A /* glw_texture_opengl.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCF9E1B30785D0099FB5A /* glw_texture_opengl.c */; }; + 6ADCCFEE1B30785D0099FB5A /* glw_throbber.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA11B30785D0099FB5A /* glw_throbber.c */; }; + 6ADCCFEF1B30785D0099FB5A /* glw_transitions.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA21B30785D0099FB5A /* glw_transitions.c */; }; + 6ADCCFF01B30785D0099FB5A /* glw_underscan.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA41B30785D0099FB5A /* glw_underscan.c */; }; + 6ADCCFF21B30785D0099FB5A /* glw_video_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA61B30785D0099FB5A /* glw_video_common.c */; }; + 6ADCCFF41B30785D0099FB5A /* glw_video_overlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFA91B30785D0099FB5A /* glw_video_overlay.c */; }; + 6ADCCFFB1B30785D0099FB5A /* glw_video_yuvp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB11B30785D0099FB5A /* glw_video_yuvp.c */; }; + 6ADCCFFC1B30785D0099FB5A /* glw_view_attrib.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB21B30785D0099FB5A /* glw_view_attrib.c */; }; + 6ADCCFFD1B30785D0099FB5A /* glw_view_eval.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB31B30785D0099FB5A /* glw_view_eval.c */; }; + 6ADCCFFE1B30785D0099FB5A /* glw_view_lexer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB41B30785D0099FB5A /* glw_view_lexer.c */; }; + 6ADCCFFF1B30785D0099FB5A /* glw_view_loader.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB51B30785D0099FB5A /* glw_view_loader.c */; }; + 6ADCD0001B30785D0099FB5A /* glw_view_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB61B30785D0099FB5A /* glw_view_parser.c */; }; + 6ADCD0011B30785D0099FB5A /* glw_view_preproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB71B30785D0099FB5A /* glw_view_preproc.c */; }; + 6ADCD0021B30785D0099FB5A /* glw_view_support.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB81B30785D0099FB5A /* glw_view_support.c */; }; + 6ADCD0031B30785D0099FB5A /* glw_view.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFB91B30785D0099FB5A /* glw_view.c */; }; + 6ADCD0061B30785D0099FB5A /* glw.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ADCCFBD1B30785D0099FB5A /* glw.c */; }; + 6ADCD34A1B316BEE0099FB5A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6AC2B8841B1F23D800969FB4 /* Images.xcassets */; }; + 6AEAE74C1B9A374800235754 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AEAE74B1B9A374800235754 /* main.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6A08CDDA1C06FD8300387E87 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6382B1B10FB0FC5100ECAC02; + remoteInfo = Freetype2; + }; + 6A35C2AC1C1042ED00D8EA86 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6AC2B8681B1F23D700969FB4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6A6AD6D31C0E2EDC00931F45; + remoteInfo = GitRevision; + }; + 6A35C2B31C1045E700D8EA86 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6AC2B8681B1F23D700969FB4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6A35C2AE1C1045CD00D8EA86; + remoteInfo = "libav-tvOS"; + }; + 6A697AC71C0B10A100156A56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6AC2B8681B1F23D700969FB4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6A697AC21C0B103700156A56; + remoteInfo = libav; + }; + 6A6AD6D81C0E32A300931F45 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6AC2B8681B1F23D700969FB4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6A6AD6D31C0E2EDC00931F45; + remoteInfo = GitRevision; + }; + 6AD574EA1C15FD8100FCA17D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6AD574E71C15FD6600FCA17D; + remoteInfo = "Freetype2-tvOS"; + }; + 6AD574ED1C15FD9400FCA17D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6AD573F81C15FD6600FCA17D; + remoteInfo = "Freetype2-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 6A08CE901C072F3900387E87 /* Embed Frameworks (7 items) */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + ); + name = "Embed Frameworks (7 items)"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 6A04C0361C2156080043FA93 /* fa_filepicker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_filepicker.c; sourceTree = ""; }; + 6A04C0371C2156080043FA93 /* fa_filepicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_filepicker.h; sourceTree = ""; }; + 6A04C0441C21A2C80043FA93 /* vtb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vtb.c; sourceTree = ""; }; + 6A04C0471C21A2F90043FA93 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 6A04C04F1C21F7B10043FA93 /* glw_video_ios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_video_ios.c; path = ../src/ui/glw/glw_video_ios.c; sourceTree = ""; }; + 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = freetype2.xcodeproj; path = "freetype2-ios/freetype2.xcodeproj"; sourceTree = ""; }; + 6A08CDEB1C07000F00387E87 /* glw_scroll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_scroll.c; path = ../src/ui/glw/glw_scroll.c; sourceTree = ""; }; + 6A08CDEC1C07000F00387E87 /* glw_scroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_scroll.h; path = ../src/ui/glw/glw_scroll.h; sourceTree = ""; }; + 6A08CDEF1C07006500387E87 /* nanosvg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nanosvg.c; sourceTree = ""; }; + 6A2DC23A1CAD1EC7005CD9F3 /* glw_scope.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_scope.c; path = ../src/ui/glw/glw_scope.c; sourceTree = ""; }; + 6A35C2CC1C104A9100D8EA86 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 6A35C2CE1C104A9900D8EA86 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; }; + 6A6AD6CB1C0E293000931F45 /* upgrade.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = upgrade.c; path = ../src/upgrade.c; sourceTree = ""; }; + 6A6AD6CC1C0E293000931F45 /* upgrade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = upgrade.h; path = ../src/upgrade.h; sourceTree = ""; }; + 6A6AD6CD1C0E293000931F45 /* usage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usage.c; path = ../src/usage.c; sourceTree = ""; }; + 6A6AD6D11C0E2EC700931F45 /* glw_popup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_popup.c; path = ../src/ui/glw/glw_popup.c; sourceTree = ""; }; + 6A7808BF1C45B139009FADCB /* longpress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = longpress.c; path = ../src/ui/longpress.c; sourceTree = ""; }; + 6A8104381CBCBCD300E29BE8 /* persistent_nsuserdefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = persistent_nsuserdefaults.m; sourceTree = ""; }; + 6A83852F1B427E0C002816FB /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; name = res; path = ../res; sourceTree = ""; }; + 6A8385311B4280C2002816FB /* prop_proxy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_proxy.c; sourceTree = ""; }; + 6A8385321B4280C2002816FB /* prop_proxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_proxy.h; sourceTree = ""; }; + 6A8385341B4280E6002816FB /* websocket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = websocket.c; sourceTree = ""; }; + 6A8385351B4280E6002816FB /* websocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = websocket.h; sourceTree = ""; }; + 6A8385371B42811B002816FB /* glwskins */ = {isa = PBXFileReference; lastKnownFileType = folder; name = glwskins; path = ../glwskins; sourceTree = ""; }; + 6A8385381B42811B002816FB /* lang */ = {isa = PBXFileReference; lastKnownFileType = folder; name = lang; path = ../lang; sourceTree = ""; }; + 6AB9264D1C0743CD002D59A6 /* mac_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mac_audio.c; sourceTree = ""; }; + 6AC2B8701B1F23D700969FB4 /* Movian-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Movian-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6AC2B8741B1F23D700969FB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6AC2B8751B1F23D700969FB4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 6AC2B8771B1F23D700969FB4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 6AC2B8781B1F23D700969FB4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 6AC2B87E1B1F23D800969FB4 /* GameViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameViewController.h; sourceTree = ""; }; + 6AC2B87F1B1F23D800969FB4 /* GameViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GameViewController.m; sourceTree = ""; }; + 6AC2B8821B1F23D800969FB4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 6AC2B8841B1F23D800969FB4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 6AC2B8871B1F23D800969FB4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 6AC938601C0E443E00D54769 /* Movian-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Movian-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6AC938631C0E443E00D54769 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 6AC9386E1C0E443E00D54769 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 6AC938701C0E443E00D54769 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 6AC938721C0E443E00D54769 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6ADBF62D1B9A443D00A21726 /* screenshot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = screenshot.c; sourceTree = ""; }; + 6ADBF62E1B9A443D00A21726 /* screenshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; + 6ADCCC6C1B30007A0099FB5A /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = main.h; path = ../src/main.h; sourceTree = ""; }; + 6ADCCC6E1B3000CC0099FB5A /* average.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = average.c; sourceTree = ""; }; + 6ADCCC6F1B3000CC0099FB5A /* average.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = average.h; sourceTree = ""; }; + 6ADCCC701B3000CC0099FB5A /* avgtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avgtime.h; sourceTree = ""; }; + 6ADCCC711B3000CC0099FB5A /* big5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = big5.c; sourceTree = ""; }; + 6ADCCC721B3000CC0099FB5A /* big5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = big5.h; sourceTree = ""; }; + 6ADCCC731B3000CC0099FB5A /* big5_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = big5_table.h; sourceTree = ""; }; + 6ADCCC741B3000CC0099FB5A /* bitstream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitstream.c; sourceTree = ""; }; + 6ADCCC751B3000CC0099FB5A /* bitstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + 6ADCCC761B3000CC0099FB5A /* buf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = buf.c; sourceTree = ""; }; + 6ADCCC771B3000CC0099FB5A /* buf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buf.h; sourceTree = ""; }; + 6ADCCC781B3000CC0099FB5A /* bytestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bytestream.h; sourceTree = ""; }; + 6ADCCC791B3000CC0099FB5A /* callout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = callout.c; sourceTree = ""; }; + 6ADCCC7A1B3000CC0099FB5A /* callout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = callout.h; sourceTree = ""; }; + 6ADCCC7B1B3000CC0099FB5A /* cancellable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cancellable.c; sourceTree = ""; }; + 6ADCCC7C1B3000CC0099FB5A /* cancellable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cancellable.h; sourceTree = ""; }; + 6ADCCC7D1B3000CC0099FB5A /* charset_detector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = charset_detector.c; sourceTree = ""; }; + 6ADCCC7E1B3000CC0099FB5A /* charset_detector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = charset_detector.h; sourceTree = ""; }; + 6ADCCC7F1B3000CC0099FB5A /* codepages.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = codepages.c; sourceTree = ""; }; + 6ADCCC801B3000CC0099FB5A /* dbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dbl.c; sourceTree = ""; }; + 6ADCCC811B3000CC0099FB5A /* dbl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dbl.h; sourceTree = ""; }; + 6ADCCC821B3000CC0099FB5A /* endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endian.h; sourceTree = ""; }; + 6ADCCC831B3000CC0099FB5A /* extents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = extents.c; sourceTree = ""; }; + 6ADCCC841B3000CC0099FB5A /* extents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extents.h; sourceTree = ""; }; + 6ADCCC851B3000CC0099FB5A /* gz.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gz.c; sourceTree = ""; }; + 6ADCCC861B3000CC0099FB5A /* gz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gz.h; sourceTree = ""; }; + 6ADCCC871B3000CC0099FB5A /* isolang.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = isolang.c; sourceTree = ""; }; + 6ADCCC881B3000CC0099FB5A /* isolang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = isolang.h; sourceTree = ""; }; + 6ADCCC891B3000CC0099FB5A /* json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = json.c; sourceTree = ""; }; + 6ADCCC8A1B3000CC0099FB5A /* json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = json.h; sourceTree = ""; }; + 6ADCCC8B1B3000CC0099FB5A /* kalman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kalman.h; sourceTree = ""; }; + 6ADCCC8C1B3000CC0099FB5A /* layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layout.h; sourceTree = ""; }; + 6ADCCC8D1B3000CC0099FB5A /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + 6ADCCC8E1B3000CC0099FB5A /* minmax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minmax.h; sourceTree = ""; }; + 6ADCCC8F1B3000CC0099FB5A /* perftimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = perftimer.h; sourceTree = ""; }; + 6ADCCC901B3000CC0099FB5A /* pool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pool.c; sourceTree = ""; }; + 6ADCCC911B3000CC0099FB5A /* pool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool.h; sourceTree = ""; }; + 6ADCCC921B3000CC0099FB5A /* ptrvec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ptrvec.c; sourceTree = ""; }; + 6ADCCC931B3000CC0099FB5A /* ptrvec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ptrvec.h; sourceTree = ""; }; + 6ADCCC941B3000CC0099FB5A /* queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = queue.h; sourceTree = ""; }; + 6ADCCC951B3000CC0099FB5A /* redblack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = redblack.h; sourceTree = ""; }; + 6ADCCC961B3000CC0099FB5A /* regex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regex.h; sourceTree = ""; }; + 6ADCCC971B3000CC0099FB5A /* rstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rstr.c; sourceTree = ""; }; + 6ADCCC981B3000CC0099FB5A /* rstr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rstr.h; sourceTree = ""; }; + 6ADCCC991B3000CC0099FB5A /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = ""; }; + 6ADCCC9A1B3000CC0099FB5A /* str.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = str.c; sourceTree = ""; }; + 6ADCCC9B1B3000CC0099FB5A /* str.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = str.h; sourceTree = ""; }; + 6ADCCC9C1B3000CC0099FB5A /* strtab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strtab.h; sourceTree = ""; }; + 6ADCCC9D1B3000CC0099FB5A /* time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = time.c; sourceTree = ""; }; + 6ADCCC9E1B3000CC0099FB5A /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = ""; }; + 6ADCCC9F1B3000CC0099FB5A /* unicode_casefolding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unicode_casefolding.h; sourceTree = ""; }; + 6ADCCCA01B3000CC0099FB5A /* unicode_composition.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unicode_composition.c; sourceTree = ""; }; + 6ADCCCA11B3000CC0099FB5A /* unicode_composition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unicode_composition.h; sourceTree = ""; }; + 6ADCCCB51B3001240099FB5A /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = SOURCE_ROOT; }; + 6ADCCCB61B3003350099FB5A /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = compiler.h; path = ../src/compiler.h; sourceTree = ""; }; + 6ADCCCB81B3003870099FB5A /* atomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = atomic.h; path = ../src/arch/atomic.h; sourceTree = ""; }; + 6ADCCCCA1B3011790099FB5A /* posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = posix.c; sourceTree = ""; }; + 6ADCCCCB1B3011790099FB5A /* posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = posix.h; sourceTree = ""; }; + 6ADCCCCC1B3011790099FB5A /* posix_threads.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = posix_threads.c; sourceTree = ""; }; + 6ADCCCCD1B3011790099FB5A /* posix_threads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = posix_threads.h; sourceTree = ""; }; + 6ADCCCD11B3011CF0099FB5A /* prop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop.h; sourceTree = ""; }; + 6ADCCCD21B3011CF0099FB5A /* prop_concat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_concat.c; sourceTree = ""; }; + 6ADCCCD31B3011CF0099FB5A /* prop_concat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_concat.h; sourceTree = ""; }; + 6ADCCCD41B3011CF0099FB5A /* prop_core.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_core.c; sourceTree = ""; }; + 6ADCCCD71B3011CF0099FB5A /* prop_grouper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_grouper.c; sourceTree = ""; }; + 6ADCCCD81B3011CF0099FB5A /* prop_grouper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_grouper.h; sourceTree = ""; }; + 6ADCCCDB1B3011CF0099FB5A /* prop_http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_http.c; sourceTree = ""; }; + 6ADCCCDC1B3011CF0099FB5A /* prop_i.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_i.h; sourceTree = ""; }; + 6ADCCCDF1B3011CF0099FB5A /* prop_linkselected.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_linkselected.c; sourceTree = ""; }; + 6ADCCCE01B3011CF0099FB5A /* prop_linkselected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_linkselected.h; sourceTree = ""; }; + 6ADCCCE11B3011CF0099FB5A /* prop_nodefilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_nodefilter.c; sourceTree = ""; }; + 6ADCCCE21B3011CF0099FB5A /* prop_nodefilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_nodefilter.h; sourceTree = ""; }; + 6ADCCCE31B3011CF0099FB5A /* prop_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_posix.c; sourceTree = ""; }; + 6ADCCCE41B3011CF0099FB5A /* prop_reorder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_reorder.c; sourceTree = ""; }; + 6ADCCCE51B3011CF0099FB5A /* prop_reorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_reorder.h; sourceTree = ""; }; + 6ADCCCE61B3011CF0099FB5A /* prop_tags.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_tags.c; sourceTree = ""; }; + 6ADCCCE71B3011CF0099FB5A /* prop_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_test.c; sourceTree = ""; }; + 6ADCCCE81B3011CF0099FB5A /* prop_vector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_vector.c; sourceTree = ""; }; + 6ADCCCE91B3011CF0099FB5A /* prop_window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prop_window.c; sourceTree = ""; }; + 6ADCCCEA1B3011CF0099FB5A /* prop_window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prop_window.h; sourceTree = ""; }; + 6ADCCCFB1B3012F60099FB5A /* htsbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsbuf.c; sourceTree = ""; }; + 6ADCCCFC1B3012F60099FB5A /* htsbuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsbuf.h; sourceTree = ""; }; + 6ADCCCFD1B3012F60099FB5A /* htsmsg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsmsg.c; sourceTree = ""; }; + 6ADCCCFE1B3012F60099FB5A /* htsmsg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsmsg.h; sourceTree = ""; }; + 6ADCCCFF1B3012F60099FB5A /* htsmsg_binary.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsmsg_binary.c; sourceTree = ""; }; + 6ADCCD001B3012F60099FB5A /* htsmsg_binary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsmsg_binary.h; sourceTree = ""; }; + 6ADCCD011B3012F60099FB5A /* htsmsg_json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsmsg_json.c; sourceTree = ""; }; + 6ADCCD021B3012F60099FB5A /* htsmsg_json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsmsg_json.h; sourceTree = ""; }; + 6ADCCD031B3012F60099FB5A /* htsmsg_store.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsmsg_store.c; sourceTree = ""; }; + 6ADCCD041B3012F60099FB5A /* htsmsg_store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsmsg_store.h; sourceTree = ""; }; + 6ADCCD071B3012F60099FB5A /* htsmsg_xml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsmsg_xml.c; sourceTree = ""; }; + 6ADCCD081B3012F60099FB5A /* htsmsg_xml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = htsmsg_xml.h; sourceTree = ""; }; + 6ADCCD111B30135B0099FB5A /* blobcache_file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = blobcache_file.c; path = ../src/blobcache_file.c; sourceTree = ""; }; + 6ADCCD121B30135B0099FB5A /* blobcache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blobcache.h; path = ../src/blobcache.h; sourceTree = ""; }; + 6ADCCD131B30135B0099FB5A /* event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = event.c; path = ../src/event.c; sourceTree = ""; }; + 6ADCCD141B30135B0099FB5A /* event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = event.h; path = ../src/event.h; sourceTree = ""; }; + 6ADCCD151B30135B0099FB5A /* i18n.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = i18n.c; path = ../src/i18n.c; sourceTree = ""; }; + 6ADCCD161B30135B0099FB5A /* i18n.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = i18n.h; path = ../src/i18n.h; sourceTree = ""; }; + 6ADCCD191B30135B0099FB5A /* keyring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keyring.c; path = ../src/keyring.c; sourceTree = ""; }; + 6ADCCD1A1B30135B0099FB5A /* keyring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = keyring.h; path = ../src/keyring.h; sourceTree = ""; }; + 6ADCCD1B1B30135B0099FB5A /* libav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = libav.c; path = ../src/libav.c; sourceTree = ""; }; + 6ADCCD1C1B30135B0099FB5A /* libav.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libav.h; path = ../src/libav.h; sourceTree = ""; }; + 6ADCCD1D1B30135B0099FB5A /* navigator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = navigator.c; path = ../src/navigator.c; sourceTree = ""; }; + 6ADCCD1E1B30135B0099FB5A /* navigator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = navigator.h; path = ../src/navigator.h; sourceTree = ""; }; + 6ADCCD1F1B30135B0099FB5A /* notifications.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = notifications.c; path = ../src/notifications.c; sourceTree = ""; }; + 6ADCCD201B30135B0099FB5A /* notifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = notifications.h; path = ../src/notifications.h; sourceTree = ""; }; + 6ADCCD211B30135B0099FB5A /* playqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = playqueue.c; path = ../src/playqueue.c; sourceTree = ""; }; + 6ADCCD221B30135B0099FB5A /* playqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = playqueue.h; path = ../src/playqueue.h; sourceTree = ""; }; + 6ADCCD251B30135B0099FB5A /* runcontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = runcontrol.c; path = ../src/runcontrol.c; sourceTree = ""; }; + 6ADCCD261B30135B0099FB5A /* runcontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = runcontrol.h; path = ../src/runcontrol.h; sourceTree = ""; }; + 6ADCCD271B30135B0099FB5A /* service.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = service.c; path = ../src/service.c; sourceTree = ""; }; + 6ADCCD281B30135B0099FB5A /* service.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = service.h; path = ../src/service.h; sourceTree = ""; }; + 6ADCCD291B30135B0099FB5A /* settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = settings.c; path = ../src/settings.c; sourceTree = ""; }; + 6ADCCD2A1B30135B0099FB5A /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings.h; path = ../src/settings.h; sourceTree = ""; }; + 6ADCCD2C1B30135B0099FB5A /* task.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = task.c; path = ../src/task.c; sourceTree = ""; }; + 6ADCCD2D1B30135B0099FB5A /* task.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = task.h; path = ../src/task.h; sourceTree = ""; }; + 6ADCCD2E1B30135B0099FB5A /* trace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = trace.c; path = ../src/trace.c; sourceTree = ""; }; + 6ADCCD301B30135B0099FB5A /* usage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usage.h; path = ../src/usage.h; sourceTree = ""; }; + 6ADCCD441B3013E10099FB5A /* duktape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = duktape.c; sourceTree = ""; }; + 6ADCCD451B3013E10099FB5A /* duktape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = duktape.h; sourceTree = ""; }; + 6ADCCD481B30154E0099FB5A /* ecmascript.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ecmascript.c; sourceTree = ""; }; + 6ADCCD491B30154E0099FB5A /* ecmascript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecmascript.h; sourceTree = ""; }; + 6ADCCD4A1B30154E0099FB5A /* es_console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_console.c; sourceTree = ""; }; + 6ADCCD4B1B30154E0099FB5A /* es_crypto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_crypto.c; sourceTree = ""; }; + 6ADCCD4C1B30154E0099FB5A /* es_fs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_fs.c; sourceTree = ""; }; + 6ADCCD4D1B30154E0099FB5A /* es_gumbo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_gumbo.c; sourceTree = ""; }; + 6ADCCD4E1B30154E0099FB5A /* es_hook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_hook.c; sourceTree = ""; }; + 6ADCCD4F1B30154E0099FB5A /* es_htsmsg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_htsmsg.c; sourceTree = ""; }; + 6ADCCD501B30154E0099FB5A /* es_io.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_io.c; sourceTree = ""; }; + 6ADCCD511B30154E0099FB5A /* es_kvstore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_kvstore.c; sourceTree = ""; }; + 6ADCCD521B30154E0099FB5A /* es_metadata.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_metadata.c; sourceTree = ""; }; + 6ADCCD531B30154E0099FB5A /* es_misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_misc.c; sourceTree = ""; }; + 6ADCCD541B30154E0099FB5A /* es_native_obj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_native_obj.c; sourceTree = ""; }; + 6ADCCD551B30154E0099FB5A /* es_prop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_prop.c; sourceTree = ""; }; + 6ADCCD561B30154E0099FB5A /* es_root.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_root.c; sourceTree = ""; }; + 6ADCCD571B30154E0099FB5A /* es_route.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_route.c; sourceTree = ""; }; + 6ADCCD581B30154E0099FB5A /* es_searcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_searcher.c; sourceTree = ""; }; + 6ADCCD591B30154E0099FB5A /* es_service.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_service.c; sourceTree = ""; }; + 6ADCCD5A1B30154E0099FB5A /* es_sqlite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_sqlite.c; sourceTree = ""; }; + 6ADCCD5B1B30154E0099FB5A /* es_stats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_stats.c; sourceTree = ""; }; + 6ADCCD5C1B30154E0099FB5A /* es_string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_string.c; sourceTree = ""; }; + 6ADCCD5D1B30154E0099FB5A /* es_subtitles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_subtitles.c; sourceTree = ""; }; + 6ADCCD5E1B30154E0099FB5A /* es_timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = es_timer.c; sourceTree = ""; }; + 6ADCCD7E1B3015A80099FB5A /* trex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trex.c; sourceTree = ""; }; + 6ADCCD7F1B3015A80099FB5A /* trex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trex.h; sourceTree = ""; }; + 6ADCCD821B3015C90099FB5A /* media.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media.c; sourceTree = ""; }; + 6ADCCD831B3015C90099FB5A /* media.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media.h; sourceTree = ""; }; + 6ADCCD841B3015C90099FB5A /* media_buf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_buf.c; sourceTree = ""; }; + 6ADCCD851B3015C90099FB5A /* media_buf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_buf.h; sourceTree = ""; }; + 6ADCCD861B3015C90099FB5A /* media_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_codec.c; sourceTree = ""; }; + 6ADCCD871B3015C90099FB5A /* media_codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_codec.h; sourceTree = ""; }; + 6ADCCD881B3015C90099FB5A /* media_event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_event.c; sourceTree = ""; }; + 6ADCCD891B3015C90099FB5A /* media_event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_event.h; sourceTree = ""; }; + 6ADCCD8A1B3015C90099FB5A /* media_queue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_queue.c; sourceTree = ""; }; + 6ADCCD8B1B3015C90099FB5A /* media_queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_queue.h; sourceTree = ""; }; + 6ADCCD8C1B3015C90099FB5A /* media_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_settings.c; sourceTree = ""; }; + 6ADCCD8D1B3015C90099FB5A /* media_settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_settings.h; sourceTree = ""; }; + 6ADCCD8E1B3015C90099FB5A /* media_track.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = media_track.c; sourceTree = ""; }; + 6ADCCD8F1B3015C90099FB5A /* media_track.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = media_track.h; sourceTree = ""; }; + 6ADCCD981B3016110099FB5A /* attribute.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = attribute.c; sourceTree = ""; }; + 6ADCCD991B3016110099FB5A /* attribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attribute.h; sourceTree = ""; }; + 6ADCCD9A1B3016110099FB5A /* char_ref.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = char_ref.c; sourceTree = ""; }; + 6ADCCD9B1B3016110099FB5A /* char_ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = char_ref.h; sourceTree = ""; }; + 6ADCCD9C1B3016110099FB5A /* char_ref.rl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = char_ref.rl; sourceTree = ""; }; + 6ADCCD9D1B3016110099FB5A /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + 6ADCCD9E1B3016110099FB5A /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + 6ADCCD9F1B3016110099FB5A /* gumbo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gumbo.h; sourceTree = ""; }; + 6ADCCDA01B3016110099FB5A /* insertion_mode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = insertion_mode.h; sourceTree = ""; }; + 6ADCCDA11B3016110099FB5A /* parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parser.c; sourceTree = ""; }; + 6ADCCDA21B3016110099FB5A /* parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = ""; }; + 6ADCCDA31B3016110099FB5A /* string_buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = string_buffer.c; sourceTree = ""; }; + 6ADCCDA41B3016110099FB5A /* string_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_buffer.h; sourceTree = ""; }; + 6ADCCDA51B3016110099FB5A /* string_piece.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = string_piece.c; sourceTree = ""; }; + 6ADCCDA61B3016110099FB5A /* string_piece.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_piece.h; sourceTree = ""; }; + 6ADCCDA71B3016110099FB5A /* tag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tag.c; sourceTree = ""; }; + 6ADCCDA81B3016110099FB5A /* tag.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tag.in; sourceTree = ""; }; + 6ADCCDA91B3016110099FB5A /* tag_enum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag_enum.h; sourceTree = ""; }; + 6ADCCDAA1B3016110099FB5A /* tag_gperf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag_gperf.h; sourceTree = ""; }; + 6ADCCDAB1B3016110099FB5A /* tag_sizes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag_sizes.h; sourceTree = ""; }; + 6ADCCDAC1B3016110099FB5A /* tag_strings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag_strings.h; sourceTree = ""; }; + 6ADCCDAD1B3016110099FB5A /* token_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = token_type.h; sourceTree = ""; }; + 6ADCCDAE1B3016110099FB5A /* tokenizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tokenizer.c; sourceTree = ""; }; + 6ADCCDAF1B3016110099FB5A /* tokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tokenizer.h; sourceTree = ""; }; + 6ADCCDB01B3016110099FB5A /* tokenizer_states.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tokenizer_states.h; sourceTree = ""; }; + 6ADCCDB11B3016110099FB5A /* utf8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = utf8.c; sourceTree = ""; }; + 6ADCCDB21B3016110099FB5A /* utf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = ""; }; + 6ADCCDB31B3016110099FB5A /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = util.c; sourceTree = ""; }; + 6ADCCDB41B3016110099FB5A /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; + 6ADCCDB51B3016110099FB5A /* vector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vector.c; sourceTree = ""; }; + 6ADCCDB61B3016110099FB5A /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + 6ADCCDC51B30165D0099FB5A /* fa_aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_aes.c; sourceTree = ""; }; + 6ADCCDC61B30165D0099FB5A /* fa_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_audio.c; sourceTree = ""; }; + 6ADCCDC71B30165D0099FB5A /* fa_audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_audio.h; sourceTree = ""; }; + 6ADCCDC81B30165D0099FB5A /* fa_backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_backend.c; sourceTree = ""; }; + 6ADCCDC91B30165D0099FB5A /* fa_buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_buffer.c; sourceTree = ""; }; + 6ADCCDCA1B30165D0099FB5A /* fa_bundle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_bundle.c; sourceTree = ""; }; + 6ADCCDCB1B30165D0099FB5A /* fa_bwlimit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_bwlimit.c; sourceTree = ""; }; + 6ADCCDCC1B30165D0099FB5A /* fa_cmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_cmp.c; sourceTree = ""; }; + 6ADCCDCD1B30165D0099FB5A /* fa_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_data.c; sourceTree = ""; }; + 6ADCCDCE1B30165D0099FB5A /* fa_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_defs.h; sourceTree = ""; }; + 6ADCCDCF1B30165D0099FB5A /* fa_fs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_fs.c; sourceTree = ""; }; + 6ADCCDD01B30165D0099FB5A /* fa_ftp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_ftp.c; sourceTree = ""; }; + 6ADCCDD11B30165D0099FB5A /* fa_funopen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_funopen.c; sourceTree = ""; }; + 6ADCCDD31B30165D0099FB5A /* fa_http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_http.c; sourceTree = ""; }; + 6ADCCDD41B30165D0099FB5A /* fa_imageloader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_imageloader.c; sourceTree = ""; }; + 6ADCCDD51B30165D0099FB5A /* fa_imageloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_imageloader.h; sourceTree = ""; }; + 6ADCCDD61B30165D0099FB5A /* fa_indexer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_indexer.c; sourceTree = ""; }; + 6ADCCDD71B30165D0099FB5A /* fa_indexer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_indexer.h; sourceTree = ""; }; + 6ADCCDD81B30165D0099FB5A /* fa_libav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_libav.c; sourceTree = ""; }; + 6ADCCDD91B30165D0099FB5A /* fa_libav.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_libav.h; sourceTree = ""; }; + 6ADCCDDD1B30165D0099FB5A /* fa_probe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_probe.c; sourceTree = ""; }; + 6ADCCDDE1B30165D0099FB5A /* fa_probe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_probe.h; sourceTree = ""; }; + 6ADCCDDF1B30165D0099FB5A /* fa_proto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_proto.h; sourceTree = ""; }; + 6ADCCDE01B30165D0099FB5A /* fa_rar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_rar.c; sourceTree = ""; }; + 6ADCCDE11B30165D0099FB5A /* fa_scanner.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_scanner.c; sourceTree = ""; }; + 6ADCCDE21B30165D0099FB5A /* fa_search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_search.h; sourceTree = ""; }; + 6ADCCDE41B30165D0099FB5A /* fa_slice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_slice.c; sourceTree = ""; }; + 6ADCCDE61B30165D0099FB5A /* fa_vfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_vfs.c; sourceTree = ""; }; + 6ADCCDE71B30165D0099FB5A /* fa_vfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_vfs.h; sourceTree = ""; }; + 6ADCCDE81B30165D0099FB5A /* fa_video.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_video.c; sourceTree = ""; }; + 6ADCCDE91B30165D0099FB5A /* fa_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_video.h; sourceTree = ""; }; + 6ADCCDEB1B30165D0099FB5A /* fa_zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_zip.c; sourceTree = ""; }; + 6ADCCDEC1B30165D0099FB5A /* fa_zlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_zlib.c; sourceTree = ""; }; + 6ADCCDED1B30165E0099FB5A /* fa_zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fa_zlib.h; sourceTree = ""; }; + 6ADCCDEE1B30165E0099FB5A /* fileaccess.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fileaccess.c; sourceTree = ""; }; + 6ADCCDEF1B30165E0099FB5A /* fileaccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileaccess.h; sourceTree = ""; }; + 6ADCCDF01B30165E0099FB5A /* filebundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filebundle.h; sourceTree = ""; }; + 6ADCCDF11B30165E0099FB5A /* ftpparse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ftpparse.c; sourceTree = ""; }; + 6ADCCDF21B30165E0099FB5A /* ftpparse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftpparse.h; sourceTree = ""; }; + 6ADCCDF31B30165E0099FB5A /* http_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http_client.h; sourceTree = ""; }; + 6ADCCDF51B30165E0099FB5A /* fa_nativesmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_nativesmb.c; sourceTree = ""; }; + 6ADCCDF61B30165E0099FB5A /* nbt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nbt.h; sourceTree = ""; }; + 6ADCCDF71B30165E0099FB5A /* nmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nmb.c; sourceTree = ""; }; + 6ADCCDF81B30165E0099FB5A /* nmb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nmb.h; sourceTree = ""; }; + 6ADCCDF91B30165E0099FB5A /* smbv1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smbv1.h; sourceTree = ""; }; + 6ADCCDFA1B30165E0099FB5A /* svfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svfs.h; sourceTree = ""; }; + 6ADCCE341B304C280099FB5A /* asyncio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asyncio.h; sourceTree = ""; }; + 6ADCCE351B304C280099FB5A /* asyncio_http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = asyncio_http.c; sourceTree = ""; }; + 6ADCCE371B304C280099FB5A /* asyncio_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = asyncio_posix.c; sourceTree = ""; }; + 6ADCCE3A1B304C280099FB5A /* ftp_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ftp_server.c; sourceTree = ""; }; + 6ADCCE3B1B304C280099FB5A /* ftp_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftp_server.h; sourceTree = ""; }; + 6ADCCE3C1B304C280099FB5A /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = http.c; sourceTree = ""; }; + 6ADCCE3D1B304C280099FB5A /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; + 6ADCCE3E1B304C280099FB5A /* http_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = http_server.c; sourceTree = ""; }; + 6ADCCE3F1B304C280099FB5A /* http_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http_server.h; sourceTree = ""; }; + 6ADCCE401B304C280099FB5A /* net.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = net.h; sourceTree = ""; }; + 6ADCCE421B304C280099FB5A /* net_apple.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_apple.c; sourceTree = ""; }; + 6ADCCE431B304C280099FB5A /* net_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_common.c; sourceTree = ""; }; + 6ADCCE441B304C280099FB5A /* net_i.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = net_i.h; sourceTree = ""; }; + 6ADCCE451B304C280099FB5A /* net_ifaddr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_ifaddr.c; sourceTree = ""; }; + 6ADCCE4A1B304C280099FB5A /* net_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_posix.c; sourceTree = ""; }; + 6ADCCE4C1B304C280099FB5A /* ssdp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssdp.c; sourceTree = ""; }; + 6ADCCE4D1B304C280099FB5A /* ssdp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssdp.h; sourceTree = ""; }; + 6ADCCE611B304D390099FB5A /* dvdspu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dvdspu.c; sourceTree = ""; }; + 6ADCCE621B304D390099FB5A /* dvdspu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dvdspu.h; sourceTree = ""; }; + 6ADCCE631B304D390099FB5A /* ext_subtitles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ext_subtitles.c; sourceTree = ""; }; + 6ADCCE641B304D390099FB5A /* ext_subtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext_subtitles.h; sourceTree = ""; }; + 6ADCCE651B304D390099FB5A /* sub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sub.h; sourceTree = ""; }; + 6ADCCE661B304D390099FB5A /* sub_ass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sub_ass.c; sourceTree = ""; }; + 6ADCCE671B304D390099FB5A /* subtitles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = subtitles.c; sourceTree = ""; }; + 6ADCCE681B304D390099FB5A /* subtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = subtitles.h; sourceTree = ""; }; + 6ADCCE691B304D390099FB5A /* video_overlay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = video_overlay.c; sourceTree = ""; }; + 6ADCCE6A1B304D390099FB5A /* video_overlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video_overlay.h; sourceTree = ""; }; + 6ADCCE6B1B304D390099FB5A /* vobsub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vobsub.c; sourceTree = ""; }; + 6ADCCE6C1B304D390099FB5A /* vobsub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vobsub.h; sourceTree = ""; }; + 6ADCCE741B304D580099FB5A /* dominantcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dominantcolor.c; sourceTree = ""; }; + 6ADCCE751B304D580099FB5A /* image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = image.c; sourceTree = ""; }; + 6ADCCE761B304D580099FB5A /* image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + 6ADCCE771B304D580099FB5A /* image_decoder_libav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = image_decoder_libav.c; sourceTree = ""; }; + 6ADCCE781B304D580099FB5A /* jpeg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpeg.c; sourceTree = ""; }; + 6ADCCE791B304D580099FB5A /* jpeg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jpeg.h; sourceTree = ""; }; + 6ADCCE7A1B304D580099FB5A /* pixmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixmap.c; sourceTree = ""; }; + 6ADCCE7B1B304D580099FB5A /* pixmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pixmap.h; sourceTree = ""; }; + 6ADCCE7D1B304D580099FB5A /* svg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = svg.c; sourceTree = ""; }; + 6ADCCE7E1B304D580099FB5A /* vector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vector.c; sourceTree = ""; }; + 6ADCCE7F1B304D580099FB5A /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + 6ADCCE891B304DC80099FB5A /* backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = backend.c; sourceTree = ""; }; + 6ADCCE8A1B304DC80099FB5A /* backend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = backend.h; sourceTree = ""; }; + 6ADCCE8B1B304DC80099FB5A /* backend_prop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = backend_prop.c; sourceTree = ""; }; + 6ADCCE8C1B304DC80099FB5A /* backend_prop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = backend_prop.h; sourceTree = ""; }; + 6ADCCE8E1B304DC80099FB5A /* bencode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bencode.c; sourceTree = ""; }; + 6ADCCE8F1B304DC80099FB5A /* bencode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bencode.h; sourceTree = ""; }; + 6ADCCE901B304DC80099FB5A /* bittorrent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bittorrent.h; sourceTree = ""; }; + 6ADCCE911B304DC80099FB5A /* bt_backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bt_backend.c; sourceTree = ""; }; + 6ADCCE921B304DC80099FB5A /* diskio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = diskio.c; sourceTree = ""; }; + 6ADCCE931B304DC80099FB5A /* fa_torrent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fa_torrent.c; sourceTree = ""; }; + 6ADCCE941B304DC80099FB5A /* magnet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = magnet.c; sourceTree = ""; }; + 6ADCCE951B304DC80099FB5A /* peer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = peer.c; sourceTree = ""; }; + 6ADCCE961B304DC80099FB5A /* torrent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = torrent.c; sourceTree = ""; }; + 6ADCCE971B304DC80099FB5A /* torrent_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = torrent_settings.c; sourceTree = ""; }; + 6ADCCE981B304DC80099FB5A /* torrent_stats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = torrent_stats.c; sourceTree = ""; }; + 6ADCCE991B304DC80099FB5A /* tracker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tracker.c; sourceTree = ""; }; + 6ADCCE9A1B304DC80099FB5A /* tracker_http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tracker_http.c; sourceTree = ""; }; + 6ADCCE9B1B304DC80099FB5A /* tracker_udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tracker_udp.c; sourceTree = ""; }; + 6ADCCEA21B304DC80099FB5A /* hls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hls.c; sourceTree = ""; }; + 6ADCCEA31B304DC80099FB5A /* hls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hls.h; sourceTree = ""; }; + 6ADCCEA41B304DC80099FB5A /* hls_ts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hls_ts.c; sourceTree = ""; }; + 6ADCCEA61B304DC80099FB5A /* htsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = htsp.c; sourceTree = ""; }; + 6ADCCEA81B304DC80099FB5A /* icecast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = icecast.c; sourceTree = ""; }; + 6ADCCEAB1B304DC80099FB5A /* search.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = search.c; sourceTree = ""; }; + 6ADCCEAC1B304DC80099FB5A /* search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = search.h; sourceTree = ""; }; + 6ADCCEC81B304DFA0099FB5A /* db_support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = db_support.c; sourceTree = ""; }; + 6ADCCEC91B304DFA0099FB5A /* db_support.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = db_support.h; sourceTree = ""; }; + 6ADCCECA1B304DFA0099FB5A /* kvstore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kvstore.c; sourceTree = ""; }; + 6ADCCECB1B304DFA0099FB5A /* kvstore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kvstore.h; sourceTree = ""; }; + 6ADCCED11B304E360099FB5A /* upnp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp.c; sourceTree = ""; }; + 6ADCCED21B304E360099FB5A /* upnp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upnp.h; sourceTree = ""; }; + 6ADCCED31B304E360099FB5A /* upnp_avtransport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_avtransport.c; sourceTree = ""; }; + 6ADCCED41B304E360099FB5A /* upnp_browse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_browse.c; sourceTree = ""; }; + 6ADCCED51B304E360099FB5A /* upnp_connectionmanager.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_connectionmanager.c; sourceTree = ""; }; + 6ADCCED61B304E360099FB5A /* upnp_control.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_control.c; sourceTree = ""; }; + 6ADCCED71B304E360099FB5A /* upnp_event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_event.c; sourceTree = ""; }; + 6ADCCED81B304E360099FB5A /* upnp_renderingcontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = upnp_renderingcontrol.c; sourceTree = ""; }; + 6ADCCED91B304E360099FB5A /* upnp_scpd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upnp_scpd.h; sourceTree = ""; }; + 6ADCCEE21B304E5C0099FB5A /* browsemdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = browsemdb.c; sourceTree = ""; }; + 6ADCCEE31B304E5C0099FB5A /* decoration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decoration.c; sourceTree = ""; }; + 6ADCCEE41B304E5C0099FB5A /* metadata.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = metadata.c; sourceTree = ""; }; + 6ADCCEE51B304E5C0099FB5A /* metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = metadata.h; sourceTree = ""; }; + 6ADCCEE61B304E5C0099FB5A /* metadata_sources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = metadata_sources.c; sourceTree = ""; }; + 6ADCCEE71B304E5C0099FB5A /* metadata_sources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = metadata_sources.h; sourceTree = ""; }; + 6ADCCEE81B304E5C0099FB5A /* metadata_str.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = metadata_str.c; sourceTree = ""; }; + 6ADCCEE91B304E5C0099FB5A /* metadata_str.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = metadata_str.h; sourceTree = ""; }; + 6ADCCEEA1B304E5C0099FB5A /* metadb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = metadb.c; sourceTree = ""; }; + 6ADCCEEB1B304E5C0099FB5A /* mlp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mlp.c; sourceTree = ""; }; + 6ADCCEEC1B304E5C0099FB5A /* playinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = playinfo.c; sourceTree = ""; }; + 6ADCCEED1B304E5C0099FB5A /* playinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = playinfo.h; sourceTree = ""; }; + 6ADCCEF91B304E800099FB5A /* h264_annexb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264_annexb.c; sourceTree = ""; }; + 6ADCCEFA1B304E800099FB5A /* h264_annexb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264_annexb.h; sourceTree = ""; }; + 6ADCCEFB1B304E800099FB5A /* h264_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264_parser.c; sourceTree = ""; }; + 6ADCCEFC1B304E800099FB5A /* h264_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264_parser.h; sourceTree = ""; }; + 6ADCCF011B304E800099FB5A /* video_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = video_decoder.c; sourceTree = ""; }; + 6ADCCF021B304E800099FB5A /* video_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video_decoder.h; sourceTree = ""; }; + 6ADCCF031B304E800099FB5A /* video_playback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = video_playback.c; sourceTree = ""; }; + 6ADCCF041B304E800099FB5A /* video_playback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video_playback.h; sourceTree = ""; }; + 6ADCCF051B304E800099FB5A /* video_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = video_settings.c; sourceTree = ""; }; + 6ADCCF061B304E800099FB5A /* video_settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video_settings.h; sourceTree = ""; }; + 6ADCCF0F1B304EC60099FB5A /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 6ADCCF131B304EFE0099FB5A /* httpcontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = httpcontrol.c; sourceTree = ""; }; + 6ADCCF141B304EFE0099FB5A /* lastfm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lastfm.c; sourceTree = ""; }; + 6ADCCF151B304EFE0099FB5A /* lastfm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lastfm.h; sourceTree = ""; }; + 6ADCCF161B304EFE0099FB5A /* opensubtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensubtitles.h; sourceTree = ""; }; + 6ADCCF171B304EFE0099FB5A /* soap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = soap.c; sourceTree = ""; }; + 6ADCCF181B304EFE0099FB5A /* soap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = soap.h; sourceTree = ""; }; + 6ADCCF191B304EFE0099FB5A /* stpp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stpp.c; sourceTree = ""; }; + 6ADCCF1A1B304EFE0099FB5A /* tmdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tmdb.c; sourceTree = ""; }; + 6ADCCF1B1B304EFE0099FB5A /* tvdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tvdb.c; sourceTree = ""; }; + 6ADCCF1C1B304EFE0099FB5A /* xmlrpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xmlrpc.c; sourceTree = ""; }; + 6ADCCF1D1B304EFE0099FB5A /* xmlrpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xmlrpc.h; sourceTree = ""; }; + 6ADCCF261B304F410099FB5A /* libbz2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbz2.dylib; path = usr/lib/libbz2.dylib; sourceTree = SDKROOT; }; + 6ADCCF291B30561C0099FB5A /* ios_misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ios_misc.c; sourceTree = ""; }; + 6ADCCF2F1B305BC40099FB5A /* audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audio.c; sourceTree = ""; }; + 6ADCCF301B305BC40099FB5A /* audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + 6ADCCF311B305BC40099FB5A /* audio_ext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_ext.h; sourceTree = ""; }; + 6ADCCF321B305BC40099FB5A /* audio_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audio_test.c; sourceTree = ""; }; + 6ADCCF3F1B3063130099FB5A /* fontstash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fontstash.c; sourceTree = ""; }; + 6ADCCF401B3063130099FB5A /* freetype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = freetype.c; sourceTree = ""; }; + 6ADCCF411B3063130099FB5A /* parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parser.c; sourceTree = ""; }; + 6ADCCF421B3063130099FB5A /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = ""; }; + 6ADCCF471B30639D0099FB5A /* rasterizer_ft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rasterizer_ft.c; sourceTree = ""; }; + 6ADCCF4E1B3065CE0099FB5A /* sqlite3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sqlite3.c; sourceTree = ""; }; + 6ADCCF4F1B3065CE0099FB5A /* sqlite3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sqlite3.h; sourceTree = ""; }; + 6ADCCF5B1B3069F60099FB5A /* sd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sd.c; sourceTree = ""; }; + 6ADCCF5C1B3069F60099FB5A /* sd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sd.h; sourceTree = ""; }; + 6ADCCF601B306BC00099FB5A /* osxapp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = osxapp.c; path = ../../support/dataroot/osxapp.c; sourceTree = ""; }; + 6ADCCF631B30785D0099FB5A /* glw_array.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_array.c; path = ../src/ui/glw/glw_array.c; sourceTree = ""; }; + 6ADCCF641B30785D0099FB5A /* glw_bar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_bar.c; path = ../src/ui/glw/glw_bar.c; sourceTree = ""; }; + 6ADCCF651B30785D0099FB5A /* glw_bloom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_bloom.c; path = ../src/ui/glw/glw_bloom.c; sourceTree = ""; }; + 6ADCCF661B30785D0099FB5A /* glw_clip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_clip.c; path = ../src/ui/glw/glw_clip.c; sourceTree = ""; }; + 6ADCCF671B30785D0099FB5A /* glw_clist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_clist.c; path = ../src/ui/glw/glw_clist.c; sourceTree = ""; }; + 6ADCCF691B30785D0099FB5A /* glw_container.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_container.c; path = ../src/ui/glw/glw_container.c; sourceTree = ""; }; + 6ADCCF6B1B30785D0099FB5A /* glw_cube.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_cube.c; path = ../src/ui/glw/glw_cube.c; sourceTree = ""; }; + 6ADCCF6C1B30785D0099FB5A /* glw_cursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_cursor.c; path = ../src/ui/glw/glw_cursor.c; sourceTree = ""; }; + 6ADCCF6D1B30785D0099FB5A /* glw_cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_cursor.h; path = ../src/ui/glw/glw_cursor.h; sourceTree = ""; }; + 6ADCCF6E1B30785D0099FB5A /* glw_deck.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_deck.c; path = ../src/ui/glw/glw_deck.c; sourceTree = ""; }; + 6ADCCF6F1B30785D0099FB5A /* glw_detachable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_detachable.c; path = ../src/ui/glw/glw_detachable.c; sourceTree = ""; }; + 6ADCCF701B30785D0099FB5A /* glw_displacement.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_displacement.c; path = ../src/ui/glw/glw_displacement.c; sourceTree = ""; }; + 6ADCCF711B30785D0099FB5A /* glw_dummy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_dummy.c; path = ../src/ui/glw/glw_dummy.c; sourceTree = ""; }; + 6ADCCF721B30785D0099FB5A /* glw_event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_event.c; path = ../src/ui/glw/glw_event.c; sourceTree = ""; }; + 6ADCCF731B30785D0099FB5A /* glw_event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_event.h; path = ../src/ui/glw/glw_event.h; sourceTree = ""; }; + 6ADCCF741B30785D0099FB5A /* glw_expander.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_expander.c; path = ../src/ui/glw/glw_expander.c; sourceTree = ""; }; + 6ADCCF751B30785D0099FB5A /* glw_flicker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_flicker.c; path = ../src/ui/glw/glw_flicker.c; sourceTree = ""; }; + 6ADCCF761B30785D0099FB5A /* glw_freefloat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_freefloat.c; path = ../src/ui/glw/glw_freefloat.c; sourceTree = ""; }; + 6ADCCF771B30785D0099FB5A /* glw_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_image.c; path = ../src/ui/glw/glw_image.c; sourceTree = ""; }; + 6ADCCF781B30785D0099FB5A /* glw_keyintercept.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_keyintercept.c; path = ../src/ui/glw/glw_keyintercept.c; sourceTree = ""; }; + 6ADCCF791B30785D0099FB5A /* glw_layer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_layer.c; path = ../src/ui/glw/glw_layer.c; sourceTree = ""; }; + 6ADCCF7A1B30785D0099FB5A /* glw_list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_list.c; path = ../src/ui/glw/glw_list.c; sourceTree = ""; }; + 6ADCCF7F1B30785D0099FB5A /* glw_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_math.c; path = ../src/ui/glw/glw_math.c; sourceTree = ""; }; + 6ADCCF801B30785D0099FB5A /* glw_mirror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_mirror.c; path = ../src/ui/glw/glw_mirror.c; sourceTree = ""; }; + 6ADCCF811B30785D0099FB5A /* glw_mirror.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_mirror.h; path = ../src/ui/glw/glw_mirror.h; sourceTree = ""; }; + 6ADCCF821B30785D0099FB5A /* glw_navigation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_navigation.c; path = ../src/ui/glw/glw_navigation.c; sourceTree = ""; }; + 6ADCCF831B30785D0099FB5A /* glw_navigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_navigation.h; path = ../src/ui/glw/glw_navigation.h; sourceTree = ""; }; + 6ADCCF841B30785D0099FB5A /* glw_opengl_es.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_opengl_es.c; path = ../src/ui/glw/glw_opengl_es.c; sourceTree = ""; }; + 6ADCCF871B30785D0099FB5A /* glw_opengl_shaders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_opengl_shaders.c; path = ../src/ui/glw/glw_opengl_shaders.c; sourceTree = ""; }; + 6ADCCF881B30785D0099FB5A /* glw_opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_opengl.h; path = ../src/ui/glw/glw_opengl.h; sourceTree = ""; }; + 6ADCCF891B30785D0099FB5A /* glw_playfield.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_playfield.c; path = ../src/ui/glw/glw_playfield.c; sourceTree = ""; }; + 6ADCCF8A1B30785D0099FB5A /* glw_primitives.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_primitives.c; path = ../src/ui/glw/glw_primitives.c; sourceTree = ""; }; + 6ADCCF8E1B30785D0099FB5A /* glw_renderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_renderer.c; path = ../src/ui/glw/glw_renderer.c; sourceTree = ""; }; + 6ADCCF8F1B30785D0099FB5A /* glw_renderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_renderer.h; path = ../src/ui/glw/glw_renderer.h; sourceTree = ""; }; + 6ADCCF901B30785D0099FB5A /* glw_resizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_resizer.c; path = ../src/ui/glw/glw_resizer.c; sourceTree = ""; }; + 6ADCCF911B30785D0099FB5A /* glw_rotator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_rotator.c; path = ../src/ui/glw/glw_rotator.c; sourceTree = ""; }; + 6ADCCF941B30785D0099FB5A /* glw_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_settings.c; path = ../src/ui/glw/glw_settings.c; sourceTree = ""; }; + 6ADCCF951B30785D0099FB5A /* glw_settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_settings.h; path = ../src/ui/glw/glw_settings.h; sourceTree = ""; }; + 6ADCCF961B30785D0099FB5A /* glw_slider.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_slider.c; path = ../src/ui/glw/glw_slider.c; sourceTree = ""; }; + 6ADCCF971B30785D0099FB5A /* glw_slideshow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_slideshow.c; path = ../src/ui/glw/glw_slideshow.c; sourceTree = ""; }; + 6ADCCF981B30785D0099FB5A /* glw_style.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_style.c; path = ../src/ui/glw/glw_style.c; sourceTree = ""; }; + 6ADCCF991B30785D0099FB5A /* glw_style.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_style.h; path = ../src/ui/glw/glw_style.h; sourceTree = ""; }; + 6ADCCF9A1B30785D0099FB5A /* glw_text_bitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_text_bitmap.c; path = ../src/ui/glw/glw_text_bitmap.c; sourceTree = ""; }; + 6ADCCF9B1B30785D0099FB5A /* glw_text_bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_text_bitmap.h; path = ../src/ui/glw/glw_text_bitmap.h; sourceTree = ""; }; + 6ADCCF9D1B30785D0099FB5A /* glw_texture_loader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_texture_loader.c; path = ../src/ui/glw/glw_texture_loader.c; sourceTree = ""; }; + 6ADCCF9E1B30785D0099FB5A /* glw_texture_opengl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_texture_opengl.c; path = ../src/ui/glw/glw_texture_opengl.c; sourceTree = ""; }; + 6ADCCFA01B30785D0099FB5A /* glw_texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_texture.h; path = ../src/ui/glw/glw_texture.h; sourceTree = ""; }; + 6ADCCFA11B30785D0099FB5A /* glw_throbber.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_throbber.c; path = ../src/ui/glw/glw_throbber.c; sourceTree = ""; }; + 6ADCCFA21B30785D0099FB5A /* glw_transitions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_transitions.c; path = ../src/ui/glw/glw_transitions.c; sourceTree = ""; }; + 6ADCCFA31B30785D0099FB5A /* glw_transitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_transitions.h; path = ../src/ui/glw/glw_transitions.h; sourceTree = ""; }; + 6ADCCFA41B30785D0099FB5A /* glw_underscan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_underscan.c; path = ../src/ui/glw/glw_underscan.c; sourceTree = ""; }; + 6ADCCFA61B30785D0099FB5A /* glw_video_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_video_common.c; path = ../src/ui/glw/glw_video_common.c; sourceTree = ""; }; + 6ADCCFA71B30785D0099FB5A /* glw_video_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_video_common.h; path = ../src/ui/glw/glw_video_common.h; sourceTree = ""; }; + 6ADCCFA91B30785D0099FB5A /* glw_video_overlay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_video_overlay.c; path = ../src/ui/glw/glw_video_overlay.c; sourceTree = ""; }; + 6ADCCFAA1B30785D0099FB5A /* glw_video_overlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_video_overlay.h; path = ../src/ui/glw/glw_video_overlay.h; sourceTree = ""; }; + 6ADCCFB11B30785D0099FB5A /* glw_video_yuvp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_video_yuvp.c; path = ../src/ui/glw/glw_video_yuvp.c; sourceTree = ""; }; + 6ADCCFB21B30785D0099FB5A /* glw_view_attrib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_attrib.c; path = ../src/ui/glw/glw_view_attrib.c; sourceTree = ""; }; + 6ADCCFB31B30785D0099FB5A /* glw_view_eval.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_eval.c; path = ../src/ui/glw/glw_view_eval.c; sourceTree = ""; }; + 6ADCCFB41B30785D0099FB5A /* glw_view_lexer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_lexer.c; path = ../src/ui/glw/glw_view_lexer.c; sourceTree = ""; }; + 6ADCCFB51B30785D0099FB5A /* glw_view_loader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_loader.c; path = ../src/ui/glw/glw_view_loader.c; sourceTree = ""; }; + 6ADCCFB61B30785D0099FB5A /* glw_view_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_parser.c; path = ../src/ui/glw/glw_view_parser.c; sourceTree = ""; }; + 6ADCCFB71B30785D0099FB5A /* glw_view_preproc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_preproc.c; path = ../src/ui/glw/glw_view_preproc.c; sourceTree = ""; }; + 6ADCCFB81B30785D0099FB5A /* glw_view_support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view_support.c; path = ../src/ui/glw/glw_view_support.c; sourceTree = ""; }; + 6ADCCFB91B30785D0099FB5A /* glw_view.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw_view.c; path = ../src/ui/glw/glw_view.c; sourceTree = ""; }; + 6ADCCFBA1B30785D0099FB5A /* glw_view.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw_view.h; path = ../src/ui/glw/glw_view.h; sourceTree = ""; }; + 6ADCCFBD1B30785D0099FB5A /* glw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glw.c; path = ../src/ui/glw/glw.c; sourceTree = ""; }; + 6ADCCFBE1B30785D0099FB5A /* glw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glw.h; path = ../src/ui/glw/glw.h; sourceTree = ""; }; + 6AEAE74B1B9A374800235754 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = main.c; path = ../src/main.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6AC2B86D1B1F23D700969FB4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A04C0481C21A2F90043FA93 /* VideoToolbox.framework in Frameworks */, + 6A08CDDC1C06FEE000387E87 /* libFreetype2.a in Frameworks */, + 6ADCCF271B304F410099FB5A /* libbz2.dylib in Frameworks */, + 6ADCCF101B304EC60099FB5A /* libz.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6AC9385D1C0E443E00D54769 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6AD574EC1C15FD8100FCA17D /* libFreetype2-tvOS.a in Frameworks */, + 6A35C2CF1C104A9900D8EA86 /* libbz2.tbd in Frameworks */, + 6A35C2CD1C104A9100D8EA86 /* libz.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6A08CDD71C06FD8200387E87 /* Products */ = { + isa = PBXGroup; + children = ( + 6A08CDDB1C06FD8300387E87 /* libFreetype2.a */, + 6AD574EB1C15FD8100FCA17D /* libFreetype2-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 6A7808BC1C45B0F6009FADCB /* ui */ = { + isa = PBXGroup; + children = ( + 6A7808BF1C45B139009FADCB /* longpress.c */, + ); + name = ui; + sourceTree = ""; + }; + 6AC2B8671B1F23D700969FB4 = { + isa = PBXGroup; + children = ( + 6A04C0471C21A2F90043FA93 /* VideoToolbox.framework */, + 6A35C2CE1C104A9900D8EA86 /* libbz2.tbd */, + 6A35C2CC1C104A9100D8EA86 /* libz.tbd */, + 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */, + 6A8385371B42811B002816FB /* glwskins */, + 6A8385381B42811B002816FB /* lang */, + 6A83852F1B427E0C002816FB /* res */, + 6ADCCF261B304F410099FB5A /* libbz2.dylib */, + 6ADCCF0F1B304EC60099FB5A /* libz.dylib */, + 6ADCCD421B3013CF0099FB5A /* ext */, + 6ADCCC0A1B2FFF090099FB5A /* src */, + 6AC2B8721B1F23D700969FB4 /* Movian */, + 6AC938611C0E443E00D54769 /* Movian-tvOS */, + 6AC2B8711B1F23D700969FB4 /* Products */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 8; + }; + 6AC2B8711B1F23D700969FB4 /* Products */ = { + isa = PBXGroup; + children = ( + 6AC2B8701B1F23D700969FB4 /* Movian-iOS.app */, + 6AC938601C0E443E00D54769 /* Movian-tvOS.app */, + ); + name = Products; + sourceTree = ""; + }; + 6AC2B8721B1F23D700969FB4 /* Movian */ = { + isa = PBXGroup; + children = ( + 6ADCCF601B306BC00099FB5A /* osxapp.c */, + 6ADCCF291B30561C0099FB5A /* ios_misc.c */, + 6ADCCCB51B3001240099FB5A /* config.h */, + 6AC2B8771B1F23D700969FB4 /* AppDelegate.h */, + 6AC2B8781B1F23D700969FB4 /* AppDelegate.m */, + 6AC2B87E1B1F23D800969FB4 /* GameViewController.h */, + 6AC2B87F1B1F23D800969FB4 /* GameViewController.m */, + 6AC2B8811B1F23D800969FB4 /* Main.storyboard */, + 6AC2B8841B1F23D800969FB4 /* Images.xcassets */, + 6AC2B8861B1F23D800969FB4 /* LaunchScreen.xib */, + 6AC2B8731B1F23D700969FB4 /* Supporting Files */, + ); + path = Movian; + sourceTree = ""; + }; + 6AC2B8731B1F23D700969FB4 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6AC2B8741B1F23D700969FB4 /* Info.plist */, + 6AC2B8751B1F23D700969FB4 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 6AC938611C0E443E00D54769 /* Movian-tvOS */ = { + isa = PBXGroup; + children = ( + 6AC9386D1C0E443E00D54769 /* Main.storyboard */, + 6AC938701C0E443E00D54769 /* Assets.xcassets */, + 6AC938721C0E443E00D54769 /* Info.plist */, + 6AC938621C0E443E00D54769 /* Supporting Files */, + ); + path = "Movian-tvOS"; + sourceTree = ""; + }; + 6AC938621C0E443E00D54769 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6AC938631C0E443E00D54769 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 6ADCCC0A1B2FFF090099FB5A /* src */ = { + isa = PBXGroup; + children = ( + 6A7808BC1C45B0F6009FADCB /* ui */, + 6ADCCF111B304EFE0099FB5A /* api */, + 6ADCCCB71B30034B0099FB5A /* arch */, + 6ADCCF2B1B305BC40099FB5A /* audio2 */, + 6ADCCE881B304DC80099FB5A /* backend */, + 6ADCCD111B30135B0099FB5A /* blobcache_file.c */, + 6ADCCD121B30135B0099FB5A /* blobcache.h */, + 6ADCCCB61B3003350099FB5A /* compiler.h */, + 6ADCCEC71B304DFA0099FB5A /* db */, + 6ADCCD471B30154E0099FB5A /* ecmascript */, + 6ADCCD131B30135B0099FB5A /* event.c */, + 6ADCCD141B30135B0099FB5A /* event.h */, + 6ADCCDC41B30165D0099FB5A /* fileaccess */, + 6ADCCF621B3078330099FB5A /* glw */, + 6ADCCCFA1B3012F60099FB5A /* htsmsg */, + 6ADCCD151B30135B0099FB5A /* i18n.c */, + 6ADCCD161B30135B0099FB5A /* i18n.h */, + 6ADCCE731B304D580099FB5A /* image */, + 6ADCCD191B30135B0099FB5A /* keyring.c */, + 6ADCCD1A1B30135B0099FB5A /* keyring.h */, + 6ADCCD1B1B30135B0099FB5A /* libav.c */, + 6ADCCD1C1B30135B0099FB5A /* libav.h */, + 6AEAE74B1B9A374800235754 /* main.c */, + 6ADCCC6C1B30007A0099FB5A /* main.h */, + 6ADCCD811B3015C90099FB5A /* media */, + 6ADCCEE11B304E5C0099FB5A /* metadata */, + 6ADCCC6D1B3000CC0099FB5A /* misc */, + 6ADCCD1D1B30135B0099FB5A /* navigator.c */, + 6ADCCD1E1B30135B0099FB5A /* navigator.h */, + 6ADCCE331B304C280099FB5A /* networking */, + 6ADCCD1F1B30135B0099FB5A /* notifications.c */, + 6ADCCD201B30135B0099FB5A /* notifications.h */, + 6ADCCD211B30135B0099FB5A /* playqueue.c */, + 6ADCCD221B30135B0099FB5A /* playqueue.h */, + 6ADCCCD01B3011CF0099FB5A /* prop */, + 6ADCCD251B30135B0099FB5A /* runcontrol.c */, + 6ADCCD261B30135B0099FB5A /* runcontrol.h */, + 6ADCCF561B3069F60099FB5A /* sd */, + 6ADCCD271B30135B0099FB5A /* service.c */, + 6ADCCD281B30135B0099FB5A /* service.h */, + 6ADCCD291B30135B0099FB5A /* settings.c */, + 6ADCCD2A1B30135B0099FB5A /* settings.h */, + 6ADCCE601B304D390099FB5A /* subtitles */, + 6ADCCD2C1B30135B0099FB5A /* task.c */, + 6ADCCD2D1B30135B0099FB5A /* task.h */, + 6ADCCF3D1B3063130099FB5A /* text */, + 6ADCCD2E1B30135B0099FB5A /* trace.c */, + 6A6AD6CB1C0E293000931F45 /* upgrade.c */, + 6A6AD6CC1C0E293000931F45 /* upgrade.h */, + 6ADCCED01B304E360099FB5A /* upnp */, + 6A6AD6CD1C0E293000931F45 /* usage.c */, + 6ADCCD301B30135B0099FB5A /* usage.h */, + 6ADCCEF61B304E800099FB5A /* video */, + ); + name = src; + sourceTree = ""; + }; + 6ADCCC6D1B3000CC0099FB5A /* misc */ = { + isa = PBXGroup; + children = ( + 6ADCCC6E1B3000CC0099FB5A /* average.c */, + 6ADCCC6F1B3000CC0099FB5A /* average.h */, + 6ADCCC701B3000CC0099FB5A /* avgtime.h */, + 6ADCCC711B3000CC0099FB5A /* big5.c */, + 6ADCCC721B3000CC0099FB5A /* big5.h */, + 6ADCCC731B3000CC0099FB5A /* big5_table.h */, + 6ADCCC741B3000CC0099FB5A /* bitstream.c */, + 6ADCCC751B3000CC0099FB5A /* bitstream.h */, + 6ADCCC761B3000CC0099FB5A /* buf.c */, + 6ADCCC771B3000CC0099FB5A /* buf.h */, + 6ADCCC781B3000CC0099FB5A /* bytestream.h */, + 6ADCCC791B3000CC0099FB5A /* callout.c */, + 6ADCCC7A1B3000CC0099FB5A /* callout.h */, + 6ADCCC7B1B3000CC0099FB5A /* cancellable.c */, + 6ADCCC7C1B3000CC0099FB5A /* cancellable.h */, + 6ADCCC7D1B3000CC0099FB5A /* charset_detector.c */, + 6ADCCC7E1B3000CC0099FB5A /* charset_detector.h */, + 6ADCCC7F1B3000CC0099FB5A /* codepages.c */, + 6ADCCC801B3000CC0099FB5A /* dbl.c */, + 6ADCCC811B3000CC0099FB5A /* dbl.h */, + 6ADCCC821B3000CC0099FB5A /* endian.h */, + 6ADCCC831B3000CC0099FB5A /* extents.c */, + 6ADCCC841B3000CC0099FB5A /* extents.h */, + 6ADCCC851B3000CC0099FB5A /* gz.c */, + 6ADCCC861B3000CC0099FB5A /* gz.h */, + 6ADCCC871B3000CC0099FB5A /* isolang.c */, + 6ADCCC881B3000CC0099FB5A /* isolang.h */, + 6ADCCC891B3000CC0099FB5A /* json.c */, + 6ADCCC8A1B3000CC0099FB5A /* json.h */, + 6ADCCC8B1B3000CC0099FB5A /* kalman.h */, + 6ADCCC8C1B3000CC0099FB5A /* layout.h */, + 6ADCCC8D1B3000CC0099FB5A /* md5.h */, + 6ADCCC8E1B3000CC0099FB5A /* minmax.h */, + 6ADCCC8F1B3000CC0099FB5A /* perftimer.h */, + 6ADCCC901B3000CC0099FB5A /* pool.c */, + 6ADCCC911B3000CC0099FB5A /* pool.h */, + 6ADCCC921B3000CC0099FB5A /* ptrvec.c */, + 6ADCCC931B3000CC0099FB5A /* ptrvec.h */, + 6ADCCC941B3000CC0099FB5A /* queue.h */, + 6ADCCC951B3000CC0099FB5A /* redblack.h */, + 6ADCCC961B3000CC0099FB5A /* regex.h */, + 6ADCCC971B3000CC0099FB5A /* rstr.c */, + 6ADCCC981B3000CC0099FB5A /* rstr.h */, + 6ADCCC991B3000CC0099FB5A /* sha.h */, + 6ADCCC9A1B3000CC0099FB5A /* str.c */, + 6ADCCC9B1B3000CC0099FB5A /* str.h */, + 6ADCCC9C1B3000CC0099FB5A /* strtab.h */, + 6ADCCC9D1B3000CC0099FB5A /* time.c */, + 6ADCCC9E1B3000CC0099FB5A /* time.h */, + 6ADCCC9F1B3000CC0099FB5A /* unicode_casefolding.h */, + 6ADCCCA01B3000CC0099FB5A /* unicode_composition.c */, + 6ADCCCA11B3000CC0099FB5A /* unicode_composition.h */, + ); + name = misc; + path = ../src/misc; + sourceTree = ""; + }; + 6ADCCCB71B30034B0099FB5A /* arch */ = { + isa = PBXGroup; + children = ( + 6ADCCCC91B3011790099FB5A /* posix */, + 6ADCCCB81B3003870099FB5A /* atomic.h */, + ); + name = arch; + sourceTree = ""; + }; + 6ADCCCC91B3011790099FB5A /* posix */ = { + isa = PBXGroup; + children = ( + 6ADCCCCA1B3011790099FB5A /* posix.c */, + 6ADCCCCB1B3011790099FB5A /* posix.h */, + 6ADCCCCC1B3011790099FB5A /* posix_threads.c */, + 6ADCCCCD1B3011790099FB5A /* posix_threads.h */, + ); + name = posix; + path = ../src/arch/posix; + sourceTree = ""; + }; + 6ADCCCD01B3011CF0099FB5A /* prop */ = { + isa = PBXGroup; + children = ( + 6A8385311B4280C2002816FB /* prop_proxy.c */, + 6A8385321B4280C2002816FB /* prop_proxy.h */, + 6ADCCCD11B3011CF0099FB5A /* prop.h */, + 6ADCCCD21B3011CF0099FB5A /* prop_concat.c */, + 6ADCCCD31B3011CF0099FB5A /* prop_concat.h */, + 6ADCCCD41B3011CF0099FB5A /* prop_core.c */, + 6ADCCCD71B3011CF0099FB5A /* prop_grouper.c */, + 6ADCCCD81B3011CF0099FB5A /* prop_grouper.h */, + 6ADCCCDB1B3011CF0099FB5A /* prop_http.c */, + 6ADCCCDC1B3011CF0099FB5A /* prop_i.h */, + 6ADCCCDF1B3011CF0099FB5A /* prop_linkselected.c */, + 6ADCCCE01B3011CF0099FB5A /* prop_linkselected.h */, + 6ADCCCE11B3011CF0099FB5A /* prop_nodefilter.c */, + 6ADCCCE21B3011CF0099FB5A /* prop_nodefilter.h */, + 6ADCCCE31B3011CF0099FB5A /* prop_posix.c */, + 6ADCCCE41B3011CF0099FB5A /* prop_reorder.c */, + 6ADCCCE51B3011CF0099FB5A /* prop_reorder.h */, + 6ADCCCE61B3011CF0099FB5A /* prop_tags.c */, + 6ADCCCE71B3011CF0099FB5A /* prop_test.c */, + 6ADCCCE81B3011CF0099FB5A /* prop_vector.c */, + 6ADCCCE91B3011CF0099FB5A /* prop_window.c */, + 6ADCCCEA1B3011CF0099FB5A /* prop_window.h */, + ); + name = prop; + path = ../src/prop; + sourceTree = ""; + }; + 6ADCCCFA1B3012F60099FB5A /* htsmsg */ = { + isa = PBXGroup; + children = ( + 6A8104381CBCBCD300E29BE8 /* persistent_nsuserdefaults.m */, + 6ADCCCFB1B3012F60099FB5A /* htsbuf.c */, + 6ADCCCFC1B3012F60099FB5A /* htsbuf.h */, + 6ADCCCFD1B3012F60099FB5A /* htsmsg.c */, + 6ADCCCFE1B3012F60099FB5A /* htsmsg.h */, + 6ADCCCFF1B3012F60099FB5A /* htsmsg_binary.c */, + 6ADCCD001B3012F60099FB5A /* htsmsg_binary.h */, + 6ADCCD011B3012F60099FB5A /* htsmsg_json.c */, + 6ADCCD021B3012F60099FB5A /* htsmsg_json.h */, + 6ADCCD031B3012F60099FB5A /* htsmsg_store.c */, + 6ADCCD041B3012F60099FB5A /* htsmsg_store.h */, + 6ADCCD071B3012F60099FB5A /* htsmsg_xml.c */, + 6ADCCD081B3012F60099FB5A /* htsmsg_xml.h */, + ); + name = htsmsg; + path = ../src/htsmsg; + sourceTree = ""; + }; + 6ADCCD421B3013CF0099FB5A /* ext */ = { + isa = PBXGroup; + children = ( + 6ADCCF4B1B3065CE0099FB5A /* sqlite */, + 6ADCCD971B3016110099FB5A /* gumbo */, + 6ADCCD7D1B3015A80099FB5A /* trex */, + 6ADCCD431B3013E10099FB5A /* duktape */, + ); + name = ext; + sourceTree = ""; + }; + 6ADCCD431B3013E10099FB5A /* duktape */ = { + isa = PBXGroup; + children = ( + 6ADCCD441B3013E10099FB5A /* duktape.c */, + 6ADCCD451B3013E10099FB5A /* duktape.h */, + ); + name = duktape; + path = ../ext/duktape; + sourceTree = ""; + }; + 6ADCCD471B30154E0099FB5A /* ecmascript */ = { + isa = PBXGroup; + children = ( + 6ADCCD481B30154E0099FB5A /* ecmascript.c */, + 6ADCCD491B30154E0099FB5A /* ecmascript.h */, + 6ADCCD4A1B30154E0099FB5A /* es_console.c */, + 6ADCCD4B1B30154E0099FB5A /* es_crypto.c */, + 6ADCCD4C1B30154E0099FB5A /* es_fs.c */, + 6ADCCD4D1B30154E0099FB5A /* es_gumbo.c */, + 6ADCCD4E1B30154E0099FB5A /* es_hook.c */, + 6ADCCD4F1B30154E0099FB5A /* es_htsmsg.c */, + 6ADCCD501B30154E0099FB5A /* es_io.c */, + 6ADCCD511B30154E0099FB5A /* es_kvstore.c */, + 6ADCCD521B30154E0099FB5A /* es_metadata.c */, + 6ADCCD531B30154E0099FB5A /* es_misc.c */, + 6ADCCD541B30154E0099FB5A /* es_native_obj.c */, + 6ADCCD551B30154E0099FB5A /* es_prop.c */, + 6ADCCD561B30154E0099FB5A /* es_root.c */, + 6ADCCD571B30154E0099FB5A /* es_route.c */, + 6ADCCD581B30154E0099FB5A /* es_searcher.c */, + 6ADCCD591B30154E0099FB5A /* es_service.c */, + 6ADCCD5A1B30154E0099FB5A /* es_sqlite.c */, + 6ADCCD5B1B30154E0099FB5A /* es_stats.c */, + 6ADCCD5C1B30154E0099FB5A /* es_string.c */, + 6ADCCD5D1B30154E0099FB5A /* es_subtitles.c */, + 6ADCCD5E1B30154E0099FB5A /* es_timer.c */, + ); + name = ecmascript; + path = ../src/ecmascript; + sourceTree = ""; + }; + 6ADCCD7D1B3015A80099FB5A /* trex */ = { + isa = PBXGroup; + children = ( + 6ADCCD7E1B3015A80099FB5A /* trex.c */, + 6ADCCD7F1B3015A80099FB5A /* trex.h */, + ); + name = trex; + path = ../ext/trex; + sourceTree = ""; + }; + 6ADCCD811B3015C90099FB5A /* media */ = { + isa = PBXGroup; + children = ( + 6ADCCD821B3015C90099FB5A /* media.c */, + 6ADCCD831B3015C90099FB5A /* media.h */, + 6ADCCD841B3015C90099FB5A /* media_buf.c */, + 6ADCCD851B3015C90099FB5A /* media_buf.h */, + 6ADCCD861B3015C90099FB5A /* media_codec.c */, + 6ADCCD871B3015C90099FB5A /* media_codec.h */, + 6ADCCD881B3015C90099FB5A /* media_event.c */, + 6ADCCD891B3015C90099FB5A /* media_event.h */, + 6ADCCD8A1B3015C90099FB5A /* media_queue.c */, + 6ADCCD8B1B3015C90099FB5A /* media_queue.h */, + 6ADCCD8C1B3015C90099FB5A /* media_settings.c */, + 6ADCCD8D1B3015C90099FB5A /* media_settings.h */, + 6ADCCD8E1B3015C90099FB5A /* media_track.c */, + 6ADCCD8F1B3015C90099FB5A /* media_track.h */, + ); + name = media; + path = ../src/media; + sourceTree = ""; + }; + 6ADCCD971B3016110099FB5A /* gumbo */ = { + isa = PBXGroup; + children = ( + 6ADCCD981B3016110099FB5A /* attribute.c */, + 6ADCCD991B3016110099FB5A /* attribute.h */, + 6ADCCD9A1B3016110099FB5A /* char_ref.c */, + 6ADCCD9B1B3016110099FB5A /* char_ref.h */, + 6ADCCD9C1B3016110099FB5A /* char_ref.rl */, + 6ADCCD9D1B3016110099FB5A /* error.c */, + 6ADCCD9E1B3016110099FB5A /* error.h */, + 6ADCCD9F1B3016110099FB5A /* gumbo.h */, + 6ADCCDA01B3016110099FB5A /* insertion_mode.h */, + 6ADCCDA11B3016110099FB5A /* parser.c */, + 6ADCCDA21B3016110099FB5A /* parser.h */, + 6ADCCDA31B3016110099FB5A /* string_buffer.c */, + 6ADCCDA41B3016110099FB5A /* string_buffer.h */, + 6ADCCDA51B3016110099FB5A /* string_piece.c */, + 6ADCCDA61B3016110099FB5A /* string_piece.h */, + 6ADCCDA71B3016110099FB5A /* tag.c */, + 6ADCCDA81B3016110099FB5A /* tag.in */, + 6ADCCDA91B3016110099FB5A /* tag_enum.h */, + 6ADCCDAA1B3016110099FB5A /* tag_gperf.h */, + 6ADCCDAB1B3016110099FB5A /* tag_sizes.h */, + 6ADCCDAC1B3016110099FB5A /* tag_strings.h */, + 6ADCCDAD1B3016110099FB5A /* token_type.h */, + 6ADCCDAE1B3016110099FB5A /* tokenizer.c */, + 6ADCCDAF1B3016110099FB5A /* tokenizer.h */, + 6ADCCDB01B3016110099FB5A /* tokenizer_states.h */, + 6ADCCDB11B3016110099FB5A /* utf8.c */, + 6ADCCDB21B3016110099FB5A /* utf8.h */, + 6ADCCDB31B3016110099FB5A /* util.c */, + 6ADCCDB41B3016110099FB5A /* util.h */, + 6ADCCDB51B3016110099FB5A /* vector.c */, + 6ADCCDB61B3016110099FB5A /* vector.h */, + ); + name = gumbo; + path = "../ext/gumbo-parser/src"; + sourceTree = ""; + }; + 6ADCCDC41B30165D0099FB5A /* fileaccess */ = { + isa = PBXGroup; + children = ( + 6A04C0361C2156080043FA93 /* fa_filepicker.c */, + 6A04C0371C2156080043FA93 /* fa_filepicker.h */, + 6ADCCDC51B30165D0099FB5A /* fa_aes.c */, + 6ADCCDC61B30165D0099FB5A /* fa_audio.c */, + 6ADCCDC71B30165D0099FB5A /* fa_audio.h */, + 6ADCCDC81B30165D0099FB5A /* fa_backend.c */, + 6ADCCDC91B30165D0099FB5A /* fa_buffer.c */, + 6ADCCDCA1B30165D0099FB5A /* fa_bundle.c */, + 6ADCCDCB1B30165D0099FB5A /* fa_bwlimit.c */, + 6ADCCDCC1B30165D0099FB5A /* fa_cmp.c */, + 6ADCCDCD1B30165D0099FB5A /* fa_data.c */, + 6ADCCDCE1B30165D0099FB5A /* fa_defs.h */, + 6ADCCDCF1B30165D0099FB5A /* fa_fs.c */, + 6ADCCDD01B30165D0099FB5A /* fa_ftp.c */, + 6ADCCDD11B30165D0099FB5A /* fa_funopen.c */, + 6ADCCDD31B30165D0099FB5A /* fa_http.c */, + 6ADCCDD41B30165D0099FB5A /* fa_imageloader.c */, + 6ADCCDD51B30165D0099FB5A /* fa_imageloader.h */, + 6ADCCDD61B30165D0099FB5A /* fa_indexer.c */, + 6ADCCDD71B30165D0099FB5A /* fa_indexer.h */, + 6ADCCDD81B30165D0099FB5A /* fa_libav.c */, + 6ADCCDD91B30165D0099FB5A /* fa_libav.h */, + 6ADCCDDD1B30165D0099FB5A /* fa_probe.c */, + 6ADCCDDE1B30165D0099FB5A /* fa_probe.h */, + 6ADCCDDF1B30165D0099FB5A /* fa_proto.h */, + 6ADCCDE01B30165D0099FB5A /* fa_rar.c */, + 6ADCCDE11B30165D0099FB5A /* fa_scanner.c */, + 6ADCCDE21B30165D0099FB5A /* fa_search.h */, + 6ADCCDE41B30165D0099FB5A /* fa_slice.c */, + 6ADCCDE61B30165D0099FB5A /* fa_vfs.c */, + 6ADCCDE71B30165D0099FB5A /* fa_vfs.h */, + 6ADCCDE81B30165D0099FB5A /* fa_video.c */, + 6ADCCDE91B30165D0099FB5A /* fa_video.h */, + 6ADCCDEB1B30165D0099FB5A /* fa_zip.c */, + 6ADCCDEC1B30165D0099FB5A /* fa_zlib.c */, + 6ADCCDED1B30165E0099FB5A /* fa_zlib.h */, + 6ADCCDEE1B30165E0099FB5A /* fileaccess.c */, + 6ADCCDEF1B30165E0099FB5A /* fileaccess.h */, + 6ADCCDF01B30165E0099FB5A /* filebundle.h */, + 6ADCCDF11B30165E0099FB5A /* ftpparse.c */, + 6ADCCDF21B30165E0099FB5A /* ftpparse.h */, + 6ADCCDF31B30165E0099FB5A /* http_client.h */, + 6ADCCDF41B30165E0099FB5A /* smb */, + 6ADCCDFA1B30165E0099FB5A /* svfs.h */, + ); + name = fileaccess; + path = ../src/fileaccess; + sourceTree = ""; + }; + 6ADCCDF41B30165E0099FB5A /* smb */ = { + isa = PBXGroup; + children = ( + 6ADCCDF51B30165E0099FB5A /* fa_nativesmb.c */, + 6ADCCDF61B30165E0099FB5A /* nbt.h */, + 6ADCCDF71B30165E0099FB5A /* nmb.c */, + 6ADCCDF81B30165E0099FB5A /* nmb.h */, + 6ADCCDF91B30165E0099FB5A /* smbv1.h */, + ); + path = smb; + sourceTree = ""; + }; + 6ADCCE331B304C280099FB5A /* networking */ = { + isa = PBXGroup; + children = ( + 6A8385341B4280E6002816FB /* websocket.c */, + 6A8385351B4280E6002816FB /* websocket.h */, + 6ADCCE341B304C280099FB5A /* asyncio.h */, + 6ADCCE351B304C280099FB5A /* asyncio_http.c */, + 6ADCCE371B304C280099FB5A /* asyncio_posix.c */, + 6ADCCE3A1B304C280099FB5A /* ftp_server.c */, + 6ADCCE3B1B304C280099FB5A /* ftp_server.h */, + 6ADCCE3C1B304C280099FB5A /* http.c */, + 6ADCCE3D1B304C280099FB5A /* http.h */, + 6ADCCE3E1B304C280099FB5A /* http_server.c */, + 6ADCCE3F1B304C280099FB5A /* http_server.h */, + 6ADCCE401B304C280099FB5A /* net.h */, + 6ADCCE421B304C280099FB5A /* net_apple.c */, + 6ADCCE431B304C280099FB5A /* net_common.c */, + 6ADCCE441B304C280099FB5A /* net_i.h */, + 6ADCCE451B304C280099FB5A /* net_ifaddr.c */, + 6ADCCE4A1B304C280099FB5A /* net_posix.c */, + 6ADCCE4C1B304C280099FB5A /* ssdp.c */, + 6ADCCE4D1B304C280099FB5A /* ssdp.h */, + ); + name = networking; + path = ../src/networking; + sourceTree = ""; + }; + 6ADCCE601B304D390099FB5A /* subtitles */ = { + isa = PBXGroup; + children = ( + 6ADCCE611B304D390099FB5A /* dvdspu.c */, + 6ADCCE621B304D390099FB5A /* dvdspu.h */, + 6ADCCE631B304D390099FB5A /* ext_subtitles.c */, + 6ADCCE641B304D390099FB5A /* ext_subtitles.h */, + 6ADCCE651B304D390099FB5A /* sub.h */, + 6ADCCE661B304D390099FB5A /* sub_ass.c */, + 6ADCCE671B304D390099FB5A /* subtitles.c */, + 6ADCCE681B304D390099FB5A /* subtitles.h */, + 6ADCCE691B304D390099FB5A /* video_overlay.c */, + 6ADCCE6A1B304D390099FB5A /* video_overlay.h */, + 6ADCCE6B1B304D390099FB5A /* vobsub.c */, + 6ADCCE6C1B304D390099FB5A /* vobsub.h */, + ); + name = subtitles; + path = ../src/subtitles; + sourceTree = ""; + }; + 6ADCCE731B304D580099FB5A /* image */ = { + isa = PBXGroup; + children = ( + 6A08CDEF1C07006500387E87 /* nanosvg.c */, + 6ADCCF471B30639D0099FB5A /* rasterizer_ft.c */, + 6ADCCE741B304D580099FB5A /* dominantcolor.c */, + 6ADCCE751B304D580099FB5A /* image.c */, + 6ADCCE761B304D580099FB5A /* image.h */, + 6ADCCE771B304D580099FB5A /* image_decoder_libav.c */, + 6ADCCE781B304D580099FB5A /* jpeg.c */, + 6ADCCE791B304D580099FB5A /* jpeg.h */, + 6ADCCE7A1B304D580099FB5A /* pixmap.c */, + 6ADCCE7B1B304D580099FB5A /* pixmap.h */, + 6ADCCE7D1B304D580099FB5A /* svg.c */, + 6ADCCE7E1B304D580099FB5A /* vector.c */, + 6ADCCE7F1B304D580099FB5A /* vector.h */, + ); + name = image; + path = ../src/image; + sourceTree = ""; + }; + 6ADCCE881B304DC80099FB5A /* backend */ = { + isa = PBXGroup; + children = ( + 6ADCCE891B304DC80099FB5A /* backend.c */, + 6ADCCE8A1B304DC80099FB5A /* backend.h */, + 6ADCCE8B1B304DC80099FB5A /* backend_prop.c */, + 6ADCCE8C1B304DC80099FB5A /* backend_prop.h */, + 6ADCCE8D1B304DC80099FB5A /* bittorrent */, + 6ADCCEA11B304DC80099FB5A /* hls */, + 6ADCCEA51B304DC80099FB5A /* htsp */, + 6ADCCEA71B304DC80099FB5A /* icecast */, + 6ADCCEAB1B304DC80099FB5A /* search.c */, + 6ADCCEAC1B304DC80099FB5A /* search.h */, + ); + name = backend; + path = ../src/backend; + sourceTree = ""; + }; + 6ADCCE8D1B304DC80099FB5A /* bittorrent */ = { + isa = PBXGroup; + children = ( + 6ADCCE8E1B304DC80099FB5A /* bencode.c */, + 6ADCCE8F1B304DC80099FB5A /* bencode.h */, + 6ADCCE901B304DC80099FB5A /* bittorrent.h */, + 6ADCCE911B304DC80099FB5A /* bt_backend.c */, + 6ADCCE921B304DC80099FB5A /* diskio.c */, + 6ADCCE931B304DC80099FB5A /* fa_torrent.c */, + 6ADCCE941B304DC80099FB5A /* magnet.c */, + 6ADCCE951B304DC80099FB5A /* peer.c */, + 6ADCCE961B304DC80099FB5A /* torrent.c */, + 6ADCCE971B304DC80099FB5A /* torrent_settings.c */, + 6ADCCE981B304DC80099FB5A /* torrent_stats.c */, + 6ADCCE991B304DC80099FB5A /* tracker.c */, + 6ADCCE9A1B304DC80099FB5A /* tracker_http.c */, + 6ADCCE9B1B304DC80099FB5A /* tracker_udp.c */, + ); + path = bittorrent; + sourceTree = ""; + }; + 6ADCCEA11B304DC80099FB5A /* hls */ = { + isa = PBXGroup; + children = ( + 6ADCCEA21B304DC80099FB5A /* hls.c */, + 6ADCCEA31B304DC80099FB5A /* hls.h */, + 6ADCCEA41B304DC80099FB5A /* hls_ts.c */, + ); + path = hls; + sourceTree = ""; + }; + 6ADCCEA51B304DC80099FB5A /* htsp */ = { + isa = PBXGroup; + children = ( + 6ADCCEA61B304DC80099FB5A /* htsp.c */, + ); + path = htsp; + sourceTree = ""; + }; + 6ADCCEA71B304DC80099FB5A /* icecast */ = { + isa = PBXGroup; + children = ( + 6ADCCEA81B304DC80099FB5A /* icecast.c */, + ); + path = icecast; + sourceTree = ""; + }; + 6ADCCEC71B304DFA0099FB5A /* db */ = { + isa = PBXGroup; + children = ( + 6ADCCEC81B304DFA0099FB5A /* db_support.c */, + 6ADCCEC91B304DFA0099FB5A /* db_support.h */, + 6ADCCECA1B304DFA0099FB5A /* kvstore.c */, + 6ADCCECB1B304DFA0099FB5A /* kvstore.h */, + ); + name = db; + path = ../src/db; + sourceTree = ""; + }; + 6ADCCED01B304E360099FB5A /* upnp */ = { + isa = PBXGroup; + children = ( + 6ADCCED11B304E360099FB5A /* upnp.c */, + 6ADCCED21B304E360099FB5A /* upnp.h */, + 6ADCCED31B304E360099FB5A /* upnp_avtransport.c */, + 6ADCCED41B304E360099FB5A /* upnp_browse.c */, + 6ADCCED51B304E360099FB5A /* upnp_connectionmanager.c */, + 6ADCCED61B304E360099FB5A /* upnp_control.c */, + 6ADCCED71B304E360099FB5A /* upnp_event.c */, + 6ADCCED81B304E360099FB5A /* upnp_renderingcontrol.c */, + 6ADCCED91B304E360099FB5A /* upnp_scpd.h */, + ); + name = upnp; + path = ../src/upnp; + sourceTree = ""; + }; + 6ADCCEE11B304E5C0099FB5A /* metadata */ = { + isa = PBXGroup; + children = ( + 6ADCCEE21B304E5C0099FB5A /* browsemdb.c */, + 6ADCCEE31B304E5C0099FB5A /* decoration.c */, + 6ADCCEE41B304E5C0099FB5A /* metadata.c */, + 6ADCCEE51B304E5C0099FB5A /* metadata.h */, + 6ADCCEE61B304E5C0099FB5A /* metadata_sources.c */, + 6ADCCEE71B304E5C0099FB5A /* metadata_sources.h */, + 6ADCCEE81B304E5C0099FB5A /* metadata_str.c */, + 6ADCCEE91B304E5C0099FB5A /* metadata_str.h */, + 6ADCCEEA1B304E5C0099FB5A /* metadb.c */, + 6ADCCEEB1B304E5C0099FB5A /* mlp.c */, + 6ADCCEEC1B304E5C0099FB5A /* playinfo.c */, + 6ADCCEED1B304E5C0099FB5A /* playinfo.h */, + ); + name = metadata; + path = ../src/metadata; + sourceTree = ""; + }; + 6ADCCEF61B304E800099FB5A /* video */ = { + isa = PBXGroup; + children = ( + 6A04C0441C21A2C80043FA93 /* vtb.c */, + 6ADCCEF91B304E800099FB5A /* h264_annexb.c */, + 6ADCCEFA1B304E800099FB5A /* h264_annexb.h */, + 6ADCCEFB1B304E800099FB5A /* h264_parser.c */, + 6ADCCEFC1B304E800099FB5A /* h264_parser.h */, + 6ADCCF011B304E800099FB5A /* video_decoder.c */, + 6ADCCF021B304E800099FB5A /* video_decoder.h */, + 6ADCCF031B304E800099FB5A /* video_playback.c */, + 6ADCCF041B304E800099FB5A /* video_playback.h */, + 6ADCCF051B304E800099FB5A /* video_settings.c */, + 6ADCCF061B304E800099FB5A /* video_settings.h */, + ); + name = video; + path = ../src/video; + sourceTree = ""; + }; + 6ADCCF111B304EFE0099FB5A /* api */ = { + isa = PBXGroup; + children = ( + 6ADBF62D1B9A443D00A21726 /* screenshot.c */, + 6ADBF62E1B9A443D00A21726 /* screenshot.h */, + 6ADCCF131B304EFE0099FB5A /* httpcontrol.c */, + 6ADCCF141B304EFE0099FB5A /* lastfm.c */, + 6ADCCF151B304EFE0099FB5A /* lastfm.h */, + 6ADCCF161B304EFE0099FB5A /* opensubtitles.h */, + 6ADCCF171B304EFE0099FB5A /* soap.c */, + 6ADCCF181B304EFE0099FB5A /* soap.h */, + 6ADCCF191B304EFE0099FB5A /* stpp.c */, + 6ADCCF1A1B304EFE0099FB5A /* tmdb.c */, + 6ADCCF1B1B304EFE0099FB5A /* tvdb.c */, + 6ADCCF1C1B304EFE0099FB5A /* xmlrpc.c */, + 6ADCCF1D1B304EFE0099FB5A /* xmlrpc.h */, + ); + name = api; + path = ../src/api; + sourceTree = ""; + }; + 6ADCCF2B1B305BC40099FB5A /* audio2 */ = { + isa = PBXGroup; + children = ( + 6AB9264D1C0743CD002D59A6 /* mac_audio.c */, + 6ADCCF2F1B305BC40099FB5A /* audio.c */, + 6ADCCF301B305BC40099FB5A /* audio.h */, + 6ADCCF311B305BC40099FB5A /* audio_ext.h */, + 6ADCCF321B305BC40099FB5A /* audio_test.c */, + ); + name = audio2; + path = ../src/audio2; + sourceTree = ""; + }; + 6ADCCF3D1B3063130099FB5A /* text */ = { + isa = PBXGroup; + children = ( + 6ADCCF3F1B3063130099FB5A /* fontstash.c */, + 6ADCCF401B3063130099FB5A /* freetype.c */, + 6ADCCF411B3063130099FB5A /* parser.c */, + 6ADCCF421B3063130099FB5A /* text.h */, + ); + name = text; + path = ../src/text; + sourceTree = ""; + }; + 6ADCCF4B1B3065CE0099FB5A /* sqlite */ = { + isa = PBXGroup; + children = ( + 6ADCCF4E1B3065CE0099FB5A /* sqlite3.c */, + 6ADCCF4F1B3065CE0099FB5A /* sqlite3.h */, + ); + name = sqlite; + path = ../ext/sqlite; + sourceTree = ""; + }; + 6ADCCF561B3069F60099FB5A /* sd */ = { + isa = PBXGroup; + children = ( + 6ADCCF5B1B3069F60099FB5A /* sd.c */, + 6ADCCF5C1B3069F60099FB5A /* sd.h */, + ); + name = sd; + path = ../src/sd; + sourceTree = ""; + }; + 6ADCCF621B3078330099FB5A /* glw */ = { + isa = PBXGroup; + children = ( + 6ADCCF631B30785D0099FB5A /* glw_array.c */, + 6ADCCF641B30785D0099FB5A /* glw_bar.c */, + 6ADCCF651B30785D0099FB5A /* glw_bloom.c */, + 6ADCCF661B30785D0099FB5A /* glw_clip.c */, + 6ADCCF671B30785D0099FB5A /* glw_clist.c */, + 6ADCCF691B30785D0099FB5A /* glw_container.c */, + 6ADCCF6B1B30785D0099FB5A /* glw_cube.c */, + 6ADCCF6C1B30785D0099FB5A /* glw_cursor.c */, + 6ADCCF6D1B30785D0099FB5A /* glw_cursor.h */, + 6ADCCF6E1B30785D0099FB5A /* glw_deck.c */, + 6ADCCF6F1B30785D0099FB5A /* glw_detachable.c */, + 6ADCCF701B30785D0099FB5A /* glw_displacement.c */, + 6ADCCF711B30785D0099FB5A /* glw_dummy.c */, + 6ADCCF721B30785D0099FB5A /* glw_event.c */, + 6ADCCF731B30785D0099FB5A /* glw_event.h */, + 6ADCCF741B30785D0099FB5A /* glw_expander.c */, + 6ADCCF751B30785D0099FB5A /* glw_flicker.c */, + 6ADCCF761B30785D0099FB5A /* glw_freefloat.c */, + 6ADCCF771B30785D0099FB5A /* glw_image.c */, + 6ADCCF781B30785D0099FB5A /* glw_keyintercept.c */, + 6ADCCF791B30785D0099FB5A /* glw_layer.c */, + 6ADCCF7A1B30785D0099FB5A /* glw_list.c */, + 6ADCCF7F1B30785D0099FB5A /* glw_math.c */, + 6ADCCF801B30785D0099FB5A /* glw_mirror.c */, + 6ADCCF811B30785D0099FB5A /* glw_mirror.h */, + 6ADCCF821B30785D0099FB5A /* glw_navigation.c */, + 6ADCCF831B30785D0099FB5A /* glw_navigation.h */, + 6ADCCF841B30785D0099FB5A /* glw_opengl_es.c */, + 6ADCCF871B30785D0099FB5A /* glw_opengl_shaders.c */, + 6ADCCF881B30785D0099FB5A /* glw_opengl.h */, + 6ADCCF891B30785D0099FB5A /* glw_playfield.c */, + 6A6AD6D11C0E2EC700931F45 /* glw_popup.c */, + 6ADCCF8A1B30785D0099FB5A /* glw_primitives.c */, + 6ADCCF8E1B30785D0099FB5A /* glw_renderer.c */, + 6ADCCF8F1B30785D0099FB5A /* glw_renderer.h */, + 6ADCCF901B30785D0099FB5A /* glw_resizer.c */, + 6ADCCF911B30785D0099FB5A /* glw_rotator.c */, + 6A2DC23A1CAD1EC7005CD9F3 /* glw_scope.c */, + 6A08CDEB1C07000F00387E87 /* glw_scroll.c */, + 6A08CDEC1C07000F00387E87 /* glw_scroll.h */, + 6ADCCF941B30785D0099FB5A /* glw_settings.c */, + 6ADCCF951B30785D0099FB5A /* glw_settings.h */, + 6ADCCF961B30785D0099FB5A /* glw_slider.c */, + 6ADCCF971B30785D0099FB5A /* glw_slideshow.c */, + 6ADCCF981B30785D0099FB5A /* glw_style.c */, + 6ADCCF991B30785D0099FB5A /* glw_style.h */, + 6ADCCF9A1B30785D0099FB5A /* glw_text_bitmap.c */, + 6ADCCF9B1B30785D0099FB5A /* glw_text_bitmap.h */, + 6ADCCF9D1B30785D0099FB5A /* glw_texture_loader.c */, + 6ADCCF9E1B30785D0099FB5A /* glw_texture_opengl.c */, + 6ADCCFA01B30785D0099FB5A /* glw_texture.h */, + 6ADCCFA11B30785D0099FB5A /* glw_throbber.c */, + 6ADCCFA21B30785D0099FB5A /* glw_transitions.c */, + 6ADCCFA31B30785D0099FB5A /* glw_transitions.h */, + 6ADCCFA41B30785D0099FB5A /* glw_underscan.c */, + 6ADCCFA61B30785D0099FB5A /* glw_video_common.c */, + 6ADCCFA71B30785D0099FB5A /* glw_video_common.h */, + 6A04C04F1C21F7B10043FA93 /* glw_video_ios.c */, + 6ADCCFA91B30785D0099FB5A /* glw_video_overlay.c */, + 6ADCCFAA1B30785D0099FB5A /* glw_video_overlay.h */, + 6ADCCFB11B30785D0099FB5A /* glw_video_yuvp.c */, + 6ADCCFB21B30785D0099FB5A /* glw_view_attrib.c */, + 6ADCCFB31B30785D0099FB5A /* glw_view_eval.c */, + 6ADCCFB41B30785D0099FB5A /* glw_view_lexer.c */, + 6ADCCFB51B30785D0099FB5A /* glw_view_loader.c */, + 6ADCCFB61B30785D0099FB5A /* glw_view_parser.c */, + 6ADCCFB71B30785D0099FB5A /* glw_view_preproc.c */, + 6ADCCFB81B30785D0099FB5A /* glw_view_support.c */, + 6ADCCFB91B30785D0099FB5A /* glw_view.c */, + 6ADCCFBA1B30785D0099FB5A /* glw_view.h */, + 6ADCCFBD1B30785D0099FB5A /* glw.c */, + 6ADCCFBE1B30785D0099FB5A /* glw.h */, + ); + name = glw; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6AC2B86F1B1F23D700969FB4 /* Movian-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6AC2B8971B1F23D800969FB4 /* Build configuration list for PBXNativeTarget "Movian-iOS" */; + buildPhases = ( + 6AC2B86C1B1F23D700969FB4 /* Sources */, + 6AC2B86D1B1F23D700969FB4 /* Frameworks */, + 6AC2B86E1B1F23D700969FB4 /* Resources */, + 6A08CE901C072F3900387E87 /* Embed Frameworks (7 items) */, + ); + buildRules = ( + ); + dependencies = ( + 6A697AC81C0B10A100156A56 /* PBXTargetDependency */, + 6A6AD6D91C0E32A300931F45 /* PBXTargetDependency */, + ); + name = "Movian-iOS"; + productName = Movian; + productReference = 6AC2B8701B1F23D700969FB4 /* Movian-iOS.app */; + productType = "com.apple.product-type.application"; + }; + 6AC9385F1C0E443E00D54769 /* Movian-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6AC938731C0E443E00D54769 /* Build configuration list for PBXNativeTarget "Movian-tvOS" */; + buildPhases = ( + 6AC9385C1C0E443E00D54769 /* Sources */, + 6AC9385D1C0E443E00D54769 /* Frameworks */, + 6AC9385E1C0E443E00D54769 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 6AD574EE1C15FD9400FCA17D /* PBXTargetDependency */, + 6A35C2AD1C1042ED00D8EA86 /* PBXTargetDependency */, + 6A35C2B41C1045E700D8EA86 /* PBXTargetDependency */, + ); + name = "Movian-tvOS"; + productName = "Movian-tvOS"; + productReference = 6AC938601C0E443E00D54769 /* Movian-tvOS.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6AC2B8681B1F23D700969FB4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = "Lonelycoder AB"; + TargetAttributes = { + 6A697AC21C0B103700156A56 = { + CreatedOnToolsVersion = 7.1.1; + }; + 6A6AD6D31C0E2EDC00931F45 = { + CreatedOnToolsVersion = 7.1.1; + }; + 6AC2B86F1B1F23D700969FB4 = { + CreatedOnToolsVersion = 6.3; + DevelopmentTeam = R6G4NR96M9; + }; + 6AC9385F1C0E443E00D54769 = { + CreatedOnToolsVersion = 7.1.1; + DevelopmentTeam = R6G4NR96M9; + }; + }; + }; + buildConfigurationList = 6AC2B86B1B1F23D700969FB4 /* Build configuration list for PBXProject "Movian" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6AC2B8671B1F23D700969FB4; + productRefGroup = 6AC2B8711B1F23D700969FB4 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6A08CDD71C06FD8200387E87 /* Products */; + ProjectRef = 6A08CDD61C06FD8200387E87 /* freetype2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6AC2B86F1B1F23D700969FB4 /* Movian-iOS */, + 6A697AC21C0B103700156A56 /* libav-iOS */, + 6A6AD6D31C0E2EDC00931F45 /* GitRevision */, + 6AC9385F1C0E443E00D54769 /* Movian-tvOS */, + 6A35C2AE1C1045CD00D8EA86 /* libav-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6A08CDDB1C06FD8300387E87 /* libFreetype2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libFreetype2.a; + remoteRef = 6A08CDDA1C06FD8300387E87 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6AD574EB1C15FD8100FCA17D /* libFreetype2-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libFreetype2-tvOS.a"; + remoteRef = 6AD574EA1C15FD8100FCA17D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6AC2B86E1B1F23D700969FB4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A83853A1B42811B002816FB /* lang in Resources */, + 6A8385391B42811B002816FB /* glwskins in Resources */, + 6AC2B8881B1F23D800969FB4 /* LaunchScreen.xib in Resources */, + 6AD574F51C15FE7700FCA17D /* Main.storyboard in Resources */, + 6A8385301B427E0C002816FB /* res in Resources */, + 6ADCD34A1B316BEE0099FB5A /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6AC9385E1C0E443E00D54769 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6AD574F71C15FED800FCA17D /* lang in Resources */, + 6AD574F61C15FED600FCA17D /* res in Resources */, + 6AC938711C0E443E00D54769 /* Assets.xcassets in Resources */, + 6AD574F81C15FEDB00FCA17D /* glwskins in Resources */, + 6AD574F41C15FE6E00FCA17D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 6A35C2AF1C1045CD00D8EA86 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/lib/libavcodec.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavdevice.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavformat.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavresample.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavutil.a", + "$(BUILT_PRODUCTS_DIR)/lib/libswscale.a", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "./build_libav.sh\n"; + }; + 6A697AC61C0B103D00156A56 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/lib/libavcodec.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavdevice.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavformat.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavresample.a", + "$(BUILT_PRODUCTS_DIR)/lib/libavutil.a", + "$(BUILT_PRODUCTS_DIR)/lib/libswscale.a", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "./build_libav.sh\n"; + }; + 6A6AD6D71C0E2EE500931F45 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "revision=`git describe --dirty --tags --always | sed -e s/-g[0-9a-z]*// -e s/-/./g`\necho \"#define GIT_REVISION $revision\" > InfoPlist.h\ntouch Movian/Info.plist\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6AC2B86C1B1F23D700969FB4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6ADCCDC11B3016110099FB5A /* utf8.c in Sources */, + 6ADCCEB91B304DC80099FB5A /* torrent_stats.c in Sources */, + 6AB9264E1C0743CD002D59A6 /* mac_audio.c in Sources */, + 6ADCCD901B3015C90099FB5A /* media.c in Sources */, + 6ADCCD331B30135B0099FB5A /* i18n.c in Sources */, + 6ADCCE101B30165E0099FB5A /* fa_scanner.c in Sources */, + 6ADCCEDB1B304E360099FB5A /* upnp_avtransport.c in Sources */, + 6ADCCE071B30165E0099FB5A /* fa_http.c in Sources */, + 6ADCD0031B30785D0099FB5A /* glw_view.c in Sources */, + 6ADCCE171B30165E0099FB5A /* fa_zip.c in Sources */, + 6ADCCCB11B3000CC0099FB5A /* rstr.c in Sources */, + 6ADCCD641B30154E0099FB5A /* es_hook.c in Sources */, + 6ADCCFE31B30785D0099FB5A /* glw_rotator.c in Sources */, + 6ADCCE5F1B304C280099FB5A /* ssdp.c in Sources */, + 6ADCCCAA1B3000CC0099FB5A /* dbl.c in Sources */, + 6ADCCE6F1B304D390099FB5A /* sub_ass.c in Sources */, + 6ADCCDB81B3016110099FB5A /* char_ref.c in Sources */, + 6ADCCE001B30165E0099FB5A /* fa_bwlimit.c in Sources */, + 6ADCCFD01B30785D0099FB5A /* glw_image.c in Sources */, + 6ADCCFFD1B30785D0099FB5A /* glw_view_eval.c in Sources */, + 6ADCCCB01B3000CC0099FB5A /* ptrvec.c in Sources */, + 6ADCCEF31B304E5C0099FB5A /* metadb.c in Sources */, + 6ADCCD461B3013E10099FB5A /* duktape.c in Sources */, + 6ADCCE021B30165E0099FB5A /* fa_data.c in Sources */, + 6A8104391CBCBCD300E29BE8 /* persistent_nsuserdefaults.m in Sources */, + 6ADCCCAE1B3000CC0099FB5A /* json.c in Sources */, + 6A7808C01C45B139009FADCB /* longpress.c in Sources */, + 6ADCCE1A1B30165E0099FB5A /* ftpparse.c in Sources */, + 6ADCCFFE1B30785D0099FB5A /* glw_view_lexer.c in Sources */, + 6ADCCEAF1B304DC80099FB5A /* backend.c in Sources */, + 6ADCCEB71B304DC80099FB5A /* torrent.c in Sources */, + 6ADCCD911B3015C90099FB5A /* media_buf.c in Sources */, + 6ADCCEDF1B304E360099FB5A /* upnp_event.c in Sources */, + 6ADCCDC01B3016110099FB5A /* tokenizer.c in Sources */, + 6ADCCCA81B3000CC0099FB5A /* charset_detector.c in Sources */, + 6ADCCE041B30165E0099FB5A /* fa_ftp.c in Sources */, + 6ADCCD361B30135B0099FB5A /* libav.c in Sources */, + 6ADCCE871B304D580099FB5A /* vector.c in Sources */, + 6ADCCD921B3015C90099FB5A /* media_codec.c in Sources */, + 6ADCCDB71B3016110099FB5A /* attribute.c in Sources */, + 6ADCCF611B306BC00099FB5A /* osxapp.c in Sources */, + 6ADCCF241B304EFE0099FB5A /* tvdb.c in Sources */, + 6ADCCD6D1B30154E0099FB5A /* es_route.c in Sources */, + 6ADCCD951B3015C90099FB5A /* media_settings.c in Sources */, + 6ADCCECE1B304DFA0099FB5A /* kvstore.c in Sources */, + 6ADCCCCF1B3011790099FB5A /* posix_threads.c in Sources */, + 6ADCCE051B30165E0099FB5A /* fa_funopen.c in Sources */, + 6ADCCF0C1B304E800099FB5A /* video_decoder.c in Sources */, + 6ADCCD741B30154E0099FB5A /* es_timer.c in Sources */, + 6ADCCE4E1B304C280099FB5A /* asyncio_http.c in Sources */, + 6ADCCFE81B30785D0099FB5A /* glw_style.c in Sources */, + 6ADCCFC21B30785D0099FB5A /* glw_clip.c in Sources */, + 6ADCCF201B304EFE0099FB5A /* lastfm.c in Sources */, + 6ADCCEC51B304DC80099FB5A /* search.c in Sources */, + 6ADCD0021B30785D0099FB5A /* glw_view_support.c in Sources */, + 6ADCCF221B304EFE0099FB5A /* stpp.c in Sources */, + 6ADCCFF01B30785D0099FB5A /* glw_underscan.c in Sources */, + 6ADCCFEB1B30785D0099FB5A /* glw_texture_loader.c in Sources */, + 6ADCCFE21B30785D0099FB5A /* glw_resizer.c in Sources */, + 6ADCCEBB1B304DC80099FB5A /* tracker_http.c in Sources */, + 6ADCCDC31B3016110099FB5A /* vector.c in Sources */, + 6ADCCFCB1B30785D0099FB5A /* glw_dummy.c in Sources */, + 6ADCCE6D1B304D390099FB5A /* dvdspu.c in Sources */, + 6ADCCE5D1B304C280099FB5A /* net_posix.c in Sources */, + 6ADCCDFB1B30165E0099FB5A /* fa_aes.c in Sources */, + 6ADCCE081B30165E0099FB5A /* fa_imageloader.c in Sources */, + 6ADCCE0E1B30165E0099FB5A /* fa_probe.c in Sources */, + 6ADCCF251B304EFE0099FB5A /* xmlrpc.c in Sources */, + 6ADCCE6E1B304D390099FB5A /* ext_subtitles.c in Sources */, + 6ADCCE711B304D390099FB5A /* video_overlay.c in Sources */, + 6ADCCFEC1B30785D0099FB5A /* glw_texture_opengl.c in Sources */, + 6ADCCD351B30135B0099FB5A /* keyring.c in Sources */, + 6ADCCD711B30154E0099FB5A /* es_stats.c in Sources */, + 6ADCCFEF1B30785D0099FB5A /* glw_transitions.c in Sources */, + 6A04C0451C21A2C80043FA93 /* vtb.c in Sources */, + 6ADCCCA31B3000CC0099FB5A /* big5.c in Sources */, + 6ADCCF5F1B3069F60099FB5A /* sd.c in Sources */, + 6ADCCCCE1B3011790099FB5A /* posix.c in Sources */, + 6ADCCD6B1B30154E0099FB5A /* es_prop.c in Sources */, + 6ADCCEC31B304DC80099FB5A /* icecast.c in Sources */, + 6ADCCF381B305BC40099FB5A /* audio_test.c in Sources */, + 6ADCCCA51B3000CC0099FB5A /* buf.c in Sources */, + 6ADCCCAC1B3000CC0099FB5A /* gz.c in Sources */, + 6ADCCDFF1B30165E0099FB5A /* fa_bundle.c in Sources */, + 6ADCCE0A1B30165E0099FB5A /* fa_libav.c in Sources */, + 6ADCCFFB1B30785D0099FB5A /* glw_video_yuvp.c in Sources */, + 6ADCCD691B30154E0099FB5A /* es_misc.c in Sources */, + 6ADBF62F1B9A443D00A21726 /* screenshot.c in Sources */, + 6ADCCCB41B3000CC0099FB5A /* unicode_composition.c in Sources */, + 6ADCCFE71B30785D0099FB5A /* glw_slideshow.c in Sources */, + 6ADCCDBC1B3016110099FB5A /* string_buffer.c in Sources */, + 6ADCCD371B30135B0099FB5A /* navigator.c in Sources */, + 6ADCCECD1B304DFA0099FB5A /* db_support.c in Sources */, + 6ADCCEC11B304DC80099FB5A /* hls_ts.c in Sources */, + 6ADCCEC01B304DC80099FB5A /* hls.c in Sources */, + 6ADCCFD31B30785D0099FB5A /* glw_list.c in Sources */, + 6ADCCD671B30154E0099FB5A /* es_kvstore.c in Sources */, + 6ADCCFDE1B30785D0099FB5A /* glw_primitives.c in Sources */, + 6ADCCF081B304E800099FB5A /* h264_annexb.c in Sources */, + 6ADCCCF01B3011CF0099FB5A /* prop_http.c in Sources */, + 6ADCCD631B30154E0099FB5A /* es_gumbo.c in Sources */, + 6ADCCCA41B3000CC0099FB5A /* bitstream.c in Sources */, + 6ADCCD6A1B30154E0099FB5A /* es_native_obj.c in Sources */, + 6ADCCFE11B30785D0099FB5A /* glw_renderer.c in Sources */, + 6ADCCD0C1B3012F60099FB5A /* htsmsg_json.c in Sources */, + 6ADCCD3C1B30135B0099FB5A /* service.c in Sources */, + 6ADCCE181B30165E0099FB5A /* fa_zlib.c in Sources */, + 6ADCCFD11B30785D0099FB5A /* glw_keyintercept.c in Sources */, + 6ADCCFE91B30785D0099FB5A /* glw_text_bitmap.c in Sources */, + 6ADCCEB11B304DC80099FB5A /* bencode.c in Sources */, + 6ADCCFD71B30785D0099FB5A /* glw_mirror.c in Sources */, + 6ADCCEDA1B304E360099FB5A /* upnp.c in Sources */, + 6ADCCE091B30165E0099FB5A /* fa_indexer.c in Sources */, + 6ADCCEB81B304DC80099FB5A /* torrent_settings.c in Sources */, + 6ADCCE801B304D580099FB5A /* dominantcolor.c in Sources */, + 6ADCCD0D1B3012F60099FB5A /* htsmsg_store.c in Sources */, + 6ADCCFF21B30785D0099FB5A /* glw_video_common.c in Sources */, + 6A08CDF01C07006500387E87 /* nanosvg.c in Sources */, + 6ADCCEBC1B304DC80099FB5A /* tracker_udp.c in Sources */, + 6A8385361B4280E6002816FB /* websocket.c in Sources */, + 6AC2B8791B1F23D700969FB4 /* AppDelegate.m in Sources */, + 6ADCCF451B3063130099FB5A /* freetype.c in Sources */, + 6A04C0381C2156080043FA93 /* fa_filepicker.c in Sources */, + 6ADCCF461B3063130099FB5A /* parser.c in Sources */, + 6ADCCFC11B30785D0099FB5A /* glw_bloom.c in Sources */, + 6ADCCE811B304D580099FB5A /* image.c in Sources */, + 6ADCCF211B304EFE0099FB5A /* soap.c in Sources */, + 6ADCCCA71B3000CC0099FB5A /* cancellable.c in Sources */, + 6ADCCFE51B30785D0099FB5A /* glw_settings.c in Sources */, + 6ADCCDFC1B30165E0099FB5A /* fa_audio.c in Sources */, + 6ADCCE011B30165E0099FB5A /* fa_cmp.c in Sources */, + 6ADCCE841B304D580099FB5A /* pixmap.c in Sources */, + 6ADCCD0A1B3012F60099FB5A /* htsmsg.c in Sources */, + 6ADCCCA21B3000CC0099FB5A /* average.c in Sources */, + 6ADCCD381B30135B0099FB5A /* notifications.c in Sources */, + 6ADCCE701B304D390099FB5A /* subtitles.c in Sources */, + 6ADCCFC61B30785D0099FB5A /* glw_cube.c in Sources */, + 6ADCCFC31B30785D0099FB5A /* glw_clist.c in Sources */, + 6ADCCF231B304EFE0099FB5A /* tmdb.c in Sources */, + 6ADCCD961B3015C90099FB5A /* media_track.c in Sources */, + 6ADCCEB41B304DC80099FB5A /* fa_torrent.c in Sources */, + 6ADCCEEF1B304E5C0099FB5A /* decoration.c in Sources */, + 6ADCCE721B304D390099FB5A /* vobsub.c in Sources */, + 6ADCCE571B304C280099FB5A /* net_common.c in Sources */, + 6AC2B8801B1F23D800969FB4 /* GameViewController.m in Sources */, + 6ADCCF521B3065CE0099FB5A /* sqlite3.c in Sources */, + 6ADCCE561B304C280099FB5A /* net_apple.c in Sources */, + 6ADCCFDD1B30785D0099FB5A /* glw_playfield.c in Sources */, + 6ADCCCAB1B3000CC0099FB5A /* extents.c in Sources */, + 6ADCCEF51B304E5C0099FB5A /* playinfo.c in Sources */, + 6ADCCD6F1B30154E0099FB5A /* es_service.c in Sources */, + 6ADCCD601B30154E0099FB5A /* es_console.c in Sources */, + 6ADCCFBF1B30785D0099FB5A /* glw_array.c in Sources */, + 6ADCCCB31B3000CC0099FB5A /* time.c in Sources */, + 6ADCCE861B304D580099FB5A /* svg.c in Sources */, + 6ADCD0011B30785D0099FB5A /* glw_view_preproc.c in Sources */, + 6ADCCE531B304C280099FB5A /* http.c in Sources */, + 6A6AD6CF1C0E293000931F45 /* usage.c in Sources */, + 6ADCCD721B30154E0099FB5A /* es_string.c in Sources */, + 6ADCCD681B30154E0099FB5A /* es_metadata.c in Sources */, + 6ADCCEB61B304DC80099FB5A /* peer.c in Sources */, + 6ADCCFDC1B30785D0099FB5A /* glw_opengl_shaders.c in Sources */, + 6ADCCFCA1B30785D0099FB5A /* glw_displacement.c in Sources */, + 6ADCCFC71B30785D0099FB5A /* glw_cursor.c in Sources */, + 6ADCCCF41B3011CF0099FB5A /* prop_posix.c in Sources */, + 6ADCCEBA1B304DC80099FB5A /* tracker.c in Sources */, + 6ADCCE031B30165E0099FB5A /* fa_fs.c in Sources */, + 6ADCCEB01B304DC80099FB5A /* backend_prop.c in Sources */, + 6ADCCD401B30135B0099FB5A /* trace.c in Sources */, + 6ADCCD101B3012F60099FB5A /* htsmsg_xml.c in Sources */, + 6ADCCD731B30154E0099FB5A /* es_subtitles.c in Sources */, + 6ADCCE121B30165E0099FB5A /* fa_slice.c in Sources */, + 6ADCCCEB1B3011CF0099FB5A /* prop_concat.c in Sources */, + 6ADCCFCD1B30785D0099FB5A /* glw_expander.c in Sources */, + 6ADCD0061B30785D0099FB5A /* glw.c in Sources */, + 6ADCCFC91B30785D0099FB5A /* glw_detachable.c in Sources */, + 6ADCCEF41B304E5C0099FB5A /* mlp.c in Sources */, + 6ADCCF441B3063130099FB5A /* fontstash.c in Sources */, + 6ADCCD931B3015C90099FB5A /* media_event.c in Sources */, + 6ADCD0001B30785D0099FB5A /* glw_view_parser.c in Sources */, + 6ADCCCA61B3000CC0099FB5A /* callout.c in Sources */, + 6ADCCCB21B3000CC0099FB5A /* str.c in Sources */, + 6ADCCDBD1B3016110099FB5A /* string_piece.c in Sources */, + 6ADCCE1B1B30165E0099FB5A /* fa_nativesmb.c in Sources */, + 6ADCCD391B30135B0099FB5A /* playqueue.c in Sources */, + 6ADCCE1C1B30165E0099FB5A /* nmb.c in Sources */, + 6ADCCE191B30165E0099FB5A /* fileaccess.c in Sources */, + 6ADCCFD91B30785D0099FB5A /* glw_opengl_es.c in Sources */, + 6ADCCFD21B30785D0099FB5A /* glw_layer.c in Sources */, + 6ADCCD621B30154E0099FB5A /* es_fs.c in Sources */, + 6ADCCDFD1B30165E0099FB5A /* fa_backend.c in Sources */, + 6ADCCF2A1B30561C0099FB5A /* ios_misc.c in Sources */, + 6A08CDED1C07000F00387E87 /* glw_scroll.c in Sources */, + 6ADCCFD81B30785D0099FB5A /* glw_navigation.c in Sources */, + 6ADCCE501B304C280099FB5A /* asyncio_posix.c in Sources */, + 6AC2B8761B1F23D700969FB4 /* main.m in Sources */, + 6ADCCEF21B304E5C0099FB5A /* metadata_str.c in Sources */, + 6ADCCDBB1B3016110099FB5A /* parser.c in Sources */, + 6ADCCE141B30165E0099FB5A /* fa_vfs.c in Sources */, + 6ADCCCF61B3011CF0099FB5A /* prop_tags.c in Sources */, + 6ADCCDBA1B3016110099FB5A /* error.c in Sources */, + 6ADCCE521B304C280099FB5A /* ftp_server.c in Sources */, + 6ADCCD311B30135B0099FB5A /* blobcache_file.c in Sources */, + 6ADCCEEE1B304E5C0099FB5A /* browsemdb.c in Sources */, + 6ADCCE541B304C280099FB5A /* http_server.c in Sources */, + 6ADCCFD61B30785D0099FB5A /* glw_math.c in Sources */, + 6ADCCCF31B3011CF0099FB5A /* prop_nodefilter.c in Sources */, + 6ADCCFEE1B30785D0099FB5A /* glw_throbber.c in Sources */, + 6ADCCCEE1B3011CF0099FB5A /* prop_grouper.c in Sources */, + 6ADCCF371B305BC40099FB5A /* audio.c in Sources */, + 6ADCCF0E1B304E800099FB5A /* video_settings.c in Sources */, + 6ADCCE0F1B30165E0099FB5A /* fa_rar.c in Sources */, + 6ADCCEE01B304E360099FB5A /* upnp_renderingcontrol.c in Sources */, + 6ADCCD091B3012F60099FB5A /* htsbuf.c in Sources */, + 6A6AD6CE1C0E293000931F45 /* upgrade.c in Sources */, + 6ADCCD651B30154E0099FB5A /* es_htsmsg.c in Sources */, + 6ADCCD3F1B30135B0099FB5A /* task.c in Sources */, + 6A6AD6D21C0E2EC700931F45 /* glw_popup.c in Sources */, + 6ADCCD611B30154E0099FB5A /* es_crypto.c in Sources */, + 6ADCCD0B1B3012F60099FB5A /* htsmsg_binary.c in Sources */, + 6A04C0501C21F7B10043FA93 /* glw_video_ios.c in Sources */, + 6ADCCD3D1B30135B0099FB5A /* settings.c in Sources */, + 6ADCCFFF1B30785D0099FB5A /* glw_view_loader.c in Sources */, + 6ADCCFE61B30785D0099FB5A /* glw_slider.c in Sources */, + 6ADCCCF21B3011CF0099FB5A /* prop_linkselected.c in Sources */, + 6ADCCFC41B30785D0099FB5A /* glw_container.c in Sources */, + 6ADCCEB21B304DC80099FB5A /* bt_backend.c in Sources */, + 6ADCCCA91B3000CC0099FB5A /* codepages.c in Sources */, + 6ADCCFFC1B30785D0099FB5A /* glw_view_attrib.c in Sources */, + 6ADCCF0D1B304E800099FB5A /* video_playback.c in Sources */, + 6A8385331B4280C2002816FB /* prop_proxy.c in Sources */, + 6ADCCEF01B304E5C0099FB5A /* metadata.c in Sources */, + 6ADCCCF51B3011CF0099FB5A /* prop_reorder.c in Sources */, + 6ADCCCEC1B3011CF0099FB5A /* prop_core.c in Sources */, + 6AEAE74C1B9A374800235754 /* main.c in Sources */, + 6ADCCF1F1B304EFE0099FB5A /* httpcontrol.c in Sources */, + 6ADCCCAD1B3000CC0099FB5A /* isolang.c in Sources */, + 6ADCCEF11B304E5C0099FB5A /* metadata_sources.c in Sources */, + 6ADCCD701B30154E0099FB5A /* es_sqlite.c in Sources */, + 6ADCCEDD1B304E360099FB5A /* upnp_connectionmanager.c in Sources */, + 6ADCCDFE1B30165E0099FB5A /* fa_buffer.c in Sources */, + 6ADCCD3B1B30135B0099FB5A /* runcontrol.c in Sources */, + 6ADCCEB51B304DC80099FB5A /* magnet.c in Sources */, + 6ADCCCF81B3011CF0099FB5A /* prop_vector.c in Sources */, + 6ADCCFCF1B30785D0099FB5A /* glw_freefloat.c in Sources */, + 6ADCCD801B3015A80099FB5A /* trex.c in Sources */, + 6ADCCD6C1B30154E0099FB5A /* es_root.c in Sources */, + 6ADCCEDE1B304E360099FB5A /* upnp_control.c in Sources */, + 6A2DC23B1CAD1EC7005CD9F3 /* glw_scope.c in Sources */, + 6ADCCE581B304C280099FB5A /* net_ifaddr.c in Sources */, + 6ADCCDBE1B3016110099FB5A /* tag.c in Sources */, + 6ADCCFF41B30785D0099FB5A /* glw_video_overlay.c in Sources */, + 6ADCCF091B304E800099FB5A /* h264_parser.c in Sources */, + 6ADCCCF71B3011CF0099FB5A /* prop_test.c in Sources */, + 6ADCCE831B304D580099FB5A /* jpeg.c in Sources */, + 6ADCCD6E1B30154E0099FB5A /* es_searcher.c in Sources */, + 6ADCCEB31B304DC80099FB5A /* diskio.c in Sources */, + 6ADCCEDC1B304E360099FB5A /* upnp_browse.c in Sources */, + 6ADCCFC81B30785D0099FB5A /* glw_deck.c in Sources */, + 6ADCCFC01B30785D0099FB5A /* glw_bar.c in Sources */, + 6ADCCCF91B3011CF0099FB5A /* prop_window.c in Sources */, + 6ADCCFCE1B30785D0099FB5A /* glw_flicker.c in Sources */, + 6ADCCD321B30135B0099FB5A /* event.c in Sources */, + 6ADCCF481B30639D0099FB5A /* rasterizer_ft.c in Sources */, + 6ADCCD941B3015C90099FB5A /* media_queue.c in Sources */, + 6ADCCCAF1B3000CC0099FB5A /* pool.c in Sources */, + 6ADCCE821B304D580099FB5A /* image_decoder_libav.c in Sources */, + 6ADCCFCC1B30785D0099FB5A /* glw_event.c in Sources */, + 6ADCCE151B30165E0099FB5A /* fa_video.c in Sources */, + 6ADCCDC21B3016110099FB5A /* util.c in Sources */, + 6ADCCD5F1B30154E0099FB5A /* ecmascript.c in Sources */, + 6ADCCEC21B304DC80099FB5A /* htsp.c in Sources */, + 6ADCCD661B30154E0099FB5A /* es_io.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6AC9385C1C0E443E00D54769 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A35C2481C10423600D8EA86 /* jpeg.c in Sources */, + 6A35C1EA1C1041C000D8EA86 /* fa_aes.c in Sources */, + 6A35C2301C1041FC00D8EA86 /* glw_video_overlay.c in Sources */, + 6A35C1F01C1041C000D8EA86 /* fa_cmp.c in Sources */, + 6A35C24C1C10423600D8EA86 /* keyring.c in Sources */, + 6A35C26A1C10425D00D8EA86 /* json.c in Sources */, + 6A35C1EC1C1041C000D8EA86 /* fa_backend.c in Sources */, + 6A35C2B81C10489000D8EA86 /* backend_prop.c in Sources */, + 6A35C2211C1041FC00D8EA86 /* glw_primitives.c in Sources */, + 6A35C2B91C10489A00D8EA86 /* bencode.c in Sources */, + 6A35C1F11C1041C000D8EA86 /* fa_data.c in Sources */, + 6A35C26B1C10425D00D8EA86 /* pool.c in Sources */, + 6A35C1D61C10419700D8EA86 /* es_fs.c in Sources */, + 6A35C1BF1C10415B00D8EA86 /* utf8.c in Sources */, + 6A35C2801C10427C00D8EA86 /* prop_proxy.c in Sources */, + 6A35C1E51C10419700D8EA86 /* es_stats.c in Sources */, + 6A35C2131C1041FC00D8EA86 /* glw_event.c in Sources */, + 6A35C24A1C10423600D8EA86 /* svg.c in Sources */, + 6A35C21D1C1041FC00D8EA86 /* glw_navigation.c in Sources */, + 6A35C2A41C1042B700D8EA86 /* upnp_renderingcontrol.c in Sources */, + 6A35C2401C10423600D8EA86 /* htsmsg_store.c in Sources */, + 6A35C2191C1041FC00D8EA86 /* glw_layer.c in Sources */, + 6A35C2891C10427C00D8EA86 /* prop_tags.c in Sources */, + 6A35C1FD1C1041C000D8EA86 /* fa_vfs.c in Sources */, + 6A04C0391C2156110043FA93 /* fa_filepicker.c in Sources */, + 6A35C1EB1C1041C000D8EA86 /* fa_audio.c in Sources */, + 6A35C1CC1C10417B00D8EA86 /* posix_threads.c in Sources */, + 6A35C29C1C10429C00D8EA86 /* upgrade.c in Sources */, + 6A35C2A21C1042B700D8EA86 /* upnp_control.c in Sources */, + 6A35C1BD1C10415B00D8EA86 /* tag.c in Sources */, + 6A35C26E1C10425D00D8EA86 /* str.c in Sources */, + 6A35C1D81C10419700D8EA86 /* es_hook.c in Sources */, + 6A35C22E1C1041FC00D8EA86 /* glw_underscan.c in Sources */, + 6A35C1FE1C1041C000D8EA86 /* fa_video.c in Sources */, + 6A35C2351C1041FC00D8EA86 /* glw_view_loader.c in Sources */, + 6A35C1E11C10419700D8EA86 /* es_route.c in Sources */, + 6A35C2581C10424800D8EA86 /* metadata.c in Sources */, + 6A35C2A11C1042B700D8EA86 /* upnp_connectionmanager.c in Sources */, + 6A35C29B1C10429A00D8EA86 /* trace.c in Sources */, + 6A35C27B1C10426F00D8EA86 /* net_posix.c in Sources */, + 6A35C21A1C1041FC00D8EA86 /* glw_list.c in Sources */, + 6A35C1DF1C10419700D8EA86 /* es_prop.c in Sources */, + 6A35C1C31C10416400D8EA86 /* duktape.c in Sources */, + 6A35C22D1C1041FC00D8EA86 /* glw_transitions.c in Sources */, + 6A35C24B1C10423600D8EA86 /* vector.c in Sources */, + 6A35C2C61C10489F00D8EA86 /* hls_ts.c in Sources */, + 6A35C26C1C10425D00D8EA86 /* ptrvec.c in Sources */, + 6A35C1E91C10419700D8EA86 /* event.c in Sources */, + 6A35C2711C10426500D8EA86 /* navigator.c in Sources */, + 6A35C21F1C1041FC00D8EA86 /* glw_opengl_shaders.c in Sources */, + 6A35C2BD1C10489A00D8EA86 /* magnet.c in Sources */, + 6A35C2C21C10489A00D8EA86 /* tracker.c in Sources */, + 6A35C22F1C1041FC00D8EA86 /* glw_video_common.c in Sources */, + 6A35C2601C10425D00D8EA86 /* bitstream.c in Sources */, + 6A35C23D1C10423600D8EA86 /* htsmsg.c in Sources */, + 6A35C28D1C10428300D8EA86 /* runcontrol.c in Sources */, + 6A35C2501C10423D00D8EA86 /* media_buf.c in Sources */, + 6A35C1F41C1041C000D8EA86 /* fa_funopen.c in Sources */, + 6A35C2771C10426F00D8EA86 /* http_server.c in Sources */, + 6AD574F01C15FDC900FCA17D /* GameViewController.m in Sources */, + 6A35C1CD1C10418000D8EA86 /* mac_audio.c in Sources */, + 6A35C28B1C10427C00D8EA86 /* prop_vector.c in Sources */, + 6A35C2081C1041FC00D8EA86 /* glw_bar.c in Sources */, + 6A35C2C81C1048A700D8EA86 /* icecast.c in Sources */, + 6A35C21E1C1041FC00D8EA86 /* glw_opengl_es.c in Sources */, + 6A35C2681C10425D00D8EA86 /* gz.c in Sources */, + 6A35C2381C1041FC00D8EA86 /* glw_view_support.c in Sources */, + 6A35C1D51C10419700D8EA86 /* es_crypto.c in Sources */, + 6A35C2291C1041FC00D8EA86 /* glw_text_bitmap.c in Sources */, + 6A35C2001C1041C000D8EA86 /* fa_zlib.c in Sources */, + 6A35C28C1C10427C00D8EA86 /* prop_window.c in Sources */, + 6A35C2731C10426F00D8EA86 /* asyncio_http.c in Sources */, + 6A35C1E41C10419700D8EA86 /* es_sqlite.c in Sources */, + 6A35C25F1C10425D00D8EA86 /* big5.c in Sources */, + 6A35C2941C10428F00D8EA86 /* subtitles.c in Sources */, + 6AD574F11C15FDCD00FCA17D /* AppDelegate.m in Sources */, + 6A35C2161C1041FC00D8EA86 /* glw_freefloat.c in Sources */, + 6A35C2C31C10489A00D8EA86 /* tracker_http.c in Sources */, + 6A35C24E1C10423600D8EA86 /* main.c in Sources */, + 6A35C2751C10426F00D8EA86 /* ftp_server.c in Sources */, + 6A35C2691C10425D00D8EA86 /* isolang.c in Sources */, + 6A35C20C1C1041FC00D8EA86 /* glw_container.c in Sources */, + 6A35C1D31C10419700D8EA86 /* ecmascript.c in Sources */, + 6A35C27A1C10426F00D8EA86 /* net_ifaddr.c in Sources */, + 6A35C1F51C1041C000D8EA86 /* fa_http.c in Sources */, + 6A35C1E01C10419700D8EA86 /* es_root.c in Sources */, + 6A35C1CB1C10417B00D8EA86 /* posix.c in Sources */, + 6A35C2521C10423D00D8EA86 /* media_event.c in Sources */, + 6A35C2C51C10489F00D8EA86 /* hls.c in Sources */, + 6A35C2761C10426F00D8EA86 /* http.c in Sources */, + 6A35C1EE1C1041C000D8EA86 /* fa_bundle.c in Sources */, + 6A35C2861C10427C00D8EA86 /* prop_nodefilter.c in Sources */, + 6A35C1FF1C1041C000D8EA86 /* fa_zip.c in Sources */, + 6AD574EF1C15FDC600FCA17D /* main.m in Sources */, + 6A35C22C1C1041FC00D8EA86 /* glw_throbber.c in Sources */, + 6A35C1F21C1041C000D8EA86 /* fa_fs.c in Sources */, + 6A35C2951C10428F00D8EA86 /* video_overlay.c in Sources */, + 6A35C20E1C1041FC00D8EA86 /* glw_cursor.c in Sources */, + 6A35C1D11C10418700D8EA86 /* db_support.c in Sources */, + 6A35C1DE1C10419700D8EA86 /* es_native_obj.c in Sources */, + 6A35C2021C1041C000D8EA86 /* ftpparse.c in Sources */, + 6A35C2431C10423600D8EA86 /* nanosvg.c in Sources */, + 6A35C1D21C10418700D8EA86 /* kvstore.c in Sources */, + 6A35C1E81C10419700D8EA86 /* es_timer.c in Sources */, + 6A35C2A91C1042C000D8EA86 /* video_settings.c in Sources */, + 6A35C1DD1C10419700D8EA86 /* es_misc.c in Sources */, + 6A35C2331C1041FC00D8EA86 /* glw_view_eval.c in Sources */, + 6A35C1C81C10417300D8EA86 /* tmdb.c in Sources */, + 6A35C1E71C10419700D8EA86 /* es_subtitles.c in Sources */, + 6A35C2A81C1042C000D8EA86 /* video_playback.c in Sources */, + 6A2DC23D1CAD1EDE005CD9F3 /* glw_scope.c in Sources */, + 6A35C2741C10426F00D8EA86 /* asyncio_posix.c in Sources */, + 6A35C1C61C10417300D8EA86 /* lastfm.c in Sources */, + 6A35C1CF1C10418000D8EA86 /* audio_test.c in Sources */, + 6A35C2921C10428F00D8EA86 /* ext_subtitles.c in Sources */, + 6A35C1BE1C10415B00D8EA86 /* tokenizer.c in Sources */, + 6A35C2651C10425D00D8EA86 /* codepages.c in Sources */, + 6A35C21C1C1041FC00D8EA86 /* glw_mirror.c in Sources */, + 6A35C2C91C1048A900D8EA86 /* search.c in Sources */, + 6A35C24D1C10423600D8EA86 /* libav.c in Sources */, + 6A35C2721C10426F00D8EA86 /* websocket.c in Sources */, + 6A35C2851C10427C00D8EA86 /* prop_linkselected.c in Sources */, + 6A35C2241C1041FC00D8EA86 /* glw_rotator.c in Sources */, + 6A35C20D1C1041FC00D8EA86 /* glw_cube.c in Sources */, + 6A35C2551C10423D00D8EA86 /* media_track.c in Sources */, + 6A35C26D1C10425D00D8EA86 /* rstr.c in Sources */, + 6A35C2171C1041FC00D8EA86 /* glw_image.c in Sources */, + 6A35C2661C10425D00D8EA86 /* dbl.c in Sources */, + 6A35C1F61C1041C000D8EA86 /* fa_imageloader.c in Sources */, + 6A35C2A71C1042C000D8EA86 /* video_decoder.c in Sources */, + 6A35C21B1C1041FC00D8EA86 /* glw_math.c in Sources */, + 6A35C29A1C10429700D8EA86 /* parser.c in Sources */, + 6A35C1BB1C1040E700D8EA86 /* string_buffer.c in Sources */, + 6A35C2901C10428900D8EA86 /* settings.c in Sources */, + 6A35C29F1C1042B700D8EA86 /* upnp_avtransport.c in Sources */, + 6A35C29D1C10429E00D8EA86 /* usage.c in Sources */, + 6A35C2911C10428F00D8EA86 /* dvdspu.c in Sources */, + 6A35C2C01C10489A00D8EA86 /* torrent_settings.c in Sources */, + 6A35C2461C10423600D8EA86 /* image.c in Sources */, + 6A35C1FC1C1041C000D8EA86 /* fa_slice.c in Sources */, + 6A04C0511C21F7B10043FA93 /* glw_video_ios.c in Sources */, + 6A35C2271C1041FC00D8EA86 /* glw_slideshow.c in Sources */, + 6A35C2411C10423600D8EA86 /* htsmsg_xml.c in Sources */, + 6A35C2821C10427C00D8EA86 /* prop_core.c in Sources */, + 6A35C2571C10424800D8EA86 /* decoration.c in Sources */, + 6A35C2101C1041FC00D8EA86 /* glw_detachable.c in Sources */, + 6A35C2C11C10489A00D8EA86 /* torrent_stats.c in Sources */, + 6A35C1B91C1040C300D8EA86 /* error.c in Sources */, + 6A35C2231C1041FC00D8EA86 /* glw_resizer.c in Sources */, + 6A35C1CE1C10418000D8EA86 /* audio.c in Sources */, + 6A35C2201C1041FC00D8EA86 /* glw_playfield.c in Sources */, + 6A35C2511C10423D00D8EA86 /* media_codec.c in Sources */, + 6A35C2C41C10489A00D8EA86 /* tracker_udp.c in Sources */, + 6A35C1DC1C10419700D8EA86 /* es_metadata.c in Sources */, + 6A35C2061C1041FC00D8EA86 /* glw_scroll.c in Sources */, + 6A35C2151C1041FC00D8EA86 /* glw_flicker.c in Sources */, + 6A35C1D41C10419700D8EA86 /* es_console.c in Sources */, + 6A35C2631C10425D00D8EA86 /* cancellable.c in Sources */, + 6A35C2BE1C10489A00D8EA86 /* peer.c in Sources */, + 6A35C20A1C1041FC00D8EA86 /* glw_clip.c in Sources */, + 6A35C1C11C10415B00D8EA86 /* vector.c in Sources */, + 6A35C1C71C10417300D8EA86 /* soap.c in Sources */, + 6A35C29E1C1042B700D8EA86 /* upnp.c in Sources */, + 6A35C2531C10423D00D8EA86 /* media_queue.c in Sources */, + 6A81043B1CBCC14800E29BE8 /* persistent_nsuserdefaults.m in Sources */, + 6A35C2341C1041FC00D8EA86 /* glw_view_lexer.c in Sources */, + 6A35C2051C1041FC00D8EA86 /* glw_popup.c in Sources */, + 6A35C1E31C10419700D8EA86 /* es_service.c in Sources */, + 6A35C2A61C1042C000D8EA86 /* h264_parser.c in Sources */, + 6A35C2931C10428F00D8EA86 /* sub_ass.c in Sources */, + 6A35C2031C1041D200D8EA86 /* fa_nativesmb.c in Sources */, + 6A35C27C1C10426F00D8EA86 /* ssdp.c in Sources */, + 6A35C2A01C1042B700D8EA86 /* upnp_browse.c in Sources */, + 6A35C2421C10423600D8EA86 /* i18n.c in Sources */, + 6A669FDE1C5035430042819C /* stpp.c in Sources */, + 6A35C23A1C1041FC00D8EA86 /* glw.c in Sources */, + 6A35C1FB1C1041C000D8EA86 /* fa_scanner.c in Sources */, + 6A35C1B81C1040BD00D8EA86 /* char_ref.c in Sources */, + 6A35C2141C1041FC00D8EA86 /* glw_expander.c in Sources */, + 6A35C23F1C10423600D8EA86 /* htsmsg_json.c in Sources */, + 6A35C28F1C10428900D8EA86 /* service.c in Sources */, + 6A35C2BA1C10489A00D8EA86 /* bt_backend.c in Sources */, + 6A35C2811C10427C00D8EA86 /* prop_concat.c in Sources */, + 6A35C1C21C10416400D8EA86 /* trex.c in Sources */, + 6A35C27E1C10427200D8EA86 /* playqueue.c in Sources */, + 6A7808C11C45B139009FADCB /* longpress.c in Sources */, + 6A35C2041C1041D200D8EA86 /* nmb.c in Sources */, + 6A35C2781C10426F00D8EA86 /* net_apple.c in Sources */, + 6A35C1F81C1041C000D8EA86 /* fa_libav.c in Sources */, + 6A35C1D71C10419700D8EA86 /* es_gumbo.c in Sources */, + 6A35C1E21C10419700D8EA86 /* es_searcher.c in Sources */, + 6A35C2451C10423600D8EA86 /* dominantcolor.c in Sources */, + 6A35C1CA1C10417300D8EA86 /* xmlrpc.c in Sources */, + 6A35C1C91C10417300D8EA86 /* tvdb.c in Sources */, + 6A35C22B1C1041FC00D8EA86 /* glw_texture_opengl.c in Sources */, + 6A35C2C71C1048A300D8EA86 /* htsp.c in Sources */, + 6A35C2CA1C104A4F00D8EA86 /* ios_misc.c in Sources */, + 6A35C25D1C10424800D8EA86 /* playinfo.c in Sources */, + 6A35C25A1C10424800D8EA86 /* metadata_str.c in Sources */, + 6A35C1C51C10417300D8EA86 /* httpcontrol.c in Sources */, + 6A35C2561C10424800D8EA86 /* browsemdb.c in Sources */, + 6A35C1ED1C1041C000D8EA86 /* fa_buffer.c in Sources */, + 6A35C2371C1041FC00D8EA86 /* glw_view_preproc.c in Sources */, + 6A35C2261C1041FC00D8EA86 /* glw_slider.c in Sources */, + 6A35C2671C10425D00D8EA86 /* extents.c in Sources */, + 6A35C1DA1C10419700D8EA86 /* es_io.c in Sources */, + 6A35C1F91C1041C000D8EA86 /* fa_probe.c in Sources */, + 6A35C2881C10427C00D8EA86 /* prop_reorder.c in Sources */, + 6A35C25E1C10425D00D8EA86 /* average.c in Sources */, + 6A35C2071C1041FC00D8EA86 /* glw_array.c in Sources */, + 6A35C28A1C10427C00D8EA86 /* prop_test.c in Sources */, + 6A35C2011C1041C000D8EA86 /* fileaccess.c in Sources */, + 6A35C2391C1041FC00D8EA86 /* glw_view.c in Sources */, + 6A35C2BF1C10489A00D8EA86 /* torrent.c in Sources */, + 6A35C2981C10429700D8EA86 /* fontstash.c in Sources */, + 6A35C2961C10428F00D8EA86 /* vobsub.c in Sources */, + 6A35C25C1C10424800D8EA86 /* mlp.c in Sources */, + 6A35C20F1C1041FC00D8EA86 /* glw_deck.c in Sources */, + 6A35C2541C10423D00D8EA86 /* media_settings.c in Sources */, + 6A35C26F1C10425D00D8EA86 /* time.c in Sources */, + 6A35C2A31C1042B700D8EA86 /* upnp_event.c in Sources */, + 6A35C23C1C10423600D8EA86 /* htsbuf.c in Sources */, + 6A35C2471C10423600D8EA86 /* image_decoder_libav.c in Sources */, + 6A35C2B61C10488E00D8EA86 /* backend.c in Sources */, + 6A35C2701C10425D00D8EA86 /* unicode_composition.c in Sources */, + 6A35C28E1C10428600D8EA86 /* sd.c in Sources */, + 6A35C2361C1041FC00D8EA86 /* glw_view_parser.c in Sources */, + 6A35C1D01C10418200D8EA86 /* blobcache_file.c in Sources */, + 6A35C2251C1041FC00D8EA86 /* glw_settings.c in Sources */, + 6A35C2311C1041FC00D8EA86 /* glw_video_yuvp.c in Sources */, + 6A35C2281C1041FC00D8EA86 /* glw_style.c in Sources */, + 6A35C2321C1041FC00D8EA86 /* glw_view_attrib.c in Sources */, + 6A35C25B1C10424800D8EA86 /* metadb.c in Sources */, + 6A35C27D1C10427200D8EA86 /* notifications.c in Sources */, + 6A35C24F1C10423D00D8EA86 /* media.c in Sources */, + 6A35C2BB1C10489A00D8EA86 /* diskio.c in Sources */, + 6A35C23E1C10423600D8EA86 /* htsmsg_binary.c in Sources */, + 6A35C2491C10423600D8EA86 /* pixmap.c in Sources */, + 6A35C1C01C10415B00D8EA86 /* util.c in Sources */, + 6A35C2871C10427C00D8EA86 /* prop_posix.c in Sources */, + 6A35C1FA1C1041C000D8EA86 /* fa_rar.c in Sources */, + 6A35C2221C1041FC00D8EA86 /* glw_renderer.c in Sources */, + 6A35C2591C10424800D8EA86 /* metadata_sources.c in Sources */, + 6A35C2121C1041FC00D8EA86 /* glw_dummy.c in Sources */, + 6A35C2841C10427C00D8EA86 /* prop_http.c in Sources */, + 6A35C2091C1041FC00D8EA86 /* glw_bloom.c in Sources */, + 6A35C2791C10426F00D8EA86 /* net_common.c in Sources */, + 6A35C2641C10425D00D8EA86 /* charset_detector.c in Sources */, + 6A35C1DB1C10419700D8EA86 /* es_kvstore.c in Sources */, + 6A35C2441C10423600D8EA86 /* rasterizer_ft.c in Sources */, + 6A35C1B71C1040B900D8EA86 /* attribute.c in Sources */, + 6A35C2621C10425D00D8EA86 /* callout.c in Sources */, + 6A35C20B1C1041FC00D8EA86 /* glw_clist.c in Sources */, + 6A35C2CB1C104A5400D8EA86 /* osxapp.c in Sources */, + 6A35C1F31C1041C000D8EA86 /* fa_ftp.c in Sources */, + 6A35C2971C10429200D8EA86 /* task.c in Sources */, + 6A35C2831C10427C00D8EA86 /* prop_grouper.c in Sources */, + 6A35C2BC1C10489A00D8EA86 /* fa_torrent.c in Sources */, + 6A35C22A1C1041FC00D8EA86 /* glw_texture_loader.c in Sources */, + 6A35C1E61C10419700D8EA86 /* es_string.c in Sources */, + 6A35C2181C1041FC00D8EA86 /* glw_keyintercept.c in Sources */, + 6A35C1EF1C1041C000D8EA86 /* fa_bwlimit.c in Sources */, + 6A35C1BC1C10412700D8EA86 /* string_piece.c in Sources */, + 6A35C2A51C1042C000D8EA86 /* h264_annexb.c in Sources */, + 6A35C1F71C1041C000D8EA86 /* fa_indexer.c in Sources */, + 6A35C1BA1C1040E500D8EA86 /* parser.c in Sources */, + 6A35C1B61C1040B600D8EA86 /* sqlite3.c in Sources */, + 6A35C2991C10429700D8EA86 /* freetype.c in Sources */, + 6A35C1C41C10417300D8EA86 /* screenshot.c in Sources */, + 6A35C2611C10425D00D8EA86 /* buf.c in Sources */, + 6A35C2111C1041FC00D8EA86 /* glw_displacement.c in Sources */, + 6A35C1D91C10419700D8EA86 /* es_htsmsg.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 6A35C2AD1C1042ED00D8EA86 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6A6AD6D31C0E2EDC00931F45 /* GitRevision */; + targetProxy = 6A35C2AC1C1042ED00D8EA86 /* PBXContainerItemProxy */; + }; + 6A35C2B41C1045E700D8EA86 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6A35C2AE1C1045CD00D8EA86 /* libav-tvOS */; + targetProxy = 6A35C2B31C1045E700D8EA86 /* PBXContainerItemProxy */; + }; + 6A697AC81C0B10A100156A56 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6A697AC21C0B103700156A56 /* libav-iOS */; + targetProxy = 6A697AC71C0B10A100156A56 /* PBXContainerItemProxy */; + }; + 6A6AD6D91C0E32A300931F45 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6A6AD6D31C0E2EDC00931F45 /* GitRevision */; + targetProxy = 6A6AD6D81C0E32A300931F45 /* PBXContainerItemProxy */; + }; + 6AD574EE1C15FD9400FCA17D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Freetype2-tvOS"; + targetProxy = 6AD574ED1C15FD9400FCA17D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 6AC2B8811B1F23D800969FB4 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6AC2B8821B1F23D800969FB4 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 6AC2B8861B1F23D800969FB4 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 6AC2B8871B1F23D800969FB4 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; + 6AC9386D1C0E443E00D54769 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6AC9386E1C0E443E00D54769 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6A35C2B11C1045CD00D8EA86 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + }; + name = Debug; + }; + 6A35C2B21C1045CD00D8EA86 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + }; + name = Release; + }; + 6A697AC41C0B103700156A56 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 6A697AC51C0B103700156A56 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 6A6AD6D51C0E2EDC00931F45 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 6A6AD6D61C0E2EDC00931F45 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 6AC2B8951B1F23D800969FB4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = NO; + ENABLE_BITCODE = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "*"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 2; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../", + "$(SRCROOT)/../src", + "$(SRCROOT)/freetype2-ios/include", + "$(BUILT_PRODUCTS_DIR)/usr/local/include", + ); + INFOPLIST_PREFIX_HEADER = InfoPlist.h; + INFOPLIST_PREPROCESS = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 6AC2B8961B1F23D800969FB4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = NO; + ENABLE_BITCODE = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "*"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../", + "$(SRCROOT)/../src", + "$(SRCROOT)/freetype2-ios/include", + "$(BUILT_PRODUCTS_DIR)/usr/local/include", + ); + INFOPLIST_PREFIX_HEADER = InfoPlist.h; + INFOPLIST_PREPROCESS = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6AC2B8981B1F23D800969FB4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../", + "$(SRCROOT)/../src", + "$(SRCROOT)/freetype2-ios/include", + ); + INFOPLIST_FILE = Movian/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_CFLAGS = ( + "-DSQLITE_ENABLE_UNLOCK_NOTIFY", + "-DSQLITE_DEFAULT_FOREIGN_KEYS=1", + "-DSQLITE_OMIT_LOAD_EXTENSION", + "-DSQLITE_OMIT_TCL_VARIABLE", + "-DSQLITE_OMIT_GET_TABLE", + "-DSQLITE_OMIT_EXPLAIN", + "-DSQLITE_OMIT_DEPRECATED", + "-DSQLITE_OMIT_DECLTYPE", + "-DSQLITE_OMIT_COMPLETE", + "-DSQLITE_OMIT_AUTOINIT", + "-DSQLITE_OMIT_UTF16", + "-DSQLITE_THREADSAFE=2", + ); + OTHER_LDFLAGS = ( + "${BUILT_PRODUCTS_DIR}/lib/libavformat.a", + "${BUILT_PRODUCTS_DIR}/lib/libavcodec.a", + "${BUILT_PRODUCTS_DIR}/lib/libavutil.a", + "${BUILT_PRODUCTS_DIR}/lib/libavresample.a", + "${BUILT_PRODUCTS_DIR}/lib/libswscale.a", + ); + PRODUCT_BUNDLE_IDENTIFIER = tv.Movian; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 6AC2B8991B1F23D800969FB4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../", + "$(SRCROOT)/../src", + "$(SRCROOT)/freetype2-ios/include", + ); + INFOPLIST_FILE = Movian/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_CFLAGS = ( + "-DSQLITE_ENABLE_UNLOCK_NOTIFY", + "-DSQLITE_DEFAULT_FOREIGN_KEYS=1", + "-DSQLITE_OMIT_LOAD_EXTENSION", + "-DSQLITE_OMIT_TCL_VARIABLE", + "-DSQLITE_OMIT_GET_TABLE", + "-DSQLITE_OMIT_EXPLAIN", + "-DSQLITE_OMIT_DEPRECATED", + "-DSQLITE_OMIT_DECLTYPE", + "-DSQLITE_OMIT_COMPLETE", + "-DSQLITE_OMIT_AUTOINIT", + "-DSQLITE_OMIT_UTF16", + "-DSQLITE_THREADSAFE=2", + ); + OTHER_LDFLAGS = ( + "${BUILT_PRODUCTS_DIR}/lib/libavformat.a", + "${BUILT_PRODUCTS_DIR}/lib/libavcodec.a", + "${BUILT_PRODUCTS_DIR}/lib/libavutil.a", + "${BUILT_PRODUCTS_DIR}/lib/libavresample.a", + "${BUILT_PRODUCTS_DIR}/lib/libswscale.a", + ); + PRODUCT_BUNDLE_IDENTIFIER = tv.Movian; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 6AC938741C0E443E00D54769 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_IDENTITY = "iPhone Developer"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + INFOPLIST_FILE = "Movian-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_CFLAGS = ( + "-DSQLITE_ENABLE_UNLOCK_NOTIFY", + "-DSQLITE_DEFAULT_FOREIGN_KEYS=1", + "-DSQLITE_OMIT_LOAD_EXTENSION", + "-DSQLITE_OMIT_TCL_VARIABLE", + "-DSQLITE_OMIT_GET_TABLE", + "-DSQLITE_OMIT_EXPLAIN", + "-DSQLITE_OMIT_DEPRECATED", + "-DSQLITE_OMIT_DECLTYPE", + "-DSQLITE_OMIT_COMPLETE", + "-DSQLITE_OMIT_AUTOINIT", + "-DSQLITE_OMIT_UTF16", + "-DSQLITE_THREADSAFE=2", + ); + OTHER_LDFLAGS = ( + "${BUILT_PRODUCTS_DIR}/lib/libavformat.a", + "${BUILT_PRODUCTS_DIR}/lib/libavcodec.a", + "${BUILT_PRODUCTS_DIR}/lib/libavutil.a", + "${BUILT_PRODUCTS_DIR}/lib/libavresample.a", + "${BUILT_PRODUCTS_DIR}/lib/libswscale.a", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.lonelycoder.Movian-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + 6AC938751C0E443E00D54769 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_IDENTITY = "iPhone Developer"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + INFOPLIST_FILE = "Movian-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_CFLAGS = ( + "-DSQLITE_ENABLE_UNLOCK_NOTIFY", + "-DSQLITE_DEFAULT_FOREIGN_KEYS=1", + "-DSQLITE_OMIT_LOAD_EXTENSION", + "-DSQLITE_OMIT_TCL_VARIABLE", + "-DSQLITE_OMIT_GET_TABLE", + "-DSQLITE_OMIT_EXPLAIN", + "-DSQLITE_OMIT_DEPRECATED", + "-DSQLITE_OMIT_DECLTYPE", + "-DSQLITE_OMIT_COMPLETE", + "-DSQLITE_OMIT_AUTOINIT", + "-DSQLITE_OMIT_UTF16", + "-DSQLITE_THREADSAFE=2", + ); + OTHER_LDFLAGS = ( + "${BUILT_PRODUCTS_DIR}/lib/libavformat.a", + "${BUILT_PRODUCTS_DIR}/lib/libavcodec.a", + "${BUILT_PRODUCTS_DIR}/lib/libavutil.a", + "${BUILT_PRODUCTS_DIR}/lib/libavresample.a", + "${BUILT_PRODUCTS_DIR}/lib/libswscale.a", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.lonelycoder.Movian-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6A35C2B01C1045CD00D8EA86 /* Build configuration list for PBXAggregateTarget "libav-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6A35C2B11C1045CD00D8EA86 /* Debug */, + 6A35C2B21C1045CD00D8EA86 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6A697AC31C0B103700156A56 /* Build configuration list for PBXAggregateTarget "libav-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6A697AC41C0B103700156A56 /* Debug */, + 6A697AC51C0B103700156A56 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6A6AD6D41C0E2EDC00931F45 /* Build configuration list for PBXAggregateTarget "GitRevision" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6A6AD6D51C0E2EDC00931F45 /* Debug */, + 6A6AD6D61C0E2EDC00931F45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6AC2B86B1B1F23D700969FB4 /* Build configuration list for PBXProject "Movian" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6AC2B8951B1F23D800969FB4 /* Debug */, + 6AC2B8961B1F23D800969FB4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6AC2B8971B1F23D800969FB4 /* Build configuration list for PBXNativeTarget "Movian-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6AC2B8981B1F23D800969FB4 /* Debug */, + 6AC2B8991B1F23D800969FB4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6AC938731C0E443E00D54769 /* Build configuration list for PBXNativeTarget "Movian-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6AC938741C0E443E00D54769 /* Debug */, + 6AC938751C0E443E00D54769 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6AC2B8681B1F23D700969FB4 /* Project object */; +} diff --git a/ios/Movian/AppDelegate.h b/ios/Movian/AppDelegate.h new file mode 100644 index 0000000000..c4846f9049 --- /dev/null +++ b/ios/Movian/AppDelegate.h @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// Movian +// +// Created by Andreas Öman on 03/06/15. +// Copyright (c) 2015 Lonelycoder AB. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/ios/Movian/AppDelegate.m b/ios/Movian/AppDelegate.m new file mode 100644 index 0000000000..f3571804a1 --- /dev/null +++ b/ios/Movian/AppDelegate.m @@ -0,0 +1,121 @@ +// +// AppDelegate.m +// Movian +// +// Created by Andreas Öman on 03/06/15. +// Copyright (c) 2015 Lonelycoder AB. All rights reserved. +// + +#import "AppDelegate.h" + +#include +#include +#include + +#include "arch/posix/posix.h" +#include "main.h" +#include "service.h" + + +const char *htsversion; +const char *htsversion_full; + +uint32_t +parse_version_int(const char *str) +{ + int major = 0; + int minor = 0; + int commit = 0; + sscanf(str, "%d.%d.%d", &major, &minor, &commit); + + return + major * 10000000 + + minor * 100000 + + commit; +} + +uint32_t +app_get_version_int(void) +{ + return parse_version_int(htsversion); +} + + + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + + char path[PATH_MAX]; + + NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; + NSString* version = [infoDict objectForKey:@"CFBundleShortVersionString"]; + htsversion_full = htsversion = strdup([version UTF8String]); + + gconf.concurrency = (int)[[NSProcessInfo processInfo] activeProcessorCount]; + +#ifdef TARGET_OS_TV + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); +#else + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); +#endif + NSString *libraryDirectory = [paths objectAtIndex:0]; + snprintf(path, sizeof(path), "%s/persistent", [libraryDirectory UTF8String]); + mkdir(path, 0777); + gconf.persistent_path = strdup(path); + + paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + libraryDirectory = [paths objectAtIndex:0]; + snprintf(path, sizeof(path), "%s/cache", [libraryDirectory UTF8String]); + mkdir(path, 0777); + gconf.cache_path = strdup(path); + + posix_init(); + + main_init(); + + paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *docsdir = [paths objectAtIndex:0]; + + service_createp("Files", _p("Files"), [docsdir UTF8String], + "files", NULL, 0, 1, SVC_ORIGIN_SYSTEM); + + [UIApplication sharedApplication].idleTimerDisabled = YES; + + 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. + printf("%s\n", __FUNCTION__); +} + +- (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. + printf("%s\n", __FUNCTION__); +} + +- (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. + printf("%s\n", __FUNCTION__); +} + +- (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. + printf("%s\n", __FUNCTION__); +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + printf("%s\n", __FUNCTION__); +} + +@end diff --git a/ios/Movian/Base.lproj/LaunchScreen.xib b/ios/Movian/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000000..d316c1740c --- /dev/null +++ b/ios/Movian/Base.lproj/LaunchScreen.xib @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ios/Movian/Base.lproj/Main.storyboard b/ios/Movian/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..4925a45d66 --- /dev/null +++ b/ios/Movian/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Movian/GameViewController.h b/ios/Movian/GameViewController.h new file mode 100644 index 0000000000..ccc3d9267e --- /dev/null +++ b/ios/Movian/GameViewController.h @@ -0,0 +1,14 @@ +// +// GameViewController.h +// Movian +// +// Created by Andreas Öman on 03/06/15. +// Copyright (c) 2015 Lonelycoder AB. All rights reserved. +// + +#import +#import + +@interface GameViewController : GLKViewController + +@end diff --git a/ios/Movian/GameViewController.m b/ios/Movian/GameViewController.m new file mode 100644 index 0000000000..e8c52d58d4 --- /dev/null +++ b/ios/Movian/GameViewController.m @@ -0,0 +1,358 @@ +// +// GameViewController.m +// Movian +// +// Created by Andreas Öman on 03/06/15. +// Copyright (c) 2015 Lonelycoder AB. All rights reserved. +// + + + +#import "GameViewController.h" +#import +#include + +#include "ui/glw/glw.h" +#include "ui/longpress.h" +#include "navigator.h" + +@interface GameViewController () { + lphelper_t longpress; +} +@property (strong, nonatomic) EAGLContext *context; +@property (nonatomic) glw_root_t *gr; +@property (nonatomic) CGPoint touch_start_pos; +@property (nonatomic) CGPoint touch_end_pos; +@property (nonatomic) NSTimeInterval touch_start_time; + + +- (void)setupGL; +- (void)tearDownGL; + +@end + +@implementation GameViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + + if (!self.context) { + NSLog(@"Failed to create ES context"); + } + + GLKView *view = (GLKView *)self.view; + view.context = self.context; + view.drawableDepthFormat = GLKViewDrawableDepthFormat24; + self.preferredFramesPerSecond = 60; + + [self setupGL]; + + self.gr = calloc(1, sizeof(glw_root_t)); + glw_root_t *gr = self.gr; + gr->gr_private = (__bridge void *)(self.context); + gr->gr_prop_ui = prop_create_root("ui"); + gr->gr_prop_nav = nav_spawn(); + + int flags = 0; +#if TARGET_OS_TV + flags |= GLW_INIT_KEYBOARD_MODE | GLW_INIT_OVERSCAN | GLW_INIT_IN_FULLSCREEN; +#endif + glw_init2(gr, flags); + + glw_opengl_init_context(gr); + + glw_lock(gr); + glw_load_universe(gr); + glw_unlock(gr); + +#if TARGET_OS_TV == 1 + UISwipeGestureRecognizer *r; + + r = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; + r.direction = UISwipeGestureRecognizerDirectionRight; + [self.view addGestureRecognizer:r]; + + r = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)]; + r.direction = UISwipeGestureRecognizerDirectionLeft; + [self.view addGestureRecognizer:r]; + + r = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUp:)]; + r.direction = UISwipeGestureRecognizerDirectionUp; + [self.view addGestureRecognizer:r]; + + r = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDown:)]; + r.direction = UISwipeGestureRecognizerDirectionDown; + [self.view addGestureRecognizer:r]; +#endif +} + +- (void)dealloc +{ + [self tearDownGL]; + + if ([EAGLContext currentContext] == self.context) { + [EAGLContext setCurrentContext:nil]; + } +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + + if ([self isViewLoaded] && ([[self view] window] == nil)) { + self.view = nil; + + [self tearDownGL]; + + if ([EAGLContext currentContext] == self.context) { + [EAGLContext setCurrentContext:nil]; + } + self.context = nil; + } + + // Dispose of any resources that can be recreated. +} + +- (BOOL)prefersStatusBarHidden { + return YES; +} + +- (void)setupGL +{ + [EAGLContext setCurrentContext:self.context]; + +} + +- (void)tearDownGL +{ + [EAGLContext setCurrentContext:self.context]; + +} + +- (void)emitAction:(int)type +{ + glw_root_t *gr = self.gr; + glw_lock(gr); + + event_t *e = event_create_action(type); + e->e_flags |= EVENT_KEYPRESS; + glw_inject_event(gr, e); + glw_unlock(gr); +} + + +- (void)pressesBegan:(NSSet *)presses withEvent:(UIPressesEvent *)event +{ + for(UIPress *press in presses) { + + switch(press.type) { + + case UIPressTypeUpArrow: + [self emitAction:ACTION_UP]; + break; + case UIPressTypeDownArrow: + [self emitAction:ACTION_DOWN]; + break; + case UIPressTypeLeftArrow: + [self emitAction:ACTION_LEFT]; + break; + case UIPressTypeRightArrow: + [self emitAction:ACTION_RIGHT]; + break; + case UIPressTypeSelect: + longpress_down(&self->longpress); + break; + case UIPressTypeMenu: + [self emitAction:ACTION_NAV_BACK]; + break; + case UIPressTypePlayPause: + [self emitAction:ACTION_PLAYPAUSE]; + break; + + } + } +} + + +- (void)pressesEnded:(NSSet *)presses withEvent:(UIPressesEvent *)event +{ + for(UIPress *press in presses) { + + if(press.type == UIPressTypeSelect) { + if(longpress_up(&self->longpress)) { + [self emitAction:ACTION_ACTIVATE]; + break; + } + } + } +} + +- (void)swipeLeft:(UISwipeGestureRecognizer *)sender +{ + [self emitAction:ACTION_LEFT]; +} + +- (void)swipeRight:(UISwipeGestureRecognizer *)sender +{ + [self emitAction:ACTION_RIGHT]; +} + +- (void)swipeUp:(UISwipeGestureRecognizer *)sender +{ + [self emitAction:ACTION_UP]; +} + +- (void)swipeDown:(UISwipeGestureRecognizer *)sender +{ + [self emitAction:ACTION_DOWN]; +} + + + +- (void)emitPointerEvent:(int) type withPoint:(CGPoint *)point time:(NSTimeInterval)ts +{ + glw_root_t *gr = self.gr; + glw_lock(gr); + glw_pointer_event_t gpe; + + const int height = [[self view] bounds].size.height; + const int width = [[self view] bounds].size.width; + + gpe.x = (2.0 * point->x / width) - 1; + gpe.y = -(2.0 * point->y / height) + 1; + gpe.ts = ts * 1000000.0; + gpe.type = type; + glw_pointer_event(gr, &gpe); + glw_unlock(gr); +} + + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if ([touches count] < 1) return; + CGPoint point = [[touches anyObject] locationInView:[self view]]; + self.touch_start_pos = point; + self.touch_start_time = event.timestamp; + +// printf("touch begin at %f,%f\n", point.x, point.y); +#if TARGET_OS_TV == 0 + [self emitPointerEvent:GLW_POINTER_TOUCH_START withPoint:&point time:event.timestamp]; +#endif +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + if ([touches count] < 1) return; + CGPoint point = [[touches anyObject] locationInView:[self view]]; +#if 0 + CGFloat distance = sqrtf((point.x - self.touch_start_pos.x) * (point.x - self.touch_start_pos.x) + + (point.y - self.touch_start_pos.y) * (point.y - self.touch_start_pos.y)); + double delta_time = event.timestamp - self.touch_start_time; +// printf("touch end at %f,%f distance=%f delta-time=%f speed: %f\n", point.x, point.y, distance, delta_time, distance / delta_time); +#endif +#if TARGET_OS_TV == 0 + [self emitPointerEvent:GLW_POINTER_TOUCH_MOVE withPoint:&point time:event.timestamp]; +#endif +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + if ([touches count] < 1) return; + CGPoint point = [[touches anyObject] locationInView:[self view]]; + + +#if TARGET_OS_TV == 0 + [self emitPointerEvent:GLW_POINTER_TOUCH_END withPoint:&point time:event.timestamp]; +#endif +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; +{ + if ([touches count] < 1) return; + CGPoint point = [[touches anyObject] locationInView:[self view]]; + +#if TARGET_OS_TV == 0 + [self emitPointerEvent:GLW_POINTER_TOUCH_CANCEL withPoint:&point time:event.timestamp]; +#endif +} + + + + +static void +denormal_ftz(void) +{ +#ifdef FE_DFL_DISABLE_SSE_DENORMS_ENV + fesetenv(FE_DFL_DISABLE_SSE_DENORMS_ENV); +#elif defined(__arm__) + fenv_t env; + fegetenv(&env); + env.__fpscr |= __fpscr_flush_to_zero; + fesetenv(&env); +#elif defined(__arm64__) + fenv_t env; + fegetenv(&env); + env.__fpcr |= __fpcr_flush_to_zero; + fesetenv(&env); +#else +#error No way to make denormals flush to zero +#endif +} + + + + + +- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect +{ + glw_root_t *gr = self.gr; + + denormal_ftz(); + + glw_lock(gr); + + gr->gr_width = (int)view.drawableWidth; + gr->gr_height = (int)view.drawableHeight; + + glw_prepare_frame(self.gr, 0); + + int refresh = gr->gr_need_refresh; + gr->gr_need_refresh = 0; + if(gr->gr_width > 1 && gr->gr_height > 1 && gr->gr_universe) { + + if(refresh) { + glw_rctx_t rc; + int zmax = 0; + glw_rctx_init(&rc, gr->gr_width, gr->gr_height, 1, &zmax); + glw_layout0(gr->gr_universe, &rc); + + if(refresh & GLW_REFRESH_FLAG_RENDER) { + glViewport(0, 0, gr->gr_width, gr->gr_height); + glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); + glw_render0(gr->gr_universe, &rc); + } + } + + glw_unlock(gr); + if(refresh & GLW_REFRESH_FLAG_RENDER) { + glw_post_scene(gr); + } + + } else { + glw_unlock(gr); + } + + if(longpress_periodic(&self->longpress, gr->gr_frame_start)) { + event_t *e = event_create_action(ACTION_ITEMMENU); + e->e_flags |= EVENT_KEYPRESS; + glw_inject_event(gr, e); + } + + +} + + +@end diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/Movian/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..76bd29ccb8 --- /dev/null +++ b/ios/Movian/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,85 @@ +{ + "images" : [ + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small@2x-1.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-40@2x-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76@2x.png", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd58fac292afa9176a61cab922b81c13aa06a29 GIT binary patch literal 1747 zcmZ`(Ydq5nAOEkzFjJ3n4%QaqNyqI&8#ZBy+$D{S?Vw?1V#{qZ$^Dk&$T_D(a?Pbe zSSq*U)|i;;V0M;6VlKHRH4DkJo_EiS=f(H;{d{k4f7y69MCBd5T{GWThGu?csPDXn1*KNh&lcP9A3g;L1+`kem(xJ5nq8 z9RS3j0ASf404xdtKrN!U-5n2(kN#71_@tz*J9+`umbBls2}gEa ziyMc&I&gC?Opb(W2{Eyq*|$v3 z7ztE5+9(J)54L~X@*Rh()=A&vb7q24#lbqIlhZ9^gsot09$E{2&);I!8gYH87XYpUO?tfqHE|{62lx-4A=ChMM$nD|*bh@C#+N0;h z*GMo11G~{5Y%7OF6KB@ilB;txzDszW89ipzPFA+sw&HAwpz|XZJkdeEQzgb(ZMufC zof_F$#YmCI${dor9INHO6qVWARnIGQxF91l7BrReOy|^R9BcNxQO4wvL%Q=1>vk?j z{E_$`iY4;FX>f=J=sYKDGNJk9i#BLlMsZFsRQVLIzw=!AonQ10?2XWNA2`PKMMc-U z=^+DMuQYna7h^-6V|)}#`M2R#b0r2^ypL#NGrMNjKG_-cq;AKywME44Ty)n^Xd^++ zR~lL);7`iEtXEviEN7>}v^C5X9#-&-H7`l69ybuIVSX@@8Q)$5@`=lJ?~8U{mK}r1)xyB_-zN{HTiy6rx#! zIDVs-wLV*e+MxHaa?bs;O5tH2%QzB3voQQ%)abZSPCZ$9reOc@I>QIsk|ADswuyso zT^v)51)DNVSa%2OtV8rzgoe__$gojbpl%ioT3fU#WTz0CRJ#(YR&go&bcL0i%=|dr ztr2CuN=nt@iNOOmjgXF#z=)Iyy1wI1Jd^nB^c3m&C?;K{~X19kC1(+51U zBbXS+u`ACVSEu3cyfqyXTGw#J>}1PkKi87u+T5F4B^4PqC)rorQQ-RVzIO|@oCyqP zvskS85e#D{Ly^=$euAkM%)w(AcuBOZui{Rsh0lm!%TZ3(>9#Jpk87Ewo%joCN)Si z_98Px)6w}X-aF->nzVH6TPa8ySy2Al0E|&+j3F9rXpHqlV=PQi7A9r}D6|C%wSGPM f!v72y;XxOJ)zc_n$EUc?CiM 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 literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..62eaf267cc2be518fc22f352ba3fc13bc004843e GIT binary patch literal 3938 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 literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3116e8271f2411a3f71d784f3c1287d8267489 GIT binary patch literal 6953 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 T*Pq#r$qRtwdKh2p9FX!2ovT+P literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..131b1412fa2913522b0ea4018b984b86a8e87f32 GIT binary patch literal 2674 zcmZ`*Ydq5p8~$TXkq(#$IVOi;&aFkx=4=@ojhH!~XXP+rDYWGn3W+?P80IuWy*Y&* zj2?&emLdw}6iKm|chCFn{qTOc?)!IL_jTPL@86x}>TG-Th|CcH0FEN;tdQIe`v*b- z+&cfv{v5Y~g3O)F0iZcYWZ#dU%XtV$TMK|bCi|636mWJ(Cjdx13jnF<0Kn!-sb2tq zs0#oqSGkMs1AtU?S(h7}I}q@9u(bl#ffeAeBAR!Fs|ZKiVF&;qBK{9}fReIPT+ISu zW$qq4yI6uCoF0x(7o;>!#F6|oo^IJlmGUJ%?5PkQ* zO{2x);t_Ju*e_<6CZ4+Kyfsc9Pk(Hm2BzHA!E!j?U<7egWcdfbgf6GH`V$B-9|K`x z&#KRQ6Z_9Ohcpd|BM#>aSv!i~bJXSxm)3s>B|~gpbt4oX8sUu8KZulZ;446$+8RH;SAa0nzt*m{0jk zaM-fxe#lM3}CzarBh`>qPR+^nski>O{22wL{rn& z%fRhAnY&e7-vuovqO`^yG(7v^uj{j6+g^W9pbW$Ymq&le-m9!V0<&c~nV+naIoohN zeoowogKOOjeq39F9{+g}*@FeEU8^kuB^+gBEvl9h zonCR=A-tRgOyOmm_BX?)=gmUgVipSnzorv~TO$7m82fDbib~@@xTNUyDRGACHKTw} z`SmnrEc-gTJf2uIhL+m?GrycvvBJaJIrIn~$Gr-P@ry0>4w58@^TFpdw|~1tnC=DL z>Qq)`Ij^_Gk;Z+CI5|yXf#%2Ax#()8wv)NTYmKkp;a)|=_=T2UAIFS3i7vp5l*nu9 zTAPrADgW(N9+^*gmh(nSJV~chYva%+0 zMss}JT+Y0L#P_!0u)t2m+mCydJ#4mK&vbE=x8P0<4Cdlnxee`^QJ16hw^Ko>C*gLI zj;Mi3zwDzN*jhqgkm4p|0NS2FgvzYttUh}dZ8FnE%IqsSm?oBEt{bTF&n2wBqA-fi7f?3vw6+i78lQ_2^C zD7;3MZlLx4DOozBVCsqTHREgdJp+HWsLe*EtHNp*&o%GE_fyh&YoIeCkz~nye?BgcAQD; z7pDf3Vx46sX#zWpwmH9RH3JQ|{o9~c|ML1NB1zbkhqTc3)cj=wvnuJw>Jv7hrkm#} zN$MZVU-n+|6O{|VLau(*Zfyg98`Gp4gi=NKpfw^|UZSC)5soTut1{}Q?Tn>f9JA^! zu$zA;O+>4q&&yb4WJXT?hI(uD$X|Kjr=?)erHtS0!M+sq z0`-)v21RUO8TTJ4_!J@4PC@^$2UX7s7XF)gR6Q01xsxiF0nC|3ZSQrz z({e%Wt_${030z5^1+RNfrLghEQkg}?xeJT#s7#^uwFx+DiKAM4TI3UzrIC?u?aNSg zIi+hfD-rMkjuLOHwMZi4h{5u!n+1}^Z3D_wF;AskDYwuSzBpKuIXvFQ&)R`U*NX+IUD#g>&DvSSnJPd(u5y@_ z1$!|z@f$Lnf+sY$I#}F!(!nOWyZW7M(e<>4%<^&I0A{J24~$rAdv*2B=4Z#3q^ut{o;*skE4s4Qzr zNg_MoO-+{MI(=w%)^uk++BnAUbl;ozdS;2T^(L+{vtAT18I0MAXbXmZIcC*t$-lm= zdH=cTflty~);M~O=Zc2j$B$WHJom+tjq5?t! X6aIhT(WJ=&Hvk~4ovr8=SIPeY6UNs| literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..131b1412fa2913522b0ea4018b984b86a8e87f32 GIT binary patch literal 2674 zcmZ`*Ydq5p8~$TXkq(#$IVOi;&aFkx=4=@ojhH!~XXP+rDYWGn3W+?P80IuWy*Y&* zj2?&emLdw}6iKm|chCFn{qTOc?)!IL_jTPL@86x}>TG-Th|CcH0FEN;tdQIe`v*b- z+&cfv{v5Y~g3O)F0iZcYWZ#dU%XtV$TMK|bCi|636mWJ(Cjdx13jnF<0Kn!-sb2tq zs0#oqSGkMs1AtU?S(h7}I}q@9u(bl#ffeAeBAR!Fs|ZKiVF&;qBK{9}fReIPT+ISu zW$qq4yI6uCoF0x(7o;>!#F6|oo^IJlmGUJ%?5PkQ* zO{2x);t_Ju*e_<6CZ4+Kyfsc9Pk(Hm2BzHA!E!j?U<7egWcdfbgf6GH`V$B-9|K`x z&#KRQ6Z_9Ohcpd|BM#>aSv!i~bJXSxm)3s>B|~gpbt4oX8sUu8KZulZ;446$+8RH;SAa0nzt*m{0jk zaM-fxe#lM3}CzarBh`>qPR+^nski>O{22wL{rn& z%fRhAnY&e7-vuovqO`^yG(7v^uj{j6+g^W9pbW$Ymq&le-m9!V0<&c~nV+naIoohN zeoowogKOOjeq39F9{+g}*@FeEU8^kuB^+gBEvl9h zonCR=A-tRgOyOmm_BX?)=gmUgVipSnzorv~TO$7m82fDbib~@@xTNUyDRGACHKTw} z`SmnrEc-gTJf2uIhL+m?GrycvvBJaJIrIn~$Gr-P@ry0>4w58@^TFpdw|~1tnC=DL z>Qq)`Ij^_Gk;Z+CI5|yXf#%2Ax#()8wv)NTYmKkp;a)|=_=T2UAIFS3i7vp5l*nu9 zTAPrADgW(N9+^*gmh(nSJV~chYva%+0 zMss}JT+Y0L#P_!0u)t2m+mCydJ#4mK&vbE=x8P0<4Cdlnxee`^QJ16hw^Ko>C*gLI zj;Mi3zwDzN*jhqgkm4p|0NS2FgvzYttUh}dZ8FnE%IqsSm?oBEt{bTF&n2wBqA-fi7f?3vw6+i78lQ_2^C zD7;3MZlLx4DOozBVCsqTHREgdJp+HWsLe*EtHNp*&o%GE_fyh&YoIeCkz~nye?BgcAQD; z7pDf3Vx46sX#zWpwmH9RH3JQ|{o9~c|ML1NB1zbkhqTc3)cj=wvnuJw>Jv7hrkm#} zN$MZVU-n+|6O{|VLau(*Zfyg98`Gp4gi=NKpfw^|UZSC)5soTut1{}Q?Tn>f9JA^! zu$zA;O+>4q&&yb4WJXT?hI(uD$X|Kjr=?)erHtS0!M+sq z0`-)v21RUO8TTJ4_!J@4PC@^$2UX7s7XF)gR6Q01xsxiF0nC|3ZSQrz z({e%Wt_${030z5^1+RNfrLghEQkg}?xeJT#s7#^uwFx+DiKAM4TI3UzrIC?u?aNSg zIi+hfD-rMkjuLOHwMZi4h{5u!n+1}^Z3D_wF;AskDYwuSzBpKuIXvFQ&)R`U*NX+IUD#g>&DvSSnJPd(u5y@_ z1$!|z@f$Lnf+sY$I#}F!(!nOWyZW7M(e<>4%<^&I0A{J24~$rAdv*2B=4Z#3q^ut{o;*skE4s4Qzr zNg_MoO-+{MI(=w%)^uk++BnAUbl;ozdS;2T^(L+{vtAT18I0MAXbXmZIcC*t$-lm= zdH=cTflty~);M~O=Zc2j$B$WHJom+tjq5?t! X6aIhT(WJ=&Hvk~4ovr8=SIPeY6UNs| literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/ios/Movian/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..23001d31478d18c59ad1528120ff72f839ef9b96 GIT binary patch literal 4486 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 QpBVsSeRI9an=Uc`0~k_VC;$Ke literal 0 HcmV?d00001 diff --git a/ios/Movian/Images.xcassets/Contents.json b/ios/Movian/Images.xcassets/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/ios/Movian/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/Movian/Info.plist b/ios/Movian/Info.plist new file mode 100644 index 0000000000..536cd9d40d --- /dev/null +++ b/ios/Movian/Info.plist @@ -0,0 +1,52 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Movian + CFBundlePackageType + APPL + CFBundleShortVersionString + GIT_REVISION + CFBundleSignature + ???? + CFBundleVersion + 6 + LSRequiresIPhoneOS + + UIFileSharingEnabled + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ios/Movian/ios_misc.c b/ios/Movian/ios_misc.c new file mode 100644 index 0000000000..d598e3f113 --- /dev/null +++ b/ios/Movian/ios_misc.c @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "arch/arch.h" +#include "main.h" + +static mach_timebase_info_data_t timebase; + +/** + * + */ +int +get_system_concurrency(void) +{ + int mib[2]; + int ncpu; + size_t len; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + return ncpu; +} + + +/** + * + */ +size_t +arch_malloc_size(void *ptr) +{ + return malloc_size(ptr); +} + +/** + * + */ +const char * +arch_get_system_type(void) +{ + return "iOS"; +} + + +/** + * + */ +void +arch_exit(void) +{ + exit(0); +} + + +/** + * + */ +int64_t +arch_get_avtime(void) +{ + int64_t now = mach_absolute_time(); + return now * timebase.numer / (timebase.denom * 1000); +} + +INITIALIZER(get_the_timebase) { + mach_timebase_info(&timebase); +} + +/** + * + */ +int +arch_stop_req(void) +{ + return 0; +} + + +size_t +fwrite$UNIX2003(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream) +{ + return fwrite(ptr, size, nitems, stream); +} diff --git a/ios/Movian/main.m b/ios/Movian/main.m new file mode 100644 index 0000000000..249617b39f --- /dev/null +++ b/ios/Movian/main.m @@ -0,0 +1,16 @@ +// +// main.m +// Movian +// +// Created by Andreas Öman on 03/06/15. +// Copyright (c) 2015 Lonelycoder AB. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/ios/build_libav.sh b/ios/build_libav.sh new file mode 100755 index 0000000000..6bb446ac9e --- /dev/null +++ b/ios/build_libav.sh @@ -0,0 +1,84 @@ +#!/bin/sh + +set -e + +export PATH=$PATH:$PWD + +function build_for_arch() +{ + ( + O="${OBJECT_FILE_DIR}/libav-$1" + set -e + echo "Checking for: ${O}/libavformat/libavformat.a" + if [ -f "${O}/libavformat/libavformat.a" ]; then + exit 0 + fi + + rm -rf "${O}" + mkdir -p "${O}" + cd "${O}" + + CC=`xcrun --sdk ${SDK_NAME} -f clang` + + "${SRCROOT}/../ext/libav/configure" \ + --cc=${CC} \ + --arch=$1 \ + --cpu=generic \ + --sysroot=`xcrun --sdk ${SDK_NAME} --show-sdk-path` \ + --target-os=darwin \ + --extra-cflags="-arch $1 -fembed-bitcode" \ + --extra-ldflags="-arch $1 -fembed-bitcode" \ + --enable-cross-compile \ + --enable-static \ + --disable-shared \ + --disable-encoders \ + --disable-bsfs \ + --disable-filters \ + --disable-muxers \ + --disable-devices \ + --disable-demuxer=rtp \ + --disable-protocol=rtp \ + --disable-decoder=twinvq \ + --disable-decoder=snow \ + --disable-decoder=cavs \ + --enable-encoder=mjpeg \ + --enable-encoder=png \ + --disable-avfilter \ + --enable-encoder=ac3 \ + --enable-encoder=eac3 \ + --disable-programs + + make -j8 V=1 + mkdir -p "${BUILT_PRODUCTS_DIR}" + make install-headers DESTDIR="${BUILT_PRODUCTS_DIR}" V=1 + ) +} + +function rebuild_for_arch() +{ + ( + O="${OBJECT_FILE_DIR}/libav-$1" + set -e + cd "${O}" + + make -j8 V=1 + mkdir -p "${BUILT_PRODUCTS_DIR}" + make install-headers DESTDIR="${BUILT_PRODUCTS_DIR}" V=1 + ) + +} +for A in $ARCHS; do + build_for_arch $A +done + + +mkdir -p "${BUILT_PRODUCTS_DIR}/lib" + +for F in avcodec avformat avresample avutil swscale; do + lipo -create \ + "${OBJECT_FILE_DIR}"/libav-*/lib${F}/lib${F}.a \ + -output \ + "${BUILT_PRODUCTS_DIR}/lib/lib${F}.a" +done + + diff --git a/ios/config.h b/ios/config.h new file mode 100644 index 0000000000..42b95bdbed --- /dev/null +++ b/ios/config.h @@ -0,0 +1,130 @@ +/* Automatically generated by configure, do not edit */ +#define CONFIGURE_ARGS "" +#define APPNAME "movian" +#define APPNAMEUSER "Movian" +#define SHOWTIME_DEFAULT_UI "glw" +#define SHOWTIME_DEFAULT_LOGTARGET "" +#define PLUGINREPO "http://plugins.movian.tv/repo/plugins-v1.json?p=0" +/* Darwin is default 64 bit */ +#define off64_t off_t +#define lseek64 lseek + +/* Different name on darwin */ +#define MAP_ANONYMOUS MAP_ANON + +/* dvdcss, not defined on darwin is default large file and binary */ +#define O_LARGEFILE 0 +#define O_BINARY 0 + +#define SHOWTIME_GLW_DEFAULT_SKIN "flat" +#define ENABLE_LIBASOUND 0 +#define ENABLE_LIBPULSE 0 +#define CONFIG_LIBFREETYPE 1 +#define ENABLE_LIBFREETYPE 1 +#define CONFIG_LIBPTHREAD 1 +#define ENABLE_LIBPTHREAD 1 +#define CONFIG_ZLIB 1 +#define ENABLE_ZLIB 1 +#define CONFIG_GLW 1 +#define ENABLE_GLW 1 +#define ENABLE_GLW_FRONTEND_X11 0 +#define ENABLE_GLW_FRONTEND_WII 0 +#define ENABLE_GLW_FRONTEND_PS3 0 +#define CONFIG_GLW_FRONTEND_COCOA 1 +#define ENABLE_GLW_FRONTEND_COCOA 1 +#define ENABLE_GLW_BACKEND_OPENGL 0 +#define ENABLE_GLW_BACKEND_GX 0 +#define ENABLE_GLW_BACKEND_RSX 0 +#define ENABLE_GLW_BACKEND_OPENGL_ES 1 +#define ENABLE_GU 0 +#define ENABLE_LIBOGC 0 +#define ENABLE_LIRC 0 +#define CONFIG_STDIN 1 +#define ENABLE_STDIN 1 +#define ENABLE_RELEASE 0 +#define ENABLE_AVAHI 0 +#define ENABLE_NVCTRL 0 +#define ENABLE_LIBGME 0 +#define ENABLE_LIBXSS 0 +#define ENABLE_LIBXV 0 +#define ENABLE_OPENSSL 0 +#define ENABLE_POLARSSL 0 +#define ENABLE_COMMONCRYPTO 1 +#define CONFIG_LIBRTMP 1 +#define ENABLE_LIBRTMP 1 +#define ENABLE_LIBX11 0 +#define ENABLE_LIBXEXT 0 +#define ENABLE_LOCATEDB 0 +#define CONFIG_SPOTLIGHT 1 +#define ENABLE_SPOTLIGHT 1 +#define ENABLE_VDPAU 0 +#define ENABLE_LIBXXF86VM 0 +#define ENABLE_LIBXRANDR 0 +#define CONFIG_HTTPSERVER 1 +#define ENABLE_HTTPSERVER 1 +#define CONFIG_TIMEGM 1 +#define ENABLE_TIMEGM 1 +#define ENABLE_INOTIFY 0 +#define CONFIG_REALPATH 1 +#define ENABLE_REALPATH 1 +#define ENABLE_EMU_THREAD_SPECIFICS 0 +#define ENABLE_LIBFONTCONFIG 0 +#define ENABLE_SQLITE_VFS 0 +#define ENABLE_SQLITE_LOCKING 0 +#define CONFIG_SQLITE_INTERNAL 1 +#define ENABLE_SQLITE_INTERNAL 1 +#define CONFIG_LIBAV 1 +#define ENABLE_LIBAV 1 +#define CONFIG_VDA 1 +#define ENABLE_VDA 1 +#define ENABLE_TLSF 0 +#define ENABLE_AIRPLAY 0 +#define ENABLE_WEBKIT 0 +#define ENABLE_VALGRIND 0 +#define ENABLE_BUGHUNT 0 +#define ENABLE_BSPATCH 0 +#define ENABLE_CONNMAN 0 +#define ENABLE_LIBNTFS 0 +#define ENABLE_CEDAR 0 +#define CONFIG_AUDIOTEST 1 +#define ENABLE_AUDIOTEST 1 +#define CONFIG_METADATA 1 +#define ENABLE_METADATA 1 +#define CONFIG_SQLITE 1 +#define ENABLE_SQLITE 1 +#define CONFIG_KVSTORE 1 +#define ENABLE_KVSTORE 1 +#define CONFIG_FTPCLIENT 1 +#define ENABLE_FTPCLIENT 1 +#define CONFIG_FTPSERVER 1 +#define ENABLE_FTPSERVER 1 +#define CONFIG_UPNP 1 +#define ENABLE_UPNP 1 +#define CONFIG_BITTORRENT 1 +#define ENABLE_BITTORRENT 1 +#define CONFIG_HLS 1 +#define ENABLE_HLS 1 +#define CONFIG_ICECAST 1 +#define ENABLE_ICECAST 1 +#define CONFIG_USAGEREPORT 1 +#define ENABLE_USAGEREPORT 1 +#define CONFIG_NATIVESMB 1 +#define ENABLE_NATIVESMB 1 +#define CONFIG_RAR 1 +#define ENABLE_RAR 1 +#define CONFIG_PLAYQUEUE 1 +#define ENABLE_PLAYQUEUE 1 +#define CONFIG_SID 1 +#define ENABLE_SID 1 +#define CONFIG_HTSP 1 +#define ENABLE_HTSP 1 +#define CONFIG_MEDIA_SETTINGS 1 +#define ENABLE_MEDIA_SETTINGS 1 +#define CONFIG_GLW_SETTINGS 1 +#define ENABLE_GLW_SETTINGS 1 +#define CONFIG_NETLOG 1 +#define ENABLE_NETLOG 1 +#define CONFIG_GUMBO 1 +#define ENABLE_GUMBO 1 +#define ENABLE_PLUGINS 0 + diff --git a/ios/freetype2-ios b/ios/freetype2-ios new file mode 160000 index 0000000000..a41c5be05c --- /dev/null +++ b/ios/freetype2-ios @@ -0,0 +1 @@ +Subproject commit a41c5be05c8e7aef543f940f45d5eb89b04ac48a diff --git a/ios/gas-preprocessor.pl b/ios/gas-preprocessor.pl new file mode 100755 index 0000000000..c5a71fb29d --- /dev/null +++ b/ios/gas-preprocessor.pl @@ -0,0 +1,1041 @@ +#!/usr/bin/env perl +# by David Conrad +# This code is licensed under GPLv2 or later; go to gnu.org to read it +# (not that it much matters for an asm preprocessor) +# usage: set your assembler to be something like "perl gas-preprocessor.pl gcc" +use strict; + +# Apple's gas is ancient and doesn't support modern preprocessing features like +# .rept and has ugly macro syntax, among other things. Thus, this script +# implements the subset of the gas preprocessor used by x264 and ffmpeg +# that isn't supported by Apple's gas. + +my %canonical_arch = ("aarch64" => "aarch64", "arm64" => "aarch64", + "arm" => "arm", + "powerpc" => "powerpc", "ppc" => "powerpc"); + +my %comments = ("aarch64" => '//', + "arm" => '@', + "powerpc" => '#'); + +my @gcc_cmd; +my @preprocess_c_cmd; + +my $comm; +my $arch; +my $as_type = "apple-gas"; + +my $fix_unreq = $^O eq "darwin"; +my $force_thumb = 0; + +my $arm_cond_codes = "eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo"; + +my $usage_str = " +$0\n +Gas-preprocessor.pl converts assembler files using modern GNU as syntax for +Apple's ancient gas version or clang's incompatible integrated assembler. The +conversion is regularly tested for Libav, x264 and vlc. Other projects might +use different features which are not correctly handled. + +Options for this program needs to be separated with ' -- ' from the assembler +command. Following options are currently supported: + + -help - this usage text + -arch - target architecture + -as-type - one value out of {{,apple-}{gas,clang},armasm} + -fix-unreq + -no-fix-unreq + -force-thumb - assemble as thumb regardless of the input source + (note, this is incomplete and only works for sources + it explicitly was tested with) +"; + +sub usage() { + print $usage_str; +} + +while (@ARGV) { + my $opt = shift; + + if ($opt =~ /^-(no-)?fix-unreq$/) { + $fix_unreq = $1 ne "no-"; + } elsif ($opt eq "-force-thumb") { + $force_thumb = 1; + } elsif ($opt eq "-arch") { + $arch = shift; + die "unknown arch: '$arch'\n" if not exists $canonical_arch{$arch}; + } elsif ($opt eq "-as-type") { + $as_type = shift; + die "unknown as type: '$as_type'\n" if $as_type !~ /^((apple-)?(gas|clang)|armasm)$/; + } elsif ($opt eq "-help") { + usage(); + exit 0; + } elsif ($opt eq "--" ) { + @gcc_cmd = @ARGV; + } elsif ($opt =~ /^-/) { + die "option '$opt' is not known. See '$0 -help' for usage information\n"; + } else { + push @gcc_cmd, $opt, @ARGV; + } + last if (@gcc_cmd); +} + +if (grep /\.c$/, @gcc_cmd) { + # C file (inline asm?) - compile + @preprocess_c_cmd = (@gcc_cmd, "-S"); +} elsif (grep /\.[sS]$/, @gcc_cmd) { + # asm file, just do C preprocessor + @preprocess_c_cmd = (@gcc_cmd, "-E"); +} elsif (grep /-(v|h|-version|dumpversion)/, @gcc_cmd) { + # pass -v/--version along, used during probing. Matching '-v' might have + # uninteded results but it doesn't matter much if gas-preprocessor or + # the compiler fails. + exec(@gcc_cmd); +} else { + die "Unrecognized input filetype"; +} +if ($as_type eq "armasm") { + + $preprocess_c_cmd[0] = "cpp"; + push(@preprocess_c_cmd, "-U__ELF__"); + push(@preprocess_c_cmd, "-U__MACH__"); + + @preprocess_c_cmd = grep ! /^-nologo$/, @preprocess_c_cmd; + # Remove -ignore XX parameter pairs from preprocess_c_cmd + my $index = 1; + while ($index < $#preprocess_c_cmd) { + if ($preprocess_c_cmd[$index] eq "-ignore" and $index + 1 < $#preprocess_c_cmd) { + splice(@preprocess_c_cmd, $index, 2); + next; + } + $index++; + } + if (grep /^-MM$/, @preprocess_c_cmd) { + system(@preprocess_c_cmd) == 0 or die "Error running preprocessor"; + exit 0; + } +} + +# if compiling, avoid creating an output file named '-.o' +if ((grep /^-c$/, @gcc_cmd) && !(grep /^-o/, @gcc_cmd)) { + foreach my $i (@gcc_cmd) { + if ($i =~ /\.[csS]$/) { + my $outputfile = $i; + $outputfile =~ s/\.[csS]$/.o/; + push(@gcc_cmd, "-o"); + push(@gcc_cmd, $outputfile); + last; + } + } +} +# replace only the '-o' argument with '-', avoids rewriting the make dependency +# target specified with -MT to '-' +my $index = 1; +while ($index < $#preprocess_c_cmd) { + if ($preprocess_c_cmd[$index] eq "-o") { + $index++; + $preprocess_c_cmd[$index] = "-"; + } + $index++; +} + +my $tempfile; +if ($as_type ne "armasm") { + @gcc_cmd = map { /\.[csS]$/ ? qw(-x assembler -) : $_ } @gcc_cmd; +} else { + @preprocess_c_cmd = grep ! /^-c$/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-m/, @preprocess_c_cmd; + + @preprocess_c_cmd = grep ! /^-G/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-W/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-Z/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-fp/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-EHsc$/, @preprocess_c_cmd; + @preprocess_c_cmd = grep ! /^-O/, @preprocess_c_cmd; + + @gcc_cmd = grep ! /^-G/, @gcc_cmd; + @gcc_cmd = grep ! /^-W/, @gcc_cmd; + @gcc_cmd = grep ! /^-Z/, @gcc_cmd; + @gcc_cmd = grep ! /^-fp/, @gcc_cmd; + @gcc_cmd = grep ! /^-EHsc$/, @gcc_cmd; + @gcc_cmd = grep ! /^-O/, @gcc_cmd; + + my @outfiles = grep /\.(o|obj)$/, @gcc_cmd; + $tempfile = $outfiles[0].".asm"; + + # Remove most parameters from gcc_cmd, which actually is the armasm command, + # which doesn't support any of the common compiler/preprocessor options. + @gcc_cmd = grep ! /^-D/, @gcc_cmd; + @gcc_cmd = grep ! /^-U/, @gcc_cmd; + @gcc_cmd = grep ! /^-m/, @gcc_cmd; + @gcc_cmd = grep ! /^-M/, @gcc_cmd; + @gcc_cmd = grep ! /^-c$/, @gcc_cmd; + @gcc_cmd = grep ! /^-I/, @gcc_cmd; + @gcc_cmd = map { /\.S$/ ? $tempfile : $_ } @gcc_cmd; +} + +# detect architecture from gcc binary name +if (!$arch) { + if ($gcc_cmd[0] =~ /(arm64|aarch64|arm|powerpc|ppc)/) { + $arch = $1; + } else { + # look for -arch flag + foreach my $i (1 .. $#gcc_cmd-1) { + if ($gcc_cmd[$i] eq "-arch" and + $gcc_cmd[$i+1] =~ /(arm64|aarch64|arm|powerpc|ppc)/) { + $arch = $1; + } + } + } +} + +# assume we're not cross-compiling if no -arch or the binary doesn't have the arch name +$arch = qx/arch/ if (!$arch); + +die "Unknown target architecture '$arch'" if not exists $canonical_arch{$arch}; + +$arch = $canonical_arch{$arch}; +$comm = $comments{$arch}; +my $inputcomm = $comm; +$comm = ";" if $as_type =~ /armasm/; + +my %ppc_spr = (ctr => 9, + vrsave => 256); + +open(INPUT, "-|", @preprocess_c_cmd) || die "Error running preprocessor"; + +if ($ENV{GASPP_DEBUG}) { + open(ASMFILE, ">&STDOUT"); +} else { + if ($as_type ne "armasm") { + open(ASMFILE, "|-", @gcc_cmd) or die "Error running assembler"; + } else { + open(ASMFILE, ">", $tempfile); + } +} + +my $current_macro = ''; +my $macro_level = 0; +my $rept_level = 0; +my %macro_lines; +my %macro_args; +my %macro_args_default; +my $macro_count = 0; +my $altmacro = 0; +my $in_irp = 0; + +my $num_repts; +my @rept_lines; + +my @irp_args; +my $irp_param; + +my @ifstack; + +my %symbols; + +my @sections; + +my %literal_labels; # for ldr , = +my $literal_num = 0; +my $literal_expr = ".word"; +$literal_expr = ".quad" if $arch eq "aarch64"; + +my $thumb = 0; + +my %thumb_labels; +my %call_targets; +my %mov32_targets; + +my %neon_alias_reg; +my %neon_alias_type; + +my $temp_label_next = 0; +my %last_temp_labels; +my %next_temp_labels; + +my %labels_seen; + +my %aarch64_req_alias; + +if ($force_thumb) { + parse_line(".thumb\n"); +} + +# pass 1: parse .macro +# note that the handling of arguments is probably overly permissive vs. gas +# but it should be the same for valid cases +while () { + # remove lines starting with '#', preprocessing is done, '#' at start of + # the line indicates a comment for all supported archs (aarch64, arm, ppc + # and x86). Also strips line number comments but since they are off anyway + # it is no loss. + s/^#.*$//; + # remove all comments (to avoid interfering with evaluating directives) + s/(? 0) { + $ifstack[-1] = -$ifstack[-1]; + } + return 1; + } elsif ($line =~ /\.else/) { + $ifstack[-1] = !$ifstack[-1]; + return 1; + } elsif (handle_if($line)) { + return 1; + } + } + + # discard lines in false .if blocks + foreach my $i (0 .. $#ifstack) { + if ($ifstack[$i] <= 0) { + return 1; + } + } + } + return 0; +} + +sub parse_line { + my $line = $_[0]; + + return if (parse_if_line($line)); + + if (scalar(@rept_lines) == 0) { + if (/\.macro/) { + $macro_level++; + if ($macro_level > 1 && !$current_macro) { + die "nested macros but we don't have master macro"; + } + } elsif (/\.endm/) { + $macro_level--; + if ($macro_level < 0) { + die "unmatched .endm"; + } elsif ($macro_level == 0) { + $current_macro = ''; + return; + } + } + } + + if ($macro_level == 0) { + if ($line =~ /\.(rept|irp)/) { + $rept_level++; + } elsif ($line =~ /.endr/) { + $rept_level--; + } + } + + if ($macro_level > 1) { + push(@{$macro_lines{$current_macro}}, $line); + } elsif (scalar(@rept_lines) and $rept_level >= 1) { + push(@rept_lines, $line); + } elsif ($macro_level == 0) { + expand_macros($line); + } else { + if ($line =~ /\.macro\s+([\d\w\.]+)\s*,?\s*(.*)/) { + $current_macro = $1; + + # commas in the argument list are optional, so only use whitespace as the separator + my $arglist = $2; + $arglist =~ s/,/ /g; + + my @args = split(/\s+/, $arglist); + foreach my $i (0 .. $#args) { + my @argpair = split(/=/, $args[$i]); + $macro_args{$current_macro}[$i] = $argpair[0]; + $argpair[0] =~ s/:vararg$//; + $macro_args_default{$current_macro}{$argpair[0]} = $argpair[1]; + } + # ensure %macro_lines has the macro name added as a key + $macro_lines{$current_macro} = []; + + } elsif ($current_macro) { + push(@{$macro_lines{$current_macro}}, $line); + } else { + die "macro level without a macro name"; + } + } +} + +sub handle_set { + my $line = $_[0]; + if ($line =~ /\.(?:set|equ)\s+(\S*)\s*,\s*(.*)/) { + $symbols{$1} = eval_expr($2); + return 1; + } + return 0; +} + +sub expand_macros { + my $line = $_[0]; + + # handle .if directives; apple's assembler doesn't support important non-basic ones + # evaluating them is also needed to handle recursive macros + if (handle_if($line)) { + return; + } + + if (/\.purgem\s+([\d\w\.]+)/) { + delete $macro_lines{$1}; + delete $macro_args{$1}; + delete $macro_args_default{$1}; + return; + } + + if ($line =~ /\.altmacro/) { + $altmacro = 1; + return; + } + + if ($line =~ /\.noaltmacro/) { + $altmacro = 0; + return; + } + + $line =~ s/\%([^,]*)/eval_expr($1)/eg if $altmacro; + + # Strip out the .set lines from the armasm output + return if (handle_set($line) and $as_type eq "armasm"); + + if ($line =~ /\.rept\s+(.*)/) { + $num_repts = $1; + @rept_lines = ("\n"); + + # handle the possibility of repeating another directive on the same line + # .endr on the same line is not valid, I don't know if a non-directive is + if ($num_repts =~ s/(\.\w+.*)//) { + push(@rept_lines, "$1\n"); + } + $num_repts = eval_expr($num_repts); + } elsif ($line =~ /\.irp\s+([\d\w\.]+)\s*(.*)/) { + $in_irp = 1; + $num_repts = 1; + @rept_lines = ("\n"); + $irp_param = $1; + + # only use whitespace as the separator + my $irp_arglist = $2; + $irp_arglist =~ s/,/ /g; + $irp_arglist =~ s/^\s+//; + @irp_args = split(/\s+/, $irp_arglist); + } elsif ($line =~ /\.irpc\s+([\d\w\.]+)\s*(.*)/) { + $in_irp = 1; + $num_repts = 1; + @rept_lines = ("\n"); + $irp_param = $1; + + my $irp_arglist = $2; + $irp_arglist =~ s/,/ /g; + $irp_arglist =~ s/^\s+//; + @irp_args = split(//, $irp_arglist); + } elsif ($line =~ /\.endr/) { + my @prev_rept_lines = @rept_lines; + my $prev_in_irp = $in_irp; + my @prev_irp_args = @irp_args; + my $prev_irp_param = $irp_param; + my $prev_num_repts = $num_repts; + @rept_lines = (); + $in_irp = 0; + @irp_args = ''; + + if ($prev_in_irp != 0) { + foreach my $i (@prev_irp_args) { + foreach my $origline (@prev_rept_lines) { + my $line = $origline; + $line =~ s/\\$prev_irp_param/$i/g; + $line =~ s/\\\(\)//g; # remove \() + parse_line($line); + } + } + } else { + for (1 .. $prev_num_repts) { + foreach my $origline (@prev_rept_lines) { + my $line = $origline; + parse_line($line); + } + } + } + } elsif ($line =~ /(\S+:|)\s*([\w\d\.]+)\s*(.*)/ && exists $macro_lines{$2}) { + handle_serialized_line($1); + my $macro = $2; + + # commas are optional here too, but are syntactically important because + # parameters can be blank + my @arglist = split(/,/, $3); + my @args; + my @args_seperator; + + my $comma_sep_required = 0; + foreach (@arglist) { + # allow arithmetic/shift operators in macro arguments + $_ =~ s/\s*(\+|-|\*|\/|<<|>>|<|>)\s*/$1/g; + + my @whitespace_split = split(/\s+/, $_); + if (!@whitespace_split) { + push(@args, ''); + push(@args_seperator, ''); + } else { + foreach (@whitespace_split) { + #print ("arglist = \"$_\"\n"); + if (length($_)) { + push(@args, $_); + my $sep = $comma_sep_required ? "," : " "; + push(@args_seperator, $sep); + #print ("sep = \"$sep\", arg = \"$_\"\n"); + $comma_sep_required = 0; + } + } + } + + $comma_sep_required = 1; + } + + my %replacements; + if ($macro_args_default{$macro}){ + %replacements = %{$macro_args_default{$macro}}; + } + + # construct hashtable of text to replace + foreach my $i (0 .. $#args) { + my $argname = $macro_args{$macro}[$i]; + my @macro_args = @{ $macro_args{$macro} }; + if ($args[$i] =~ m/=/) { + # arg=val references the argument name + # XXX: I'm not sure what the expected behaviour if a lot of + # these are mixed with unnamed args + my @named_arg = split(/=/, $args[$i]); + $replacements{$named_arg[0]} = $named_arg[1]; + } elsif ($i > $#{$macro_args{$macro}}) { + # more args given than the macro has named args + # XXX: is vararg allowed on arguments before the last? + $argname = $macro_args{$macro}[-1]; + if ($argname =~ s/:vararg$//) { + #print "macro = $macro, args[$i] = $args[$i], args_seperator=@args_seperator, argname = $argname, arglist[$i] = $arglist[$i], arglist = @arglist, args=@args, macro_args=@macro_args\n"; + #$replacements{$argname} .= ", $args[$i]"; + $replacements{$argname} .= "$args_seperator[$i] $args[$i]"; + } else { + die "Too many arguments to macro $macro"; + } + } else { + $argname =~ s/:vararg$//; + $replacements{$argname} = $args[$i]; + } + } + + my $count = $macro_count++; + + # apply replacements as regex + foreach (@{$macro_lines{$macro}}) { + my $macro_line = $_; + # do replacements by longest first, this avoids wrong replacement + # when argument names are subsets of each other + foreach (reverse sort {length $a <=> length $b} keys %replacements) { + $macro_line =~ s/\\$_/$replacements{$_}/g; + } + if ($altmacro) { + foreach (reverse sort {length $a <=> length $b} keys %replacements) { + $macro_line =~ s/\b$_\b/$replacements{$_}/g; + } + } + $macro_line =~ s/\\\@/$count/g; + $macro_line =~ s/\\\(\)//g; # remove \() + parse_line($macro_line); + } + } else { + handle_serialized_line($line); + } +} + +sub is_arm_register { + my $name = $_[0]; + if ($name eq "lr" or + $name eq "ip" or + $name =~ /^[rav]\d+$/) { + return 1; + } + return 0; +} + +sub handle_local_label { + my $line = $_[0]; + my $num = $_[1]; + my $dir = $_[2]; + my $target = "$num$dir"; + if ($dir eq "b") { + $line =~ s/$target/$last_temp_labels{$num}/g; + } else { + my $name = "temp_label_$temp_label_next"; + $temp_label_next++; + push(@{$next_temp_labels{$num}}, $name); + $line =~ s/$target/$name/g; + } + return $line; +} + +sub handle_serialized_line { + my $line = $_[0]; + + # handle .previous (only with regard to .section not .subsection) + if ($line =~ /\.(section|text|const_data)/) { + push(@sections, $line); + } elsif ($line =~ /\.previous/) { + if (!$sections[-2]) { + die ".previous without a previous section"; + } + $line = $sections[-2]; + push(@sections, $line); + } + + $thumb = 1 if $line =~ /\.code\s+16|\.thumb/; + $thumb = 0 if $line =~ /\.code\s+32|\.arm/; + + # handle ldr , = + if ($line =~ /(.*)\s*ldr([\w\s\d]+)\s*,\s*=(.*)/ and $as_type ne "armasm") { + my $label = $literal_labels{$3}; + if (!$label) { + $label = "Literal_$literal_num"; + $literal_num++; + $literal_labels{$3} = $label; + } + $line = "$1 ldr$2, $label\n"; + } elsif ($line =~ /\.ltorg/ and $as_type ne "armasm") { + $line .= ".align 2\n"; + foreach my $literal (keys %literal_labels) { + $line .= "$literal_labels{$literal}:\n $literal_expr $literal\n"; + } + %literal_labels = (); + } + + # handle GNU as pc-relative relocations for adrp/add + if ($line =~ /(.*)\s*adrp([\w\s\d]+)\s*,\s*#?:pg_hi21:([^\s]+)/) { + $line = "$1 adrp$2, ${3}\@PAGE\n"; + } elsif ($line =~ /(.*)\s*add([\w\s\d]+)\s*,([\w\s\d]+)\s*,\s*#?:lo12:([^\s]+)/) { + $line = "$1 add$2, $3, ${4}\@PAGEOFF\n"; + } + + # thumb add with large immediate needs explicit add.w + if ($thumb and $line =~ /add\s+.*#([^@]+)/) { + $line =~ s/add/add.w/ if eval_expr($1) > 255; + } + + # mach-o local symbol names start with L (no dot) + $line =~ s/(? with ic as conditional code + if ($cond =~ /|$arm_cond_codes/) { + if (exists $thumb_labels{$label}) { + print ASMFILE ".thumb_func $label\n"; + } else { + $call_targets{$label}++; + } + } + } + + # @l -> lo16() @ha -> ha16() + $line =~ s/,\s+([^,]+)\@l\b/, lo16($1)/g; + $line =~ s/,\s+([^,]+)\@ha\b/, ha16($1)/g; + + # move to/from SPR + if ($line =~ /(\s+)(m[ft])([a-z]+)\s+(\w+)/ and exists $ppc_spr{$3}) { + if ($2 eq 'mt') { + $line = "$1${2}spr $ppc_spr{$3}, $4\n"; + } else { + $line = "$1${2}spr $4, $ppc_spr{$3}\n"; + } + } + + if ($line =~ /\.unreq\s+(.*)/) { + if (defined $neon_alias_reg{$1}) { + delete $neon_alias_reg{$1}; + delete $neon_alias_type{$1}; + return; + } elsif (defined $aarch64_req_alias{$1}) { + delete $aarch64_req_alias{$1}; + return; + } + } + # old gas versions store upper and lower case names on .req, + # but they remove only one on .unreq + if ($fix_unreq) { + if ($line =~ /\.unreq\s+(.*)/) { + $line = ".unreq " . lc($1) . "\n"; + $line .= ".unreq " . uc($1) . "\n"; + } + } + + if ($line =~ /(\w+)\s+\.(dn|qn)\s+(\w+)(?:\.(\w+))?(\[\d+\])?/) { + $neon_alias_reg{$1} = "$3$5"; + $neon_alias_type{$1} = $4; + return; + } + if (scalar keys %neon_alias_reg > 0 && $line =~ /^\s+v\w+/) { + # This line seems to possibly have a neon instruction + foreach (keys %neon_alias_reg) { + my $alias = $_; + # Require the register alias to match as an invididual word, not as a substring + # of a larger word-token. + if ($line =~ /\b$alias\b/) { + $line =~ s/\b$alias\b/$neon_alias_reg{$alias}/g; + # Add the type suffix. If multiple aliases match on the same line, + # only do this replacement the first time (a vfoo.bar string won't match v\w+). + $line =~ s/^(\s+)(v\w+)(\s+)/$1$2.$neon_alias_type{$alias}$3/; + } + } + } + + if ($arch eq "aarch64" or $as_type eq "armasm") { + # clang's integrated aarch64 assembler in Xcode 5 does not support .req/.unreq + if ($line =~ /\b(\w+)\s+\.req\s+(\w+)\b/) { + $aarch64_req_alias{$1} = $2; + return; + } + foreach (keys %aarch64_req_alias) { + my $alias = $_; + # recursively resolve aliases + my $resolved = $aarch64_req_alias{$alias}; + while (defined $aarch64_req_alias{$resolved}) { + $resolved = $aarch64_req_alias{$resolved}; + } + $line =~ s/\b$alias\b/$resolved/g; + } + } + if ($arch eq "aarch64") { + # fix missing aarch64 instructions in Xcode 5.1 (beta3) + # mov with vector arguments is not supported, use alias orr instead + if ($line =~ /^\s*mov\s+(v\d[\.{}\[\]\w]+),\s*(v\d[\.{}\[\]\w]+)\b\s*$/) { + $line = " orr $1, $2, $2\n"; + } + # movi 16, 32 bit shifted variant, shift is optional + if ($line =~ /^\s*movi\s+(v[0-3]?\d\.(?:2|4|8)[hsHS])\s*,\s*(#\w+)\b\s*$/) { + $line = " movi $1, $2, lsl #0\n"; + } + # Xcode 5 misses the alias uxtl. Replace it with the more general ushll. + # Clang 3.4 misses the alias sxtl too. Replace it with the more general sshll. + if ($line =~ /^\s*(s|u)xtl(2)?\s+(v[0-3]?\d\.[248][hsdHSD])\s*,\s*(v[0-3]?\d\.(?:2|4|8|16)[bhsBHS])\b\s*$/) { + $line = " $1shll$2 $3, $4, #0\n"; + } + # clang 3.4 does not automatically use shifted immediates in add/sub + if ($as_type eq "clang" and + $line =~ /^(\s*(?:add|sub)s?) ([^#l]+)#([\d\+\-\*\/ <>]+)\s*$/) { + my $imm = eval $3; + if ($imm > 4095 and not ($imm & 4095)) { + $line = "$1 $2#" . ($imm >> 12) . ", lsl #12\n"; + } + } + if ($ENV{GASPP_FIX_XCODE5}) { + if ($line =~ /^\s*bsl\b/) { + $line =~ s/\b(bsl)(\s+v[0-3]?\d\.(\w+))\b/$1.$3$2/; + $line =~ s/\b(v[0-3]?\d)\.$3\b/$1/g; + } + if ($line =~ /^\s*saddl2?\b/) { + $line =~ s/\b(saddl2?)(\s+v[0-3]?\d\.(\w+))\b/$1.$3$2/; + $line =~ s/\b(v[0-3]?\d)\.\w+\b/$1/g; + } + if ($line =~ /^\s*dup\b.*\]$/) { + $line =~ s/\bdup(\s+v[0-3]?\d)\.(\w+)\b/dup.$2$1/g; + $line =~ s/\b(v[0-3]?\d)\.[bhsdBHSD](\[\d\])$/$1$2/g; + } + } + } + + if ($as_type eq "armasm") { + # Also replace variables set by .set + foreach (keys %symbols) { + my $sym = $_; + $line =~ s/\b$sym\b/$symbols{$sym}/g; + } + + # Handle function declarations and keep track of the declared labels + if ($line =~ s/^\s*\.func\s+(\w+)/$1 PROC/) { + $labels_seen{$1} = 1; + } + + if ($line =~ s/^\s*(\d+)://) { + # Convert local labels into unique labels. armasm (at least in + # RVCT) has something similar, but still different enough. + # By converting to unique labels we avoid any possible + # incompatibilities. + + my $num = $1; + foreach (@{$next_temp_labels{$num}}) { + $line = "$_\n" . $line; + } + @next_temp_labels{$num} = (); + my $name = "temp_label_$temp_label_next"; + $temp_label_next++; + # The matching regexp above removes the label from the start of + # the line (which might contain an instruction as well), readd + # it on a separate line above it. + $line = "$name:\n" . $line; + $last_temp_labels{$num} = $name; + } + + if ($line =~ s/^(\w+):/$1/) { + # Skip labels that have already been declared with a PROC, + # labels must not be declared multiple times. + return if (defined $labels_seen{$1}); + $labels_seen{$1} = 1; + } elsif ($line !~ /(\w+) PROC/) { + # If not a label, make sure the line starts with whitespace, + # otherwise ms armasm interprets it incorrectly. + $line =~ s/^[\.\w]/\t$&/; + } + + + # Check branch instructions + if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?(..)?(\.w)?)\s+(\w+)/) { + my $instr = $2; + my $cond = $3; + my $width = $4; + my $target = $5; + # Don't interpret e.g. bic as b with ic as conditional code + if ($cond !~ /|$arm_cond_codes/) { + # Not actually a branch + } elsif ($target =~ /^(\d+)([bf])$/) { + # The target is a local label + $line = handle_local_label($line, $1, $2); + $line =~ s/\b$instr\b/$&.w/ if $width eq ""; + } elsif (!is_arm_register($target)) { + $call_targets{$target}++; + } + } elsif ($line =~ /^\s*.h?word.*\b\d+[bf]\b/) { + while ($line =~ /\b(\d+)([bf])\b/g) { + $line = handle_local_label($line, $1, $2); + } + } + + # ALIGN in armasm syntax is the actual number of bytes + if ($line =~ /\.(?:p2)?align\s+(\d+)/) { + my $align = 1 << $1; + $line =~ s/\.(?:p2)?align\s(\d+)/ALIGN $align/; + } + # Convert gas style [r0, :128] into armasm [r0@128] alignment specification + $line =~ s/\[([^\[,]+),?\s*:(\d+)\]/[$1\@$2]/g; + + # armasm treats logical values {TRUE} and {FALSE} separately from + # numeric values - logical operators and values can't be intermixed + # with numerical values. Evaluate ! and (a <> b) into numbers, + # let the assembler evaluate the rest of the expressions. This current + # only works for cases when ! and <> are used with actual constant numbers, + # we don't evaluate subexpressions here. + + # Evaluate ! + while ($line =~ /!\s*(\d+)/g) { + my $val = ($1 != 0) ? 0 : 1; + $line =~ s/!(\d+)/$val/; + } + # Evaluate (a > b) + while ($line =~ /\(\s*(\d+)\s*([<>])\s*(\d+)\s*\)/) { + my $val; + if ($2 eq "<") { + $val = ($1 < $3) ? 1 : 0; + } else { + $val = ($1 > $3) ? 1 : 0; + } + $line =~ s/\(\s*(\d+)\s*([<>])\s*(\d+)\s*\)/$val/; + } + + # Change a movw... #:lower16: into a mov32 pseudoinstruction + $line =~ s/^(\s*)movw(\s+\w+\s*,\s*)\#:lower16:(.*)$/$1mov32$2$3/; + # and remove the following, matching movt completely + $line =~ s/^\s*movt\s+\w+\s*,\s*\#:upper16:.*$//; + + if ($line =~ /^\s*mov32\s+\w+,\s*([a-zA-Z]\w*)/) { + $mov32_targets{$1}++; + } + + # Misc bugs/deficiencies: + # armasm seems unable to parse e.g. "vmov s0, s1" without a type + # qualifier, thus add .f32. + $line =~ s/^(\s+(?:vmov|vadd))(\s+s\d+\s*,\s*s\d+)/$1.f32$2/; + # armasm is unable to parse &0x - add spacing + $line =~ s/&0x/& 0x/g; + } + + if ($force_thumb) { + # Convert register post indexing to a separate add instruction. + # This converts e.g. "ldr r0, [r1], r2" into "ldr r0, [r1]", + # "add r1, r1, r2". + $line =~ s/((?:ldr|str)[bh]?)\s+(\w+),\s*\[(\w+)\],\s*(\w+)/$1 $2, [$3]\n\tadd $3, $3, $4/g; + + # Convert "mov pc, lr" into "bx lr", since the former only works + # for switching from arm to thumb (and only in armv7), but not + # from thumb to arm. + s/mov\s*pc\s*,\s*lr/bx lr/g; + + # Convert stmdb/ldmia/stmfd/ldmfd/ldm with only one register into a plain str/ldr with post-increment/decrement. + # Wide thumb2 encoding requires at least two registers in register list while all other encodings support one register too. + $line =~ s/stm(?:db|fd)\s+sp!\s*,\s*\{([^,-]+)\}/str $1, [sp, #-4]!/g; + $line =~ s/ldm(?:ia|fd)?\s+sp!\s*,\s*\{([^,-]+)\}/ldr $1, [sp], #4/g; + + $line =~ s/\.arm/.thumb/x; + } + + # comment out unsupported directives + $line =~ s/\.type/$comm$&/x if $as_type =~ /^(apple-|armasm)/; + $line =~ s/\.func/$comm$&/x if $as_type =~ /^(apple-|clang)/; + $line =~ s/\.endfunc/$comm$&/x if $as_type =~ /^(apple-|clang)/; + $line =~ s/\.endfunc/ENDP/x if $as_type =~ /armasm/; + $line =~ s/\.ltorg/$comm$&/x if $as_type =~ /^(apple-|clang)/; + $line =~ s/\.ltorg/LTORG/x if $as_type eq "armasm"; + $line =~ s/\.size/$comm$&/x if $as_type =~ /^(apple-|armasm)/; + $line =~ s/\.fpu/$comm$&/x if $as_type =~ /^(apple-|armasm)/; + $line =~ s/\.arch/$comm$&/x if $as_type =~ /^(apple-|clang|armasm)/; + $line =~ s/\.object_arch/$comm$&/x if $as_type =~ /^(apple-|armasm)/; + $line =~ s/.section\s+.note.GNU-stack.*/$comm$&/x if $as_type =~ /^(apple-|armasm)/; + + $line =~ s/\.syntax/$comm$&/x if $as_type =~ /armasm/; + + $line =~ s/\.hword/.short/x; + + if ($as_type =~ /^apple-/) { + # the syntax for these is a little different + $line =~ s/\.global/.globl/x; + # also catch .section .rodata since the equivalent to .const_data is .section __DATA,__const + $line =~ s/(.*)\.rodata/.const_data/x; + $line =~ s/\.int/.long/x; + $line =~ s/\.float/.single/x; + } + if ($as_type eq "apple-gas") { + $line =~ s/vmrs\s+APSR_nzcv/fmrx r15/x; + } + if ($as_type eq "armasm") { + $line =~ s/\.global/EXPORT/x; + $line =~ s/\.int/dcd/x; + $line =~ s/\.long/dcd/x; + $line =~ s/\.float/dcfs/x; + $line =~ s/\.word/dcd/x; + $line =~ s/\.short/dcw/x; + $line =~ s/\.byte/dcb/x; + $line =~ s/\.quad/dcq/x; + $line =~ s/\.ascii/dcb/x; + $line =~ s/\.asciz(.*)$/dcb\1,0/x; + $line =~ s/\.thumb/THUMB/x; + $line =~ s/\.arm/ARM/x; + # The alignment in AREA is the power of two, just as .align in gas + $line =~ s/\.text/AREA |.text|, CODE, READONLY, ALIGN=4, CODEALIGN/; + $line =~ s/(\s*)(.*)\.rodata/$1AREA |.rodata|, DATA, READONLY, ALIGN=5/; + $line =~ s/\.data/AREA |.data|, DATA, ALIGN=5/; + + $line =~ s/fmxr/vmsr/; + $line =~ s/fmrx/vmrs/; + $line =~ s/fadds/vadd.f32/; + } + + # catch unknown section names that aren't mach-o style (with a comma) + if ($as_type =~ /apple-/ and $line =~ /.section ([^,]*)$/) { + die ".section $1 unsupported; figure out the mach-o section name and add it"; + } + + print ASMFILE $line; +} + +if ($as_type ne "armasm") { + print ASMFILE ".text\n"; + print ASMFILE ".align 2\n"; + foreach my $literal (keys %literal_labels) { + print ASMFILE "$literal_labels{$literal}:\n $literal_expr $literal\n"; + } + + map print(ASMFILE ".thumb_func $_\n"), + grep exists $thumb_labels{$_}, keys %call_targets; +} else { + map print(ASMFILE "\tIMPORT $_\n"), + grep ! exists $labels_seen{$_}, (keys %call_targets, keys %mov32_targets); + + print ASMFILE "\tEND\n"; +} + +close(INPUT) or exit 1; +close(ASMFILE) or exit 1; +if ($as_type eq "armasm" and ! defined $ENV{GASPP_DEBUG}) { + system(@gcc_cmd) == 0 or die "Error running assembler"; +} + +END { + unlink($tempfile) if defined $tempfile; +} +#exit 1 diff --git a/res/shaders/glsl/yc2rgb_1f_norm.glsl b/res/shaders/glsl/yc2rgb_1f_norm.glsl new file mode 100644 index 0000000000..a40ecdfcbd --- /dev/null +++ b/res/shaders/glsl/yc2rgb_1f_norm.glsl @@ -0,0 +1,23 @@ +#ifdef GL_ES +precision highp float; +#endif + +uniform sampler2D u_t0; +uniform sampler2D u_t1; +uniform mat4 u_colormtx; +uniform vec4 u_color; + +varying vec2 f_tex0; + +void main() +{ + vec3 rgb; + + rgb = vec3(u_colormtx * vec4(texture2D(u_t0, f_tex0).r, + texture2D(u_t1, f_tex0).r, + texture2D(u_t1, f_tex0).a, + 1)); + + gl_FragColor = vec4(rgb.xyz, u_color.a); +} + diff --git a/res/shaders/glsl/yc2rgb_2f_norm.glsl b/res/shaders/glsl/yc2rgb_2f_norm.glsl new file mode 100644 index 0000000000..00c06cfdea --- /dev/null +++ b/res/shaders/glsl/yc2rgb_2f_norm.glsl @@ -0,0 +1,28 @@ +#ifdef GL_ES +precision highp float; +#endif + +uniform sampler2D u_t0; +uniform sampler2D u_t1; +uniform sampler2D u_t2; +uniform sampler2D u_t3; +uniform mat4 u_colormtx; +uniform vec4 u_color; +uniform float u_blend; + +varying vec2 f_tex0, f_tex1; + +void main() +{ + vec3 rgb1 = vec3(u_colormtx * vec4(texture2D(u_t0, f_tex0).r, + texture2D(u_t1, f_tex0).r, + texture2D(u_t1, f_tex0).a, + 1)); + + vec3 rgb2 = vec3(u_colormtx * vec4(texture2D(u_t2, f_tex1).r, + texture2D(u_t3, f_tex1).r, + texture2D(u_t3, f_tex1).a, + 1)); + + gl_FragColor = vec4(mix(rgb2, rgb1, u_blend), u_color.a); +} diff --git a/res/shaders/glsl/yc2rgb_v.glsl b/res/shaders/glsl/yc2rgb_v.glsl new file mode 100644 index 0000000000..756512cdbf --- /dev/null +++ b/res/shaders/glsl/yc2rgb_v.glsl @@ -0,0 +1,18 @@ +attribute vec4 a_position; +attribute vec4 a_texcoord; +uniform mat4 u_modelview; + +const mat4 projection = mat4(2.414213,0.000000,0.000000,0.000000, + 0.000000,2.414213,0.000000,0.000000, + 0.000000,0.000000,1.033898,-1.000000, + 0.000000,0.000000,2.033898,0.000000); + +varying vec2 f_tex0; +varying vec2 f_tex1; + +void main() +{ + gl_Position = projection * u_modelview * vec4(a_position.xyz, 1); + f_tex0 = vec2(a_texcoord[0], a_texcoord[1]); + f_tex1 = vec2(a_texcoord[2], a_texcoord[3]); +} diff --git a/src/arch/posix/posix_threads.c b/src/arch/posix/posix_threads.c index eec03bad62..3162398d61 100644 --- a/src/arch/posix/posix_threads.c +++ b/src/arch/posix/posix_threads.c @@ -151,7 +151,7 @@ hts_thread_name(char *buf, size_t len) prctl(PR_GET_NAME, tmp, 0, 0, 0); snprintf(buf, len, "%s", tmp); return buf; -#elif defined(APPLE) +#elif defined(__APPLE__) pthread_getname_np(pthread_self(), buf, len); return buf; #else @@ -173,7 +173,7 @@ thread_trampoline(void *aux) long tid = syscall(SYS_gettid); setpriority(PRIO_PROCESS, tid, t->prio); prctl(PR_SET_NAME, t->title, 0, 0, 0); -#elif defined(APPLE) +#elif defined(__APPLE__) pthread_setname_np(t->title); #endif diff --git a/src/htsmsg/persistent_nsuserdefaults.m b/src/htsmsg/persistent_nsuserdefaults.m index 40125830b0..070d030882 100644 --- a/src/htsmsg/persistent_nsuserdefaults.m +++ b/src/htsmsg/persistent_nsuserdefaults.m @@ -51,7 +51,7 @@ NSString *s = [[NSUserDefaults standardUserDefaults] stringForKey:[NSString stringWithUTF8String:k]]; - const char *str = [s cString]; + const char *str = [s UTF8String]; if(str == NULL) return NULL; buf_t *b = buf_create_and_copy(strlen(str), str); diff --git a/src/service.c b/src/service.c index cd625ddb09..5fbd82d275 100644 --- a/src/service.c +++ b/src/service.c @@ -103,11 +103,11 @@ service_init(void) // $global.service.all all_services = prop_create(gs, "all"); - +#if ENABLE_PLUGINS service_create0("showtime:plugin", NULL, _p("Plugins"), "plugin:start", "plugin", NULL, 0, 1, SVC_ORIGIN_SYSTEM); - +#endif service_create0("showtime:discovered", NULL, _p("Local network"), "discovered:", "network", NULL, 0, 1, SVC_ORIGIN_SYSTEM); diff --git a/src/ui/glw/glw_opengl.h b/src/ui/glw/glw_opengl.h index 670e52ea63..aed88d23b2 100644 --- a/src/ui/glw/glw_opengl.h +++ b/src/ui/glw/glw_opengl.h @@ -104,6 +104,8 @@ typedef struct glw_backend_root { struct glw_program *gbr_yuv2rgb_2f; struct glw_program *gbr_rgb2rgb_1f; struct glw_program *gbr_rgb2rgb_2f; + struct glw_program *gbr_yc2rgb_1f; + struct glw_program *gbr_yc2rgb_2f; /** * diff --git a/src/ui/glw/glw_opengl_shaders.c b/src/ui/glw/glw_opengl_shaders.c index 58662b295f..edd31b0feb 100644 --- a/src/ui/glw/glw_opengl_shaders.c +++ b/src/ui/glw/glw_opengl_shaders.c @@ -595,6 +595,25 @@ glw_opengl_shaders_init(glw_root_t *gr) glDeleteShader(fs); glDeleteShader(vs); + // yc2rgb Video renderer + + SHADERPATH("yc2rgb_v.glsl"); + vs = glw_compile_shader(path, GL_VERTEX_SHADER, gr); + + SHADERPATH("yc2rgb_1f_norm.glsl"); + fs = glw_compile_shader(path, GL_FRAGMENT_SHADER, gr); + gbr->gbr_yc2rgb_1f = glw_link_program(gbr, "yc2rgb_1f_norm", vs, fs); + glDeleteShader(fs); + + SHADERPATH("yc2rgb_2f_norm.glsl"); + fs = glw_compile_shader(path, GL_FRAGMENT_SHADER, gr); + gbr->gbr_yc2rgb_2f = glw_link_program(gbr, "yc2rgb_2f_norm", vs, fs); + glDeleteShader(fs); + glDeleteShader(vs); + + + // -------- + gr->gr_be_render_unlocked = render_unlocked; glGenBuffers(1, &gbr->gbr_vbo); diff --git a/src/ui/glw/glw_scroll.c b/src/ui/glw/glw_scroll.c index 5c5c0875f8..38d01acc2e 100644 --- a/src/ui/glw/glw_scroll.c +++ b/src/ui/glw/glw_scroll.c @@ -49,9 +49,10 @@ glw_scroll_handle_pointer_event_filter(glw_scroll_control_t *gs, return 0; case GLW_POINTER_TOUCH_END: - if(fabsf(gs->touch_velocity) > 10) + if(fabsf(gs->touch_velocity) > 10) { gs->kinetic_scroll = gs->touch_velocity; - + glw_schedule_refresh(w->glw_root, 0); + } if(grabbed) gr->gr_pointer_grab_scroll = NULL; return 0; @@ -103,6 +104,10 @@ glw_scroll_handle_pointer_event(glw_scroll_control_t *gs, gs->target_pos = (gpe->y - gs->initial_touch_y) * gs->page_size * 0.5 + gs->initial_pos; + const int max_value = + MAX(0, gs->total_size - gs->page_size + gs->scroll_threshold_post); + gs->target_pos = GLW_CLAMP(gs->target_pos, 0, max_value); + if(abs(gs->target_pos - gs->initial_pos) > 15) { if(gr->gr_pointer_press != NULL) { glw_path_modify(gr->gr_pointer_press, 0, GLW_IN_PRESSED_PATH, NULL); @@ -144,16 +149,19 @@ glw_scroll_layout(glw_scroll_control_t *gsc, glw_t *w, int height) gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value); - } else if(gsc->kinetic_scroll) { + } else if(fabsf(gsc->kinetic_scroll) > 0.5) { gsc->filtered_pos += gsc->kinetic_scroll; - gsc->target_pos = gsc->filtered_pos; + if(gsc->target_pos != gsc->filtered_pos) { + gsc->target_pos = gsc->filtered_pos; + glw_need_refresh(w->glw_root, 0); + } gsc->kinetic_scroll *= 0.95; gsc->bottom_anchored = 0; - gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value); } else { + gsc->kinetic_scroll = 0; if(gsc->bottom_gravity) { diff --git a/src/ui/glw/glw_video_ios.c b/src/ui/glw/glw_video_ios.c new file mode 100644 index 0000000000..2f0849aea7 --- /dev/null +++ b/src/ui/glw/glw_video_ios.c @@ -0,0 +1,438 @@ +/* + * Copyright (C) 2007-2015 Lonelycoder AB + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This program is also available under a commercial proprietary license. + * For more information, contact andreas@lonelycoder.com + */ +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "main.h" +#include "glw_video_common.h" + +#include +#include + +#define NUM_SURFACES 4 + +#include "video/video_decoder.h" +#include "video/video_playback.h" + +typedef struct gvv_aux { + CVOpenGLESTextureCacheRef gvv_tex_cache_ref; +} gvv_aux_t; + + +typedef struct reap_task { + glw_video_reap_task_t hdr; + GLuint tex[2]; +} reap_task_t; + +extern CVEAGLContext ios_get_gles_context(glw_root_t *gr); + +/** + * + */ +static void +do_reap(glw_video_t *gv, reap_task_t *t) +{ + if(t->tex[0] != 0) + glDeleteTextures(2, t->tex); +} + + +/** + * + */ +static void +surface_release_buffers(glw_video_surface_t *gvs) +{ + for(int i = 0; i < 2; i++) { + if(gvs->gvs_data[i] != NULL) { + CFRelease(gvs->gvs_data[i]); + printf("CF release on texture %p\n", gvs->gvs_data[i]); + gvs->gvs_data[i] = NULL; + } + } + if(gvs->gvs_opaque != NULL) { + CFRelease(gvs->gvs_opaque); + printf("CF release on src image %p\n", gvs->gvs_opaque); + gvs->gvs_opaque = NULL; + } +} + + +/** + * + */ +static void +surface_reset(glw_video_t *gv, glw_video_surface_t *gvs) +{ + reap_task_t *t = glw_video_add_reap_task(gv, sizeof(reap_task_t), do_reap); + t->tex[0] = gvs->gvs_texture.textures[0]; + t->tex[1] = gvs->gvs_texture.textures[1]; + surface_release_buffers(gvs); +} + + +/** + * + */ +static void +gvv_reset(glw_video_t *gv) +{ + for(int i = 0; i < GLW_VIDEO_MAX_SURFACES; i++) + surface_reset(gv, &gv->gv_surfaces[i]); + + gvv_aux_t *gvv = gv->gv_aux; + + if(gvv == NULL) + return; + + gv->gv_aux = NULL; + + CFRelease(gvv->gvv_tex_cache_ref); + free(gvv); +} + + +/** + * + */ +static void +surface_init(glw_video_t *gv, glw_video_surface_t *gvs) +{ + TAILQ_INSERT_TAIL(&gv->gv_avail_queue, gvs, gvs_link); + hts_cond_signal(&gv->gv_avail_queue_cond); +} + +/** + * + */ +static void +make_surfaces_available(glw_video_t *gv) +{ + for(int i = 0; i < NUM_SURFACES; i++) { + glw_video_surface_t *gvs = &gv->gv_surfaces[i]; + TAILQ_INSERT_TAIL(&gv->gv_avail_queue, gvs, gvs_link); + } +} + + +/** + * + */ +static void +surface_release(glw_video_t *gv, glw_video_surface_t *gvs, + struct glw_video_surface_queue *fromqueue) +{ + assert(gvs != gv->gv_sa); + assert(gvs != gv->gv_sb); + + surface_release_buffers(gvs); + + TAILQ_REMOVE(fromqueue, gvs, gvs_link); + + TAILQ_INSERT_TAIL(&gv->gv_avail_queue, gvs, gvs_link); + hts_cond_signal(&gv->gv_avail_queue_cond); +} + + +static void +load_texture(glw_root_t *gr, glw_program_t *gp, void *aux, + const glw_backend_texture_t *b, int num) + +{ + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, b->textures[1]); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, b->textures[0]); +} + + + +static const float cmatrix_ITUR_BT_601[16] = { + 1.164400, 1.164400, 1.164400, 0, + 0.000000, -0.391800, 2.017200, 0, + 1.596000, -0.813000, 0.000000, 0, + -0.874190, 0.531702,-1.085616, 1 +}; + +static const float cmatrix_ITUR_BT_709[16] = { + 1.164400, 1.164400, 1.164400, 0, + 0.000000, -0.213200, 2.112400, 0, + 1.792700, -0.532900, 0.000000, 0, + -0.972926, 0.301453, -1.133402, 1 +}; + +static const float cmatrix_SMPTE_240M[16] = { + 1.164400, 1.164400, 1.164400, 0, + 0.000000, -0.257800, 2.078700, 0, + 1.793900, -0.542500, 0.000000, 0, + -0.973528, 0.328659, -1.116486, 1 +}; + + + +/** + * + */ +static void +gv_color_matrix_set(glw_video_t *gv, const struct frame_info *fi) +{ + const float *f; + + switch(fi->fi_color_space) { + case COLOR_SPACE_BT_709: + f = cmatrix_ITUR_BT_709; + break; + + case COLOR_SPACE_BT_601: + f = cmatrix_ITUR_BT_601; + break; + + case COLOR_SPACE_SMPTE_240M: + f = cmatrix_SMPTE_240M; + break; + + default: + f = fi->fi_height < 720 ? cmatrix_ITUR_BT_601 : cmatrix_ITUR_BT_709; + break; + } + + memcpy(gv->gv_cmatrix_tgt, f, sizeof(float) * 16); +} + + +static void +gv_color_matrix_update(glw_video_t *gv) +{ + int i; + for(i = 0; i < 16; i++) + gv->gv_cmatrix_cur[i] = (gv->gv_cmatrix_cur[i] * 3.0f + + gv->gv_cmatrix_tgt[i]) / 4.0f; +} + + +/** + * + */ +static int +gvv_init(glw_video_t *gv) +{ + glw_root_t *gr = gv->w.glw_root; + + gvv_aux_t *gvv = calloc(1, sizeof(gvv_aux_t)); + gv->gv_aux = gvv; + + gv->gv_gpa.gpa_aux = gv; + gv->gv_gpa.gpa_load_uniforms = glw_video_opengl_load_uniforms; + gv->gv_gpa.gpa_load_texture = load_texture; + + CVOpenGLESTextureCacheCreate(NULL, NULL, gr->gr_private, NULL, &gvv->gvv_tex_cache_ref); + + TRACE(TRACE_DEBUG, "GLW", "Using zero copy video renderer"); + + make_surfaces_available(gv); + return 0; +} + + + +/** + * + */ +static int64_t +gvv_newframe(glw_video_t *gv, video_decoder_t *vd, int flags) +{ + hts_mutex_assert(&gv->gv_surface_mutex); + + glw_video_surface_t *gvs; + + while((gvs = TAILQ_FIRST(&gv->gv_parked_queue)) != NULL) { + TAILQ_REMOVE(&gv->gv_parked_queue, gvs, gvs_link); + surface_init(gv, gvs); + } + + glw_need_refresh(gv->w.glw_root, 0); + gv_color_matrix_update(gv); + + return glw_video_newframe_blend(gv, vd, flags, &surface_release, 0); +} + + +/** + * + */ +static void +upload_texture(glw_video_t *gv, glw_video_surface_t *gvs) +{ + CVReturn r; + gvv_aux_t *gvv = gv->gv_aux; + if(gvs->gvs_opaque == NULL) + return; + + + CVOpenGLESTextureCacheFlush(gvv->gvv_tex_cache_ref, 0); + + CVImageBufferRef img = gvs->gvs_opaque; + + + r = CVOpenGLESTextureCacheCreateTextureFromImage(NULL, + gvv->gvv_tex_cache_ref, + img, + NULL, + GL_TEXTURE_2D, GL_LUMINANCE, + gvs->gvs_width[0], gvs->gvs_height[0], + GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, + (CVOpenGLESTextureRef *)&gvs->gvs_data[0]); + + if(r) { + printf("fail %d\n", r); + return; + } + + r = CVOpenGLESTextureCacheCreateTextureFromImage(NULL, + gvv->gvv_tex_cache_ref, + img, + NULL, + GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, + gvs->gvs_width[1], gvs->gvs_height[1], + GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, + (CVOpenGLESTextureRef *)&gvs->gvs_data[1]); + + if(r) { + printf("fail %d\n", r); + return; + } + + gvs->gvs_texture.gltype = GL_TEXTURE_2D; + gvs->gvs_texture.textures[0] = CVOpenGLESTextureGetName(gvs->gvs_data[0]); + gvs->gvs_texture.textures[1] = CVOpenGLESTextureGetName(gvs->gvs_data[1]); + + printf("Textures %d %d\n", gvs->gvs_texture.textures[0], gvs->gvs_texture.textures[1]); + + glBindTexture(GL_TEXTURE_2D, gvs->gvs_texture.textures[0]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glBindTexture(GL_TEXTURE_2D, gvs->gvs_texture.textures[1]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + + + + gvs->gvs_texture.width = gvs->gvs_width[0]; + gvs->gvs_texture.height = gvs->gvs_height[0]; + + CFRelease(gvs->gvs_opaque); + gvs->gvs_opaque = NULL; +} + + +/** + * + */ +static void +gvv_render(glw_video_t *gv, glw_rctx_t *rc) +{ + glw_video_surface_t *sa = gv->gv_sa; + glw_video_surface_t *sb = NULL; + glw_root_t *gr = gv->w.glw_root; + glw_program_t *gp; + glw_backend_root_t *gbr = &gr->gr_be; + + if(sa == NULL) + return; + + gv->gv_width = sa->gvs_width[0]; + gv->gv_height = sa->gvs_height[0]; + + upload_texture(gv, sa); + + glw_renderer_vtx_st(&gv->gv_quad, 0, 0, 1); + glw_renderer_vtx_st(&gv->gv_quad, 1, 1, 1); + glw_renderer_vtx_st(&gv->gv_quad, 2, 1, 0); + glw_renderer_vtx_st(&gv->gv_quad, 3, 0, 0); + + gp = gbr->gbr_yc2rgb_1f; + gv->gv_gpa.gpa_prog = gp; + + glw_renderer_draw(&gv->gv_quad, gr, rc, + &sa->gvs_texture, + sb != NULL ? &sb->gvs_texture : NULL, + NULL, NULL, + rc->rc_alpha * gv->w.glw_alpha, 0, &gv->gv_gpa); +} + +/** + * + */ +static int +gvv_deliver(const frame_info_t *fi, glw_video_t *gv, glw_video_engine_t *gve) +{ + CVImageBufferRef img = (CVImageBufferRef)fi->fi_data[0]; + glw_video_surface_t *s; + + glw_video_configure(gv, gve); + + if((s = glw_video_get_surface(gv, NULL, NULL)) == NULL) + return -1; + + gv_color_matrix_set(gv, fi); + + assert(s->gvs_opaque == NULL); + + CFRetain(img); + s->gvs_opaque = img; + s->gvs_width[0] = fi->fi_width; + s->gvs_height[0] = fi->fi_height; + s->gvs_width[1] = fi->fi_width >> 1; + s->gvs_height[1] = fi->fi_height >> 1; + s->gvs_width[2] = fi->fi_width >> 1; + s->gvs_height[2] = fi->fi_height >> 1; + glw_video_put_surface(gv, s, fi->fi_pts, fi->fi_epoch, fi->fi_duration, 0, 0); + return 0; +} + + +/** + * + */ +static glw_video_engine_t glw_video_cvpb = { + .gve_type = 'CVPB', + .gve_init_on_ui_thread = 1, + .gve_newframe = gvv_newframe, + .gve_render = gvv_render, + .gve_reset = gvv_reset, + .gve_init = gvv_init, + .gve_deliver = gvv_deliver, +}; + +GLW_REGISTER_GVE(glw_video_cvpb); diff --git a/src/video/vtb.c b/src/video/vtb.c index fb7cebe8d4..86260ddff6 100644 --- a/src/video/vtb.c +++ b/src/video/vtb.c @@ -59,6 +59,7 @@ typedef struct vtb_decoder { int64_t vtbd_flush_to; int64_t vtbd_last_pts; int vtbd_estimated_duration; + int vtbd_pixel_format; } vtb_decoder_t; @@ -124,32 +125,34 @@ emit_frame(vtb_decoder_t *vtbd, vtb_frame_t *vf, media_queue_t *mq) video_decoder_t *vd = vtbd->vtbd_vd; vd->vd_estimated_duration = fi.fi_duration; // For bitrate calculations -#if 0 - if(vtbd->vtbd_zero_copy) { - fi.fi_type = 'VTB'; - fi.fi_data[0] = (void *)vf->vf_buf; - if(fi.fi_duration > 0) - video_deliver_frame(vd, &fi); - } else { -#endif - - fi.fi_type = 'YUVP'; - - CVPixelBufferLockBaseAddress(vf->vf_buf, 0); - - for(int i = 0; i < 3; i++ ) { - fi.fi_data[i] = CVPixelBufferGetBaseAddressOfPlane(vf->vf_buf, i); - fi.fi_pitch[i] = CVPixelBufferGetBytesPerRowOfPlane(vf->vf_buf, i); - } - - - if(fi.fi_duration > 0) - video_deliver_frame(vd, &fi); - - CVPixelBufferUnlockBaseAddress(vf->vf_buf, 0); + switch(vtbd->vtbd_pixel_format) { + case kCVPixelFormatType_420YpCbCr8Planar: + fi.fi_type = 'YUVP'; + + CVPixelBufferLockBaseAddress(vf->vf_buf, 0); + + for(int i = 0; i < 3; i++ ) { + fi.fi_data[i] = CVPixelBufferGetBaseAddressOfPlane(vf->vf_buf, i); + fi.fi_pitch[i] = CVPixelBufferGetBytesPerRowOfPlane(vf->vf_buf, i); + } + + if(fi.fi_duration > 0) + video_deliver_frame(vd, &fi); + + CVPixelBufferUnlockBaseAddress(vf->vf_buf, 0); + break; + + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange: + fi.fi_type = 'CVPB'; + fi.fi_data[0] = (void *)vf->vf_buf; + if(fi.fi_duration > 0) + video_deliver_frame(vd, &fi); + break; + } + - // } vtbd->vtbd_last_pts = vf->vf_mbm.mbm_pts; @@ -397,6 +400,7 @@ video_vtb_codec_create(media_codec_t *mc, const media_codec_params_t *mcp, extradata_dict); CFRelease(extradata_dict); +#if !TARGET_OS_IPHONE // Enable and force HW accelration CFDictionarySetValue(config_dict, kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder, @@ -405,7 +409,7 @@ video_vtb_codec_create(media_codec_t *mc, const media_codec_params_t *mcp, CFDictionarySetValue(config_dict, kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder, kCFBooleanTrue); - +#endif CMVideoFormatDescriptionRef fmt; @@ -435,17 +439,30 @@ video_vtb_codec_create(media_codec_t *mc, const media_codec_params_t *mcp, #endif kCFBooleanTrue); - dict_set_int32(surface_dict, - kCVPixelBufferPixelFormatTypeKey, - kCVPixelFormatType_420YpCbCr8Planar); - // kCVPixelFormatType_420YpCbCr8BiPlanarFullRange); + vtb_decoder_t *vtbd = calloc(1, sizeof(vtb_decoder_t)); dict_set_int32(surface_dict, kCVPixelBufferWidthKey, mcp->width); dict_set_int32(surface_dict, kCVPixelBufferHeightKey, mcp->height); - dict_set_int32(surface_dict, kCVPixelBufferBytesPerRowAlignmentKey, - mcp->width << 1); + + if(1) { + vtbd->vtbd_pixel_format = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; + } else { + vtbd->vtbd_pixel_format = kCVPixelFormatType_420YpCbCr8Planar; + } + + dict_set_int32(surface_dict, kCVPixelBufferPixelFormatTypeKey, + vtbd->vtbd_pixel_format); - vtb_decoder_t *vtbd = calloc(1, sizeof(vtb_decoder_t)); + int linewidth = mcp->width; + + switch(vtbd->vtbd_pixel_format) { + case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange: + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + linewidth *= 2; + break; + } + + dict_set_int32(surface_dict, kCVPixelBufferBytesPerRowAlignmentKey, linewidth); VTDecompressionOutputCallbackRecord cb = { .decompressionOutputCallback = picture_out, diff --git a/support/dataroot/osxapp.c b/support/dataroot/osxapp.c new file mode 100644 index 0000000000..fbb4306f6b --- /dev/null +++ b/support/dataroot/osxapp.c @@ -0,0 +1,33 @@ +#include +#include + +static int initialized; +static char buf[1024]; +static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; + + +const char *app_dataroot(void) +{ + if(!initialized) { + CFBundleRef mainBundle; + pthread_mutex_lock(&mtx); + + if(!initialized) { + mainBundle = CFBundleGetMainBundle(); + if(mainBundle == NULL) + abort(); + + CFURLRef url = CFBundleCopyResourcesDirectoryURL(mainBundle); + if(url == NULL) + abort(); + // CFRelease(mainBundle); + + CFURLGetFileSystemRepresentation(url, 1, (uint8_t *)buf, sizeof(buf)); + // CFRelease(url); + } + initialized = 1; + pthread_mutex_unlock(&mtx); + } + return buf; +} +