mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-23 12:44:19 +00:00
fixed a bunch of stuff:
- pairing now exists - hostnames are resolved - video rendering is better - some other stuff I’m forgetting
This commit is contained in:
parent
ef6909da88
commit
45b9f5411e
@ -7,17 +7,12 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
FB05E4BE1896D83700E0CAC7 /* ConnectionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FB05E4BD1896D83700E0CAC7 /* ConnectionHandler.m */; };
|
||||
FB05E4C01899730B00E0CAC7 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB05E4BF1899730B00E0CAC7 /* AdSupport.framework */; };
|
||||
FB05E4C51899EC7F00E0CAC7 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FB05E4C11899E81500E0CAC7 /* libxml2.dylib */; };
|
||||
FB4E9460188BB80700CCC583 /* Connection.m in Sources */ = {isa = PBXBuildFile; fileRef = FB4E945F188BB80700CCC583 /* Connection.m */; };
|
||||
FB4E948B188BCC2900CCC583 /* VideoRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = FB4E948A188BCC2900CCC583 /* VideoRenderer.m */; };
|
||||
FB4E949D188BF49B00CCC583 /* ByteBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E948D188BF49B00CCC583 /* ByteBuffer.c */; };
|
||||
FB4E949E188BF49B00CCC583 /* Config.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E948F188BF49B00CCC583 /* Config.c */; };
|
||||
FB4E949F188BF49B00CCC583 /* ControlStream.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E9490188BF49B00CCC583 /* ControlStream.c */; };
|
||||
FB4E94A0188BF49B00CCC583 /* Handshake.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E9491188BF49B00CCC583 /* Handshake.c */; };
|
||||
FB4E94A1188BF49B00CCC583 /* LinkedBlockingQueue.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E9493188BF49B00CCC583 /* LinkedBlockingQueue.c */; };
|
||||
FB4E94A2188BF49B00CCC583 /* PlatformSockets.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E9496188BF49B00CCC583 /* PlatformSockets.c */; };
|
||||
FB4E94A3188BF49B00CCC583 /* PlatformThreads.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E9498188BF49B00CCC583 /* PlatformThreads.c */; };
|
||||
FB4E94A4188BF49B00CCC583 /* VideoDepacketizer.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E949B188BF49B00CCC583 /* VideoDepacketizer.c */; };
|
||||
FB4E94A5188BF49B00CCC583 /* VideoStream.c in Sources */ = {isa = PBXBuildFile; fileRef = FB4E949C188BF49B00CCC583 /* VideoStream.c */; };
|
||||
FBBC0240188E13A800CEB8E5 /* liblimelight-common.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB4E945C188BB6FA00CCC583 /* liblimelight-common.a */; };
|
||||
FBBC53A5188ACD01004D2BA0 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FBBC53A4188ACD01004D2BA0 /* libz.dylib */; };
|
||||
FBBC53A8188AD1D3004D2BA0 /* StreamFrameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FBBC53A7188AD1D3004D2BA0 /* StreamFrameViewController.m */; };
|
||||
FBBC53AE188AE27D004D2BA0 /* StreamView.m in Sources */ = {isa = PBXBuildFile; fileRef = FBBC53AD188AE27D004D2BA0 /* StreamView.m */; };
|
||||
@ -38,7 +33,6 @@
|
||||
FBC18B2B188A3B9100D5D34E /* MainFrameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FBC18B2A188A3B9100D5D34E /* MainFrameViewController.m */; };
|
||||
FBC18B2F188A4E0500D5D34E /* VideoDepacketizer.m in Sources */ = {isa = PBXBuildFile; fileRef = FBC18B2E188A4E0500D5D34E /* VideoDepacketizer.m */; };
|
||||
FBC18B32188A5A1100D5D34E /* VideoDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = FBC18B31188A5A1100D5D34E /* VideoDecoder.m */; };
|
||||
FBC18B34188A5D6700D5D34E /* notpadded.h264 in Resources */ = {isa = PBXBuildFile; fileRef = FBC18B33188A5D6700D5D34E /* notpadded.h264 */; };
|
||||
FBF6AE75188A274100B50578 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF6AE74188A274100B50578 /* Foundation.framework */; };
|
||||
FBF6AE77188A274100B50578 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF6AE76188A274100B50578 /* CoreGraphics.framework */; };
|
||||
FBF6AE79188A274100B50578 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF6AE78188A274100B50578 /* UIKit.framework */; };
|
||||
@ -66,6 +60,11 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
FB05E4BC1896D83700E0CAC7 /* ConnectionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConnectionHandler.h; sourceTree = "<group>"; };
|
||||
FB05E4BD1896D83700E0CAC7 /* ConnectionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConnectionHandler.m; sourceTree = "<group>"; };
|
||||
FB05E4BF1899730B00E0CAC7 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
|
||||
FB05E4C11899E81500E0CAC7 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
|
||||
FB05E4C31899EC4100E0CAC7 /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = usr/lib/libxml2.2.dylib; sourceTree = SDKROOT; };
|
||||
FB272728188A8A000093CCC9 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../ffmpeg-built/universal/lib/libavcodec.a"; sourceTree = "<group>"; };
|
||||
FB27272A188A8B3C0093CCC9 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "Limelight-iOS/libs/armv7s/lib/libavcodec.a"; sourceTree = "<group>"; };
|
||||
FB27272B188A8B3C0093CCC9 /* libavdevice.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavdevice.a; path = "Limelight-iOS/libs/armv7s/lib/libavdevice.a"; sourceTree = "<group>"; };
|
||||
@ -990,22 +989,6 @@
|
||||
FB4E9487188BC39600CCC583 /* liblimelight-common.a.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; path = "liblimelight-common.a.dSYM"; sourceTree = "<group>"; };
|
||||
FB4E9489188BCC2900CCC583 /* VideoRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoRenderer.h; sourceTree = "<group>"; };
|
||||
FB4E948A188BCC2900CCC583 /* VideoRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoRenderer.m; sourceTree = "<group>"; };
|
||||
FB4E948D188BF49B00CCC583 /* ByteBuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ByteBuffer.c; path = "../limelight-common-c/limelight-common/ByteBuffer.c"; sourceTree = "<group>"; };
|
||||
FB4E948E188BF49B00CCC583 /* ByteBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ByteBuffer.h; path = "../limelight-common-c/limelight-common/ByteBuffer.h"; sourceTree = "<group>"; };
|
||||
FB4E948F188BF49B00CCC583 /* Config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Config.c; path = "../limelight-common-c/limelight-common/Config.c"; sourceTree = "<group>"; };
|
||||
FB4E9490188BF49B00CCC583 /* ControlStream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ControlStream.c; path = "../limelight-common-c/limelight-common/ControlStream.c"; sourceTree = "<group>"; };
|
||||
FB4E9491188BF49B00CCC583 /* Handshake.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Handshake.c; path = "../limelight-common-c/limelight-common/Handshake.c"; sourceTree = "<group>"; };
|
||||
FB4E9492188BF49B00CCC583 /* Limelight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Limelight.h; path = "../limelight-common-c/limelight-common/Limelight.h"; sourceTree = "<group>"; };
|
||||
FB4E9493188BF49B00CCC583 /* LinkedBlockingQueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LinkedBlockingQueue.c; path = "../limelight-common-c/limelight-common/LinkedBlockingQueue.c"; sourceTree = "<group>"; };
|
||||
FB4E9494188BF49B00CCC583 /* LinkedBlockingQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LinkedBlockingQueue.h; path = "../limelight-common-c/limelight-common/LinkedBlockingQueue.h"; sourceTree = "<group>"; };
|
||||
FB4E9495188BF49B00CCC583 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = "../limelight-common-c/limelight-common/Platform.h"; sourceTree = "<group>"; };
|
||||
FB4E9496188BF49B00CCC583 /* PlatformSockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PlatformSockets.c; path = "../limelight-common-c/limelight-common/PlatformSockets.c"; sourceTree = "<group>"; };
|
||||
FB4E9497188BF49B00CCC583 /* PlatformSockets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformSockets.h; path = "../limelight-common-c/limelight-common/PlatformSockets.h"; sourceTree = "<group>"; };
|
||||
FB4E9498188BF49B00CCC583 /* PlatformThreads.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PlatformThreads.c; path = "../limelight-common-c/limelight-common/PlatformThreads.c"; sourceTree = "<group>"; };
|
||||
FB4E9499188BF49B00CCC583 /* PlatformThreads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformThreads.h; path = "../limelight-common-c/limelight-common/PlatformThreads.h"; sourceTree = "<group>"; };
|
||||
FB4E949A188BF49B00CCC583 /* Video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Video.h; path = "../limelight-common-c/limelight-common/Video.h"; sourceTree = "<group>"; };
|
||||
FB4E949B188BF49B00CCC583 /* VideoDepacketizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VideoDepacketizer.c; path = "../limelight-common-c/limelight-common/VideoDepacketizer.c"; sourceTree = "<group>"; };
|
||||
FB4E949C188BF49B00CCC583 /* VideoStream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VideoStream.c; path = "../limelight-common-c/limelight-common/VideoStream.c"; sourceTree = "<group>"; };
|
||||
FBBC52C9188ACA92004D2BA0 /* avcodec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = avcodec.h; sourceTree = "<group>"; };
|
||||
FBBC52CA188ACA92004D2BA0 /* avfft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = avfft.h; sourceTree = "<group>"; };
|
||||
FBBC52CB188ACA92004D2BA0 /* dxva2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dxva2.h; sourceTree = "<group>"; };
|
||||
@ -1230,7 +1213,6 @@
|
||||
FBC18B2E188A4E0500D5D34E /* VideoDepacketizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoDepacketizer.m; path = Video/VideoDepacketizer.m; sourceTree = "<group>"; };
|
||||
FBC18B30188A5A1100D5D34E /* VideoDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoDecoder.h; sourceTree = "<group>"; };
|
||||
FBC18B31188A5A1100D5D34E /* VideoDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoDecoder.m; sourceTree = "<group>"; };
|
||||
FBC18B33188A5D6700D5D34E /* notpadded.h264 */ = {isa = PBXFileReference; lastKnownFileType = file; path = notpadded.h264; sourceTree = "<group>"; };
|
||||
FBF6AE71188A274100B50578 /* Limelight-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Limelight-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FBF6AE74188A274100B50578 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
FBF6AE76188A274100B50578 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
@ -1256,6 +1238,9 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FB05E4C51899EC7F00E0CAC7 /* libxml2.dylib in Frameworks */,
|
||||
FB05E4C01899730B00E0CAC7 /* AdSupport.framework in Frameworks */,
|
||||
FBBC0240188E13A800CEB8E5 /* liblimelight-common.a in Frameworks */,
|
||||
FBBC53A5188ACD01004D2BA0 /* libz.dylib in Frameworks */,
|
||||
FBBC53F9188BA82E004D2BA0 /* libopus.a in Frameworks */,
|
||||
FBBC53F1188BA7FC004D2BA0 /* libavcodec.a in Frameworks */,
|
||||
@ -3528,29 +3513,6 @@
|
||||
path = "../../../Library/Developer/Xcode/DerivedData/limelight-common-c-cfonfottpvhxxcgrusjsydwkdaco/Build/Products/Debug-iphoneos";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FB4E948C188BF48300CCC583 /* Limelight-Common */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FB4E948D188BF49B00CCC583 /* ByteBuffer.c */,
|
||||
FB4E948E188BF49B00CCC583 /* ByteBuffer.h */,
|
||||
FB4E948F188BF49B00CCC583 /* Config.c */,
|
||||
FB4E9490188BF49B00CCC583 /* ControlStream.c */,
|
||||
FB4E9491188BF49B00CCC583 /* Handshake.c */,
|
||||
FB4E9492188BF49B00CCC583 /* Limelight.h */,
|
||||
FB4E9493188BF49B00CCC583 /* LinkedBlockingQueue.c */,
|
||||
FB4E9494188BF49B00CCC583 /* LinkedBlockingQueue.h */,
|
||||
FB4E9495188BF49B00CCC583 /* Platform.h */,
|
||||
FB4E949B188BF49B00CCC583 /* VideoDepacketizer.c */,
|
||||
FB4E9496188BF49B00CCC583 /* PlatformSockets.c */,
|
||||
FB4E9497188BF49B00CCC583 /* PlatformSockets.h */,
|
||||
FB4E9498188BF49B00CCC583 /* PlatformThreads.c */,
|
||||
FB4E9499188BF49B00CCC583 /* PlatformThreads.h */,
|
||||
FB4E949A188BF49B00CCC583 /* Video.h */,
|
||||
FB4E949C188BF49B00CCC583 /* VideoStream.c */,
|
||||
);
|
||||
name = "Limelight-Common";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBBC52C6188ACA92004D2BA0 /* armv7s */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -4056,6 +4018,7 @@
|
||||
FB4E945F188BB80700CCC583 /* Connection.m */,
|
||||
FB4E9489188BCC2900CCC583 /* VideoRenderer.h */,
|
||||
FB4E948A188BCC2900CCC583 /* VideoRenderer.m */,
|
||||
FBF6AE7D188A274100B50578 /* Supporting Files */,
|
||||
);
|
||||
name = Video;
|
||||
sourceTree = "<group>";
|
||||
@ -4063,7 +4026,6 @@
|
||||
FBF6AE68188A274100B50578 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FB4E948C188BF48300CCC583 /* Limelight-Common */,
|
||||
FBF6AE7C188A274100B50578 /* Limelight-iOS */,
|
||||
FBF6AE99188A274100B50578 /* Limelight-iOSTests */,
|
||||
FBF6AE73188A274100B50578 /* Frameworks */,
|
||||
@ -4083,6 +4045,9 @@
|
||||
FBF6AE73188A274100B50578 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FB05E4C31899EC4100E0CAC7 /* libxml2.2.dylib */,
|
||||
FB05E4C11899E81500E0CAC7 /* libxml2.dylib */,
|
||||
FB05E4BF1899730B00E0CAC7 /* AdSupport.framework */,
|
||||
FB4E9485188BC39600CCC583 /* Debug-iphoneos */,
|
||||
FB4E9461188BC09600CCC583 /* liblimelight-common.a */,
|
||||
FB4E945C188BB6FA00CCC583 /* liblimelight-common.a */,
|
||||
@ -4126,13 +4091,14 @@
|
||||
FBF6AE86188A274100B50578 /* AppDelegate.m */,
|
||||
FBF6AE8B188A274100B50578 /* Images.xcassets */,
|
||||
FBF6AE88188A274100B50578 /* Limelight_iOS.xcdatamodeld */,
|
||||
FBF6AE7D188A274100B50578 /* Supporting Files */,
|
||||
FBC18B29188A3B9100D5D34E /* MainFrameViewController.h */,
|
||||
FBC18B2A188A3B9100D5D34E /* MainFrameViewController.m */,
|
||||
FBBC53A6188AD1D3004D2BA0 /* StreamFrameViewController.h */,
|
||||
FBBC53A7188AD1D3004D2BA0 /* StreamFrameViewController.m */,
|
||||
FBBC53AC188AE27D004D2BA0 /* StreamView.h */,
|
||||
FBBC53AD188AE27D004D2BA0 /* StreamView.m */,
|
||||
FB05E4BC1896D83700E0CAC7 /* ConnectionHandler.h */,
|
||||
FB05E4BD1896D83700E0CAC7 /* ConnectionHandler.m */,
|
||||
);
|
||||
path = "Limelight-iOS";
|
||||
sourceTree = "<group>";
|
||||
@ -4140,7 +4106,6 @@
|
||||
FBF6AE7D188A274100B50578 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBC18B33188A5D6700D5D34E /* notpadded.h264 */,
|
||||
FBF6AE7E188A274100B50578 /* Limelight-iOS-Info.plist */,
|
||||
FBF6AE7F188A274100B50578 /* InfoPlist.strings */,
|
||||
FBF6AE82188A274100B50578 /* main.m */,
|
||||
@ -4247,7 +4212,6 @@
|
||||
files = (
|
||||
FBC18AE3188A2AB500D5D34E /* MainFrame.storyboard in Resources */,
|
||||
FBF6AE8C188A274100B50578 /* Images.xcassets in Resources */,
|
||||
FBC18B34188A5D6700D5D34E /* notpadded.h264 in Resources */,
|
||||
FBBC53E7188BA7C7004D2BA0 /* libopus.la in Resources */,
|
||||
FBBC53E5188BA7C7004D2BA0 /* opus.pc in Resources */,
|
||||
FBBC53E4188BA7C7004D2BA0 /* libopus.la in Resources */,
|
||||
@ -4270,16 +4234,8 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FB4E94A4188BF49B00CCC583 /* VideoDepacketizer.c in Sources */,
|
||||
FB4E94A0188BF49B00CCC583 /* Handshake.c in Sources */,
|
||||
FB4E94A5188BF49B00CCC583 /* VideoStream.c in Sources */,
|
||||
FB4E94A2188BF49B00CCC583 /* PlatformSockets.c in Sources */,
|
||||
FB4E949F188BF49B00CCC583 /* ControlStream.c in Sources */,
|
||||
FB4E94A1188BF49B00CCC583 /* LinkedBlockingQueue.c in Sources */,
|
||||
FB4E949D188BF49B00CCC583 /* ByteBuffer.c in Sources */,
|
||||
FB4E94A3188BF49B00CCC583 /* PlatformThreads.c in Sources */,
|
||||
FB4E949E188BF49B00CCC583 /* Config.c in Sources */,
|
||||
FB4E948B188BCC2900CCC583 /* VideoRenderer.m in Sources */,
|
||||
FB05E4BE1896D83700E0CAC7 /* ConnectionHandler.m in Sources */,
|
||||
FBC18B2F188A4E0500D5D34E /* VideoDepacketizer.m in Sources */,
|
||||
FBF6AE87188A274100B50578 /* AppDelegate.m in Sources */,
|
||||
FBBC53A8188AD1D3004D2BA0 /* StreamFrameViewController.m in Sources */,
|
||||
@ -4697,6 +4653,7 @@
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"/Users/diegowaxemberg/Documents/Repositories/Limelight-iOS/Limelight-iOS/libs/ffmpeg/armv7/include/**",
|
||||
"/Users/diegowaxemberg/Documents/Repositories/limelight-common-c/limelight-common",
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/libxml2,
|
||||
);
|
||||
INFOPLIST_FILE = "Limelight-iOS/Limelight-iOS-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
@ -4726,6 +4683,7 @@
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"/Users/diegowaxemberg/Documents/Repositories/Limelight-iOS/Limelight-iOS/libs/ffmpeg/armv7/include/**",
|
||||
"/Users/diegowaxemberg/Documents/Repositories/limelight-common-c/limelight-common",
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/libxml2,
|
||||
);
|
||||
INFOPLIST_FILE = "Limelight-iOS/Limelight-iOS-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -15,7 +15,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "23"
|
||||
endingLineNumber = "23"
|
||||
landmarkName = "ThreadProc(void* context)"
|
||||
landmarkName = "ThreadProc()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@ -31,7 +31,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "21"
|
||||
endingLineNumber = "21"
|
||||
landmarkName = "ThreadProc(void* context)"
|
||||
landmarkName = "ThreadProc()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@ -47,7 +47,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "95"
|
||||
endingLineNumber = "95"
|
||||
landmarkName = "PltCreateThread(ThreadEntry entry, void* context, PLT_THREAD *thread)"
|
||||
landmarkName = "PltCloseThread()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
|
@ -18,5 +18,6 @@
|
||||
|
||||
- (void)saveContext;
|
||||
- (NSURL *)applicationDocumentsDirectory;
|
||||
+ (NSOperationQueue*) getMainOpQueue;
|
||||
|
||||
@end
|
||||
|
@ -14,11 +14,19 @@
|
||||
@synthesize managedObjectModel = _managedObjectModel;
|
||||
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
|
||||
|
||||
static NSOperationQueue* mainQueue;
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
mainQueue = [[NSOperationQueue alloc]init];
|
||||
return YES;
|
||||
}
|
||||
|
||||
+ (NSOperationQueue*) getMainOpQueue
|
||||
{
|
||||
return mainQueue;
|
||||
}
|
||||
|
||||
- (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.
|
||||
|
@ -21,21 +21,48 @@
|
||||
|
||||
void setup(int width, int height, int fps, void* context, int drFlags)
|
||||
{
|
||||
nv_avc_init(width, height, 0, 2);
|
||||
printf("Setup video\n");
|
||||
nv_avc_init(width, height, DISABLE_LOOP_FILTER | FAST_DECODE | FAST_BILINEAR_FILTERING, 2);
|
||||
}
|
||||
|
||||
void submitDecodeUnit(PDECODE_UNIT decodeUnit)
|
||||
{
|
||||
unsigned char* data = (unsigned char*) malloc(decodeUnit->fullLength + nv_avc_get_input_padding_size());
|
||||
if (data != NULL) {
|
||||
int offset = 0;
|
||||
int err;
|
||||
|
||||
PLENTRY entry = decodeUnit->bufferList;
|
||||
while (entry != NULL) {
|
||||
memcpy(&data[offset], entry->data, entry->length);
|
||||
offset += entry->length;
|
||||
entry = entry->next;
|
||||
}
|
||||
|
||||
err = nv_avc_decode(data, decodeUnit->fullLength);
|
||||
if (err != 0) {
|
||||
printf("Decode failed: %d\n", err);
|
||||
}
|
||||
|
||||
free(data);
|
||||
}
|
||||
}
|
||||
|
||||
void start(void)
|
||||
{
|
||||
printf("Start video\n");
|
||||
[VideoRenderer startRendering];
|
||||
}
|
||||
|
||||
void stop(void)
|
||||
{
|
||||
printf("Stop video\n");
|
||||
[VideoRenderer stopRendering];
|
||||
}
|
||||
|
||||
void release(void)
|
||||
{
|
||||
printf("Release video\n");
|
||||
nv_avc_destroy();
|
||||
}
|
||||
|
||||
@ -52,30 +79,14 @@ void release(void)
|
||||
callbacks.start = start;
|
||||
callbacks.stop = stop;
|
||||
callbacks.release = release;
|
||||
//callbacks.submitDecodeUnit = submitDecodeUnit;
|
||||
callbacks.submitDecodeUnit = submitDecodeUnit;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void) main
|
||||
{
|
||||
int err;
|
||||
|
||||
NSLog(@"Starting connection process\n");
|
||||
|
||||
err = performHandshake(host);
|
||||
NSLog(@"Handshake: %d\n", err);
|
||||
|
||||
err = initializeControlStream(host, &streamConfig);
|
||||
NSLog(@"Control stream init: %d\n", err);
|
||||
|
||||
initializeVideoStream(host, &streamConfig, &callbacks);
|
||||
|
||||
err = startControlStream();
|
||||
NSLog(@"Control stream start: %d\n", err);
|
||||
|
||||
err = startVideoStream(NULL, 0);
|
||||
NSLog(@"Video stream start: %d\n", err);
|
||||
LiStartConnection(host, &streamConfig, &callbacks, NULL, 0);
|
||||
}
|
||||
|
||||
@end
|
||||
|
19
Limelight-iOS/ConnectionHandler.h
Normal file
19
Limelight-iOS/ConnectionHandler.h
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// ConnectionHandler.h
|
||||
// Limelight-iOS
|
||||
//
|
||||
// Created by Diego Waxemberg on 1/27/14.
|
||||
// Copyright (c) 2014 Diego Waxemberg. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface ConnectionHandler : NSOperation
|
||||
@property NSString* hostName;
|
||||
@property int mode;
|
||||
|
||||
+ (void) pairWithHost:(NSString*)host;
|
||||
+ (void) streamWithHost:(NSString*)host viewController:(UIViewController*)viewCont;
|
||||
+ (NSString*) resolveHost:(NSString*)host;
|
||||
|
||||
@end
|
325
Limelight-iOS/ConnectionHandler.m
Normal file
325
Limelight-iOS/ConnectionHandler.m
Normal file
@ -0,0 +1,325 @@
|
||||
//
|
||||
// ConnectionHandler.m
|
||||
// Limelight-iOS
|
||||
//
|
||||
// Created by Diego Waxemberg on 1/27/14.
|
||||
// Copyright (c) 2014 Diego Waxemberg. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ConnectionHandler.h"
|
||||
#import "AppDelegate.h"
|
||||
#import <AdSupport/ASIdentifierManager.h>
|
||||
#import "MainFrameViewController.h"
|
||||
|
||||
#include <libxml/xmlreader.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
@implementation ConnectionHandler
|
||||
static const int PAIR_MODE = 0x1;
|
||||
static const int STREAM_MODE = 0x2;
|
||||
|
||||
static MainFrameViewController* viewCont;
|
||||
|
||||
+ (void)streamWithHost:(NSString *)host viewController:(MainFrameViewController *)viewController
|
||||
{
|
||||
viewCont = viewController;
|
||||
ConnectionHandler* streamHandler = [[ConnectionHandler alloc] initForStream:host];
|
||||
[[AppDelegate getMainOpQueue] addOperation:streamHandler];
|
||||
}
|
||||
|
||||
+ (void)pairWithHost:(NSString *)host
|
||||
{
|
||||
ConnectionHandler* pairHandler = [[ConnectionHandler alloc] initForPair:host];
|
||||
[[AppDelegate getMainOpQueue]addOperation:pairHandler];
|
||||
}
|
||||
|
||||
+ (NSString*) resolveHost:(NSString*)host
|
||||
{
|
||||
struct hostent *hostent;
|
||||
|
||||
if (inet_addr([host UTF8String]) != INADDR_NONE)
|
||||
{
|
||||
// Already an IP address
|
||||
return host;
|
||||
}
|
||||
else
|
||||
{
|
||||
hostent = gethostbyname([host UTF8String]);
|
||||
if (hostent != NULL)
|
||||
{
|
||||
char* ipstr = inet_ntoa(*(struct in_addr*)hostent->h_addr_list[0]);
|
||||
NSLog(@"Resolved %@ -> %s", host, ipstr);
|
||||
return [NSString stringWithUTF8String:ipstr];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"Failed to resolve host: %d", h_errno);
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString*) getId
|
||||
{
|
||||
// we need to generate some unique id
|
||||
NSUUID* uniqueId = [ASIdentifierManager sharedManager].advertisingIdentifier;
|
||||
NSString* idString = [NSString stringWithString:[uniqueId UUIDString]];
|
||||
|
||||
//use just the last 12 digits because GameStream truncates id's
|
||||
return [idString substringFromIndex:24];
|
||||
}
|
||||
|
||||
- (id) initForStream:(NSString*)host
|
||||
{
|
||||
self = [super init];
|
||||
self.hostName = host;
|
||||
self.mode = STREAM_MODE;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initForPair:(NSString*)host
|
||||
{
|
||||
self = [super init];
|
||||
self.hostName = host;
|
||||
self.mode = PAIR_MODE;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) main
|
||||
{
|
||||
switch (self.mode)
|
||||
{
|
||||
case STREAM_MODE:
|
||||
{
|
||||
bool pairState;
|
||||
int err = [self pairState:&pairState];
|
||||
if (err) {
|
||||
NSLog(@"ERROR: Pair state error: %d", err);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!pairState)
|
||||
{
|
||||
NSLog(@"WARN: Not paired with host!");
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Not Paired"
|
||||
message:@"This device is not paired with the host."
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
return;
|
||||
}
|
||||
|
||||
//TODO: parse this from http request
|
||||
unsigned int appId = 67339056;
|
||||
|
||||
NSData* applist = [self httpRequest:[NSString stringWithFormat:@"/applist?uniqueid=%@", [ConnectionHandler getId]]];
|
||||
|
||||
NSString* streamString = [NSString stringWithFormat:@"http://%@:47989/launch?uniqueid=%@&appid=%u", [ConnectionHandler resolveHost:self.hostName], [ConnectionHandler getId], appId];
|
||||
NSLog(@"host: %@", self.hostName);
|
||||
|
||||
NSURL* url = [[NSURL alloc] initWithString:streamString];
|
||||
|
||||
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
|
||||
[request setHTTPMethod:@"GET"];
|
||||
|
||||
NSURLResponse* response = nil;
|
||||
NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
|
||||
|
||||
NSLog(@"url response: %@", response1);
|
||||
|
||||
|
||||
[viewCont performSelector:@selector(segueIntoStream) onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO];
|
||||
break;
|
||||
}
|
||||
case PAIR_MODE:
|
||||
{
|
||||
NSLog(@"Trying to pair to %@...", self.hostName);
|
||||
|
||||
bool pairState;
|
||||
int err = [self pairState:&pairState];
|
||||
if (err) {
|
||||
NSLog(@"ERROR: Pair state error: %d", err);
|
||||
break;
|
||||
}
|
||||
|
||||
NSLog(@"Pair state: %i", pairState);
|
||||
|
||||
if(pairState)
|
||||
{
|
||||
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Pairing"
|
||||
message:[NSString stringWithFormat:@"Already paired to:\n %@", self.hostName]
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
NSLog(@"Showing alertview");
|
||||
break;
|
||||
}
|
||||
|
||||
// this will hang until it pairs successfully or unsuccessfully
|
||||
NSData* pairResponse = [self httpRequest:[NSString stringWithFormat:@"pair?uniqueid=%@", [ConnectionHandler getId]]];
|
||||
|
||||
void* buffer = [self getXMLBufferFromData:pairResponse];
|
||||
if (buffer == NULL) {
|
||||
NSLog(@"ERROR: Unable to allocate pair buffer.");
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Pairing"
|
||||
message:[NSString stringWithFormat:@"Failed to pair with host:\n %@", self.hostName]
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
break;
|
||||
}
|
||||
xmlDocPtr doc = xmlParseMemory(buffer, [pairResponse length]-1);
|
||||
|
||||
if (doc == NULL) {
|
||||
NSLog(@"ERROR: An error occured trying to parse pair response.");
|
||||
break;
|
||||
}
|
||||
|
||||
xmlNodePtr node = xmlDocGetRootElement(doc);
|
||||
node = node->xmlChildrenNode;
|
||||
while (node != NULL) {
|
||||
NSLog(@"Node: %s", node->name);
|
||||
if (!xmlStrcmp(node->name, (const xmlChar*)"sessionid"))
|
||||
{
|
||||
xmlChar* sessionid = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
|
||||
|
||||
if (xmlStrcmp(sessionid, (xmlChar*)"0")) {
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Pairing"
|
||||
message:[NSString stringWithFormat:@"Successfully paired to host:\n %@", self.hostName]
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
|
||||
} else {
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Pairing"
|
||||
message:[NSString stringWithFormat:@"Pairing was declined by host:\n %@", self.hostName]
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
}
|
||||
|
||||
xmlFree(sessionid);
|
||||
goto cleanup;
|
||||
}
|
||||
node = node->next;
|
||||
}
|
||||
|
||||
NSLog(@"ERROR: Could not find \"sessionid\" element in XML");
|
||||
|
||||
cleanup:
|
||||
xmlFreeNode(node);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
NSLog(@"Invalid connection mode specified!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (int) pairState: (bool*)paired
|
||||
{
|
||||
int err;
|
||||
NSData* pairData = [self httpRequest:[NSString stringWithFormat:@"pairstate?uniqueid=%@", [ConnectionHandler getId]]];
|
||||
|
||||
void* buffer = [self getXMLBufferFromData:pairData];
|
||||
|
||||
if (buffer == NULL) {
|
||||
NSLog(@"ERROR: Unable to allocate pair state buffer.");
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Pairing"
|
||||
message:[NSString stringWithFormat:@"Failed to get pair state with host:\n %@", self.hostName]
|
||||
delegate:nil
|
||||
cancelButtonTitle:@"Okay"
|
||||
otherButtonTitles:nil, nil];
|
||||
[self showAlert:alert];
|
||||
return -1;
|
||||
}
|
||||
|
||||
xmlDocPtr doc = xmlParseMemory(buffer, [pairData length]-1);
|
||||
|
||||
if (doc == NULL) {
|
||||
NSLog(@"ERROR: An error occured trying to parse pair state.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
xmlNodePtr node = xmlDocGetRootElement(doc);
|
||||
while (node != NULL) {
|
||||
NSLog(@"Node: %s", node->name);
|
||||
if (!xmlStrcmp(node->name, (const xmlChar*)"paired"))
|
||||
{
|
||||
xmlChar* pairState = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
|
||||
*paired = !xmlStrcmp(pairState, (const xmlChar*)"1");
|
||||
err = 0;
|
||||
|
||||
xmlFree(pairState);
|
||||
goto cleanup;
|
||||
}
|
||||
node = node->xmlChildrenNode;
|
||||
}
|
||||
|
||||
NSLog(@"ERROR: Could not find \"paired\" element in XML");
|
||||
err = -2;
|
||||
|
||||
cleanup:
|
||||
xmlFreeNode(node);
|
||||
return err;
|
||||
}
|
||||
|
||||
- (NSData*) httpRequest:(NSString*)args
|
||||
{
|
||||
NSString* requestString = [NSString stringWithFormat:@"http://%@:47989/%@", [ConnectionHandler resolveHost:self.hostName], args];
|
||||
|
||||
NSLog(@"Making HTTP request: %@", requestString);
|
||||
|
||||
NSURL* url = [[NSURL alloc] initWithString:requestString];
|
||||
|
||||
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
|
||||
[request setHTTPMethod:@"GET"];
|
||||
|
||||
NSURLResponse* response = nil;
|
||||
NSError* error = nil;
|
||||
NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
|
||||
|
||||
if (error != nil) {
|
||||
NSLog(@"An error occured making HTTP request: %@\n Caused by: %@", [error localizedDescription], [error localizedFailureReason]);
|
||||
}
|
||||
|
||||
return responseData;
|
||||
}
|
||||
|
||||
|
||||
- (void*) getXMLBufferFromData:(NSData*)data
|
||||
{
|
||||
if (data == nil) {
|
||||
NSLog(@"ERROR: No data to get XML from!");
|
||||
return NULL;
|
||||
}
|
||||
void* buffer = malloc([data length]);
|
||||
if (buffer == NULL) {
|
||||
NSLog(@"ERROR: Unable to allocate XML buffer.");
|
||||
return NULL;
|
||||
}
|
||||
[data getBytes:buffer length:[data length]];
|
||||
|
||||
|
||||
//#allthejank
|
||||
void* newBuffer = (void*)[[[NSString stringWithUTF8String:buffer]stringByReplacingOccurrencesOfString:@"utf-16" withString:@"UTF-8" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [data length])] UTF8String];
|
||||
|
||||
free(buffer);
|
||||
return newBuffer;
|
||||
}
|
||||
|
||||
- (void) showAlert:(UIAlertView*) alert
|
||||
{
|
||||
[alert performSelector:@selector(show) onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO];
|
||||
}
|
||||
|
||||
@end
|
@ -16,5 +16,6 @@
|
||||
@property (strong, nonatomic) NSArray* streamConfigVals;
|
||||
|
||||
+ (const char*)getHostAddr;
|
||||
- (void) segueIntoStream;
|
||||
|
||||
@end
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#import "MainFrameViewController.h"
|
||||
#import "VideoDepacketizer.h"
|
||||
#import "ConnectionHandler.h"
|
||||
|
||||
@interface MainFrameViewController ()
|
||||
|
||||
@ -24,23 +25,18 @@ static NSString* hostAddr;
|
||||
- (void)PairButton:(UIButton *)sender
|
||||
{
|
||||
NSLog(@"Pair Button Pressed!");
|
||||
hostAddr = self.HostField.text;
|
||||
[ConnectionHandler pairWithHost:hostAddr];
|
||||
}
|
||||
|
||||
- (void)StreamButton:(UIButton *)sender
|
||||
{
|
||||
NSLog(@"Stream Button Pressed!");
|
||||
//67339056
|
||||
hostAddr = self.HostField.text;
|
||||
NSString* host = [NSString stringWithFormat:@"http://%@:47989/launch?uniqueid=0&appid=67339056", self.HostField.text];
|
||||
NSLog(@"host: %@", host);
|
||||
|
||||
NSURL* url = [[NSURL alloc] initWithString:host];
|
||||
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
|
||||
[request setHTTPMethod:@"GET"];
|
||||
NSURLResponse* response = nil;
|
||||
NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
|
||||
NSLog(@"url response: %@", response1);
|
||||
[ConnectionHandler streamWithHost:hostAddr viewController:self];
|
||||
}
|
||||
|
||||
- (void) segueIntoStream {
|
||||
[self performSegueWithIdentifier:@"createStreamFrame" sender:self];
|
||||
}
|
||||
|
||||
@ -71,6 +67,7 @@ static NSString* hostAddr;
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
self.streamConfigVals = [[NSArray alloc] initWithObjects:@"1280x720 (30Hz)",@"1280x720 (60Hz)",@"1920x1080 (30Hz)",@"1920x1080 (60Hz)",nil];
|
||||
self.HostField.text = @"neyer.case.edu";
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
|
@ -11,6 +11,7 @@
|
||||
#import "VideoDepacketizer.h"
|
||||
#import "Connection.h"
|
||||
#import "VideoRenderer.h"
|
||||
#import "ConnectionHandler.h"
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
@ -43,13 +44,7 @@
|
||||
CGRect contentRect = CGRectMake(0,0, self.view.frame.size.width, self.view.frame.size.height);
|
||||
streamView.bounds = contentRect;
|
||||
|
||||
/* // Do any additional setup after loading the view.
|
||||
NSString* path = [[NSBundle mainBundle] pathForResource:@"notpadded"
|
||||
ofType:@"h264"];
|
||||
NSLog(@"Path: %@", path);
|
||||
VideoDepacketizer* depacketizer = [[VideoDepacketizer alloc] initWithFile:path renderTarget:streamView];*/
|
||||
|
||||
Connection* conn = [[Connection alloc] initWithHost:inet_addr([MainFrameViewController getHostAddr]) width:1280 height:720];
|
||||
Connection* conn = [[Connection alloc] initWithHost:inet_addr([[ConnectionHandler resolveHost:[NSString stringWithUTF8String:[MainFrameViewController getHostAddr]]] UTF8String]) width:1280 height:720];
|
||||
|
||||
NSOperationQueue* opQueue = [[NSOperationQueue alloc] init];
|
||||
[opQueue addOperation:conn];
|
||||
|
@ -59,6 +59,7 @@
|
||||
|
||||
CGContextSetBlendMode(context, kCGBlendModeCopy);
|
||||
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
|
||||
CGContextSetShouldAntialias(context, false);
|
||||
CGContextRotateCTM(context, -M_PI_2);
|
||||
CGContextScaleCTM(context, -(float)self.frame.size.width/self.frame.size.height, (float)self.frame.size.height/self.frame.size.width);
|
||||
CGContextDrawImage(context, rect, image);
|
||||
|
@ -27,7 +27,7 @@ static bool render = false;
|
||||
if (render)
|
||||
{
|
||||
[self.renderTarget performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:NULL waitUntilDone:TRUE];
|
||||
usleep(25000);
|
||||
usleep(10000);
|
||||
} else {
|
||||
sleep(1);
|
||||
}
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user