diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..63bc785 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 kapejod + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..bd49dcc --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +webrtc-ios +========== + +Static libraries (armv7, arm64, i386) and header files for WebRTC packaged as a cocoapod. + +Add one line to your Podfile +``` +pod 'WebRTC', :podspec => 'https://raw.githubusercontent.com/kapejod/webrtc-ios/masters/WebRTC.podspec' +```` diff --git a/WebRTC.podspec b/WebRTC.podspec new file mode 100644 index 0000000..89e5042 --- /dev/null +++ b/WebRTC.podspec @@ -0,0 +1,39 @@ +Pod::Spec.new do |s| + + s.name = "WebRTC" + s.version = "0.0.1" + s.summary = "WebRTC static libraries and objc headers." + + s.description = <<-DESC + A longer description of WebRTC in Markdown format. + Bulding WebRTC for iOS and adding it to an xcode project is no fun. + Just add this cocoa pod to your Podfile and be happy. :) + DESC + + s.homepage = "https://www.ahoyconference.com" + + + s.license = { :type => "MIT", :file => "LICENSE" } + + s.author = { "Klaus-Peter Junghanns" => "kapejod@gmail.com" } + s.social_media_url = "http://twitter.com/kapejod" + + s.platform = :ios + + s.source = { :git => "https://github.com/kapejod/webrtc-ios.git", :tag => "v0.0.1" } + + + s.source_files = "include/*.h" + s.public_header_files = "include/*.h" + s.preserve_path = "lib/libCNG.a", "lib/libG711.a", "lib/libG722.a", "lib/libPCM16B.a", "lib/lib_core_neon_offsets.a", "lib/libaudio_coding_module.a", "lib/libaudio_conference_mixer.a", "lib/libaudio_device.a", "lib/libaudio_decoder_interface.a", "lib/libaudio_processing.a", "lib/libaudio_processing_neon.a", "lib/libaudio_processing_sse2.a", "lib/libbitrate_controller.a", "lib/libcommon_audio.a", "lib/libcommon_audio_neon.a", "lib/libcommon_audio_sse2.a", "lib/libcommon_video.a", "lib/libcrnspr.a", "lib/libcrnss.a", "lib/libcrnssckbi.a", "lib/libcrssl.a", "lib/libexpat.a", "lib/libfield_trial_default.a", "lib/libiLBC.a", "lib/libiSAC.a", "lib/libiSACFix.a", "lib/libicudata.a", "lib/libicui18n.a", "lib/libicuuc.a", "lib/libisac_neon.a", "lib/libjingle_media.a", "lib/libjingle_p2p.a", "lib/libjingle_peerconnection.a", "lib/libjingle_peerconnection_objc.a", "lib/libjsoncpp.a", "lib/libmedia_file.a", "lib/libmetrics_default.a", "lib/libneteq.a", "lib/libnss_static.a", "lib/libopus.a", "lib/libpaced_sender.a", "lib/librbe_components.a", "lib/libremote_bitrate_estimator.a", "lib/librtc_base.a", "lib/librtc_base_approved.a", "lib/librtc_p2p.a", "lib/librtc_sound.a", "lib/librtc_xmllite.a", "lib/librtc_xmpp.a", "lib/librtp_rtcp.a", "lib/libsqlite_regexp.a", "lib/libsrtp.a", "lib/libsystem_wrappers.a", "lib/libusrsctplib.a", "lib/libvideo_capture_module.a", "lib/libvideo_capture_module_internal_impl.a", "lib/libvideo_coding_utility.a", "lib/libvideo_engine_core.a", "lib/libvideo_processing.a", "lib/libvideo_processing_sse2.a", "lib/libvideo_render_module.a", "lib/libvideo_render_module_internal_impl.a", "lib/libvoice_engine.a", "lib/libvpx.a", "lib/libvpx_asm_offsets_vp8.a", "lib/libvpx_asm_offsets_vpx_scale.a", "lib/libvpx_intrinsics_mmx.a", "lib/libvpx_intrinsics_sse2.a", "lib/libvpx_intrinsics_sse4_1.a", "lib/libvpx_intrinsics_ssse3.a", "lib/libwebrtc.a", "lib/libwebrtc_common.a", "lib/libwebrtc_i420.a", "lib/libwebrtc_opus.a", "lib/libwebrtc_utility.a", "lib/libwebrtc_video_coding.a", "lib/libwebrtc_vp8.a", "lib/libwebrtc_vp9.a", "lib/libyuv.a", "lib/libyuv_neon.a" + s.vendored_libraries = "lib/libCNG.a", "lib/libG711.a", "lib/libG722.a", "lib/libPCM16B.a", "lib/lib_core_neon_offsets.a", "lib/libaudio_coding_module.a", "lib/libaudio_conference_mixer.a", "lib/libaudio_device.a", "lib/libaudio_decoder_interface.a", "lib/libaudio_processing.a", "lib/libaudio_processing_neon.a", "lib/libaudio_processing_sse2.a", "lib/libbitrate_controller.a", "lib/libcommon_audio.a", "lib/libcommon_audio_neon.a", "lib/libcommon_audio_sse2.a", "lib/libcommon_video.a", "lib/libcrnspr.a", "lib/libcrnss.a", "lib/libcrnssckbi.a", "lib/libcrssl.a", "lib/libexpat.a", "lib/libfield_trial_default.a", "lib/libiLBC.a", "lib/libiSAC.a", "lib/libiSACFix.a", "lib/libicudata.a", "lib/libicui18n.a", "lib/libicuuc.a", "lib/libisac_neon.a", "lib/libjingle_media.a", "lib/libjingle_p2p.a", "lib/libjingle_peerconnection.a", "lib/libjingle_peerconnection_objc.a", "lib/libjsoncpp.a", "lib/libmedia_file.a", "lib/libmetrics_default.a", "lib/libneteq.a", "lib/libnss_static.a", "lib/libopus.a", "lib/libpaced_sender.a", "lib/librbe_components.a", "lib/libremote_bitrate_estimator.a", "lib/librtc_base.a", "lib/librtc_base_approved.a", "lib/librtc_p2p.a", "lib/librtc_sound.a", "lib/librtc_xmllite.a", "lib/librtc_xmpp.a", "lib/librtp_rtcp.a", "lib/libsqlite_regexp.a", "lib/libsrtp.a", "lib/libsystem_wrappers.a", "lib/libusrsctplib.a", "lib/libvideo_capture_module.a", "lib/libvideo_capture_module_internal_impl.a", "lib/libvideo_coding_utility.a", "lib/libvideo_engine_core.a", "lib/libvideo_processing.a", "lib/libvideo_processing_sse2.a", "lib/libvideo_render_module.a", "lib/libvideo_render_module_internal_impl.a", "lib/libvoice_engine.a", "lib/libvpx.a", "lib/libvpx_asm_offsets_vp8.a", "lib/libvpx_asm_offsets_vpx_scale.a", "lib/libvpx_intrinsics_mmx.a", "lib/libvpx_intrinsics_sse2.a", "lib/libvpx_intrinsics_sse4_1.a", "lib/libvpx_intrinsics_ssse3.a", "lib/libwebrtc.a", "lib/libwebrtc_common.a", "lib/libwebrtc_i420.a", "lib/libwebrtc_opus.a", "lib/libwebrtc_utility.a", "lib/libwebrtc_video_coding.a", "lib/libwebrtc_vp8.a", "lib/libwebrtc_vp9.a", "lib/libyuv.a", "lib/libyuv_neon.a" + + s.frameworks = "QuartzCore", "OpenGLES", "AudioToolbox", "AVFoundation", "CoreVideo", "Foundation", "UIKit", "CoreGraphics", "Security", "AssetsLibrary", "MobileCoreServices", "CoreLocation", "CoreMedia", "GLKit" + s.libraries = "sqlite3", "stdc++", "System", "util" + + s.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/include/**" } + + s.prepare_command = <<-CMD + gzip -d ./lib/*.gz + CMD +end diff --git a/include/RTCAudioSource.h b/include/RTCAudioSource.h new file mode 100644 index 0000000..e357620 --- /dev/null +++ b/include/RTCAudioSource.h @@ -0,0 +1,40 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "RTCMediaSource.h" + +// RTCAudioSource is an ObjectiveC wrapper for AudioSourceInterface. It is +// used as the source for one or more RTCAudioTrack objects. +@interface RTCAudioSource : RTCMediaSource + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCAudioTrack.h b/include/RTCAudioTrack.h new file mode 100644 index 0000000..e6aae13 --- /dev/null +++ b/include/RTCAudioTrack.h @@ -0,0 +1,39 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "RTCMediaStreamTrack.h" + +// RTCAudioTrack is an ObjectiveC wrapper for AudioTrackInterface. +@interface RTCAudioTrack : RTCMediaStreamTrack + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCDataChannel.h b/include/RTCDataChannel.h new file mode 100644 index 0000000..762bd66 --- /dev/null +++ b/include/RTCDataChannel.h @@ -0,0 +1,112 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// ObjectiveC wrapper for a DataChannelInit object. +@interface RTCDataChannelInit : NSObject + +// Set to YES if ordered delivery is required +@property(nonatomic) BOOL isOrdered; +// Max period in milliseconds in which retransmissions will be sent. After this +// time, no more retransmissions will be sent. -1 if unset. +@property(nonatomic) NSInteger maxRetransmitTimeMs; +// The max number of retransmissions. -1 if unset. +@property(nonatomic) NSInteger maxRetransmits; +// Set to YES if the channel has been externally negotiated and we do not send +// an in-band signalling in the form of an "open" message +@property(nonatomic) BOOL isNegotiated; +// The stream id, or SID, for SCTP data channels. -1 if unset. +@property(nonatomic) NSInteger streamId; +// Set by the application and opaque to the WebRTC implementation. +@property(nonatomic) NSString* protocol; + +@end + +// ObjectiveC wrapper for a DataBuffer object. +@interface RTCDataBuffer : NSObject + +@property(nonatomic, readonly) NSData* data; +@property(nonatomic, readonly) BOOL isBinary; + +- (instancetype)initWithData:(NSData*)data isBinary:(BOOL)isBinary; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end + +// Keep in sync with webrtc::DataChannelInterface::DataState +typedef enum { + kRTCDataChannelStateConnecting, + kRTCDataChannelStateOpen, + kRTCDataChannelStateClosing, + kRTCDataChannelStateClosed +} RTCDataChannelState; + +@class RTCDataChannel; +// Protocol for receving data channel state and message events. +@protocol RTCDataChannelDelegate + +// Called when the data channel state has changed. +- (void)channelDidChangeState:(RTCDataChannel*)channel; + +// Called when a data buffer was successfully received. +- (void)channel:(RTCDataChannel*)channel + didReceiveMessageWithBuffer:(RTCDataBuffer*)buffer; + +@end + +// ObjectiveC wrapper for a DataChannel object. +// See talk/app/webrtc/datachannelinterface.h +@interface RTCDataChannel : NSObject + +@property(nonatomic, readonly) NSString* label; +@property(nonatomic, readonly) BOOL isReliable; +@property(nonatomic, readonly) BOOL isOrdered; +@property(nonatomic, readonly) NSUInteger maxRetransmitTime; +@property(nonatomic, readonly) NSUInteger maxRetransmits; +@property(nonatomic, readonly) NSString* protocol; +@property(nonatomic, readonly) BOOL isNegotiated; +@property(nonatomic, readonly) NSInteger streamId; +@property(nonatomic, readonly) RTCDataChannelState state; +@property(nonatomic, readonly) NSUInteger bufferedAmount; +@property(nonatomic, weak) id delegate; + +- (void)close; +- (BOOL)sendData:(RTCDataBuffer*)data; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCEAGLVideoView.h b/include/RTCEAGLVideoView.h new file mode 100644 index 0000000..526175f --- /dev/null +++ b/include/RTCEAGLVideoView.h @@ -0,0 +1,46 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + +#import "RTCVideoRenderer.h" + +@class RTCEAGLVideoView; +@protocol RTCEAGLVideoViewDelegate + +- (void)videoView:(RTCEAGLVideoView*)videoView didChangeVideoSize:(CGSize)size; + +@end + +// RTCEAGLVideoView is an RTCVideoRenderer which renders i420 frames in its +// bounds using OpenGLES 2.0. +@interface RTCEAGLVideoView : UIView + +@property(nonatomic, weak) id delegate; + +@end diff --git a/include/RTCI420Frame.h b/include/RTCI420Frame.h new file mode 100644 index 0000000..7a8c4d4 --- /dev/null +++ b/include/RTCI420Frame.h @@ -0,0 +1,55 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// RTCI420Frame is an ObjectiveC version of cricket::VideoFrame. +@interface RTCI420Frame : NSObject + +@property(nonatomic, readonly) NSUInteger width; +@property(nonatomic, readonly) NSUInteger height; +@property(nonatomic, readonly) NSUInteger chromaWidth; +@property(nonatomic, readonly) NSUInteger chromaHeight; +@property(nonatomic, readonly) NSUInteger chromaSize; +// These can return NULL if the object is not backed by a buffer. +@property(nonatomic, readonly) const uint8_t* yPlane; +@property(nonatomic, readonly) const uint8_t* uPlane; +@property(nonatomic, readonly) const uint8_t* vPlane; +@property(nonatomic, readonly) NSInteger yPitch; +@property(nonatomic, readonly) NSInteger uPitch; +@property(nonatomic, readonly) NSInteger vPitch; + +- (BOOL)makeExclusive; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end + diff --git a/include/RTCICECandidate.h b/include/RTCICECandidate.h new file mode 100644 index 0000000..8d10545 --- /dev/null +++ b/include/RTCICECandidate.h @@ -0,0 +1,56 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// RTCICECandidate contains an instance of ICECandidateInterface. +@interface RTCICECandidate : NSObject + +// If present, this contains the identifier of the "media stream +// identification" as defined in [RFC 3388] for m-line this candidate is +// associated with. +@property(nonatomic, copy, readonly) NSString* sdpMid; + +// This indicates the index (starting at zero) of m-line in the SDP this +// candidate is associated with. +@property(nonatomic, assign, readonly) NSInteger sdpMLineIndex; + +// Creates an SDP-ized form of this candidate. +@property(nonatomic, copy, readonly) NSString* sdp; + +// Creates an ICECandidateInterface based on SDP string. +- (id)initWithMid:(NSString*)sdpMid + index:(NSInteger)sdpMLineIndex + sdp:(NSString*)sdp; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCICEServer.h b/include/RTCICEServer.h new file mode 100644 index 0000000..b0adbf1 --- /dev/null +++ b/include/RTCICEServer.h @@ -0,0 +1,49 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// RTCICEServer allows for the creation of ICEServer structs. +@interface RTCICEServer : NSObject + +// The server URI, username, and password. +@property(nonatomic, strong, readonly) NSURL* URI; +@property(nonatomic, copy, readonly) NSString* username; +@property(nonatomic, copy, readonly) NSString* password; + +// Initializer for RTCICEServer taking uri, username, and password. +- (id)initWithURI:(NSURL*)URI + username:(NSString*)username + password:(NSString*)password; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCMediaConstraints.h b/include/RTCMediaConstraints.h new file mode 100644 index 0000000..89d2c3b --- /dev/null +++ b/include/RTCMediaConstraints.h @@ -0,0 +1,39 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// RTCMediaConstraints contains the media constraints to be used in +// RTCPeerConnection and RTCMediaStream. +@interface RTCMediaConstraints : NSObject + +// Initializer for RTCMediaConstraints. The parameters mandatory and optional +// contain RTCPair objects with key/value for each constrant. +- (id)initWithMandatoryConstraints:(NSArray *)mandatory + optionalConstraints:(NSArray *)optional; + +@end diff --git a/include/RTCMediaSource.h b/include/RTCMediaSource.h new file mode 100644 index 0000000..e31817f --- /dev/null +++ b/include/RTCMediaSource.h @@ -0,0 +1,44 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import "RTCTypes.h" + +// RTCMediaSource is an ObjectiveC wrapper for MediaSourceInterface +@interface RTCMediaSource : NSObject + +// The current state of the RTCMediaSource. +@property(nonatomic, assign, readonly) RTCSourceState state; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCMediaStream.h b/include/RTCMediaStream.h new file mode 100644 index 0000000..cd10321 --- /dev/null +++ b/include/RTCMediaStream.h @@ -0,0 +1,51 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class RTCAudioTrack; +@class RTCVideoTrack; + +// RTCMediaStream is an ObjectiveC wrapper for MediaStreamInterface. +@interface RTCMediaStream : NSObject + +@property(nonatomic, strong, readonly) NSArray *audioTracks; +@property(nonatomic, strong, readonly) NSArray *videoTracks; +@property(nonatomic, strong, readonly) NSString *label; + +- (BOOL)addAudioTrack:(RTCAudioTrack *)track; +- (BOOL)addVideoTrack:(RTCVideoTrack *)track; +- (BOOL)removeAudioTrack:(RTCAudioTrack *)track; +- (BOOL)removeVideoTrack:(RTCVideoTrack *)track; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCMediaStreamTrack.h b/include/RTCMediaStreamTrack.h new file mode 100644 index 0000000..1b9339d --- /dev/null +++ b/include/RTCMediaStreamTrack.h @@ -0,0 +1,59 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import "RTCTypes.h" + +@class RTCMediaStreamTrack; +@protocol RTCMediaStreamTrackDelegate + +- (void)mediaStreamTrackDidChange:(RTCMediaStreamTrack*)mediaStreamTrack; + +@end + +// RTCMediaStreamTrack implements the interface common to RTCAudioTrack and +// RTCVideoTrack. Do not create an instance of this class, rather create one +// of the derived classes. +@interface RTCMediaStreamTrack : NSObject + +@property(nonatomic, readonly) NSString* kind; +@property(nonatomic, readonly) NSString* label; +@property(nonatomic, weak) id delegate; + +- (BOOL)isEnabled; +- (BOOL)setEnabled:(BOOL)enabled; +- (RTCTrackState)state; +- (BOOL)setState:(RTCTrackState)state; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCNSGLVideoView.h b/include/RTCNSGLVideoView.h new file mode 100644 index 0000000..0af2dc5 --- /dev/null +++ b/include/RTCNSGLVideoView.h @@ -0,0 +1,47 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if TARGET_OS_IPHONE +#error "This file targets OSX." +#endif + +#import + +#import "RTCVideoRenderer.h" + +@class RTCNSGLVideoView; +@protocol RTCNSGLVideoViewDelegate + +- (void)videoView:(RTCNSGLVideoView*)videoView didChangeVideoSize:(CGSize)size; + +@end + +@interface RTCNSGLVideoView : NSOpenGLView + +@property(nonatomic, weak) id delegate; + +@end diff --git a/include/RTCOpenGLVideoRenderer.h b/include/RTCOpenGLVideoRenderer.h new file mode 100644 index 0000000..d6744b2 --- /dev/null +++ b/include/RTCOpenGLVideoRenderer.h @@ -0,0 +1,73 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + +@class RTCI420Frame; + +// RTCOpenGLVideoRenderer issues appropriate OpenGL commands to draw a frame to +// the currently bound framebuffer. Supports OpenGL 3.2 and OpenGLES 2.0. OpenGL +// framebuffer creation and management should be handled elsewhere using the +// same context used to initialize this class. +@interface RTCOpenGLVideoRenderer : NSObject + +// The last successfully drawn frame. Used to avoid drawing frames unnecessarily +// hence saving battery life by reducing load. +@property(nonatomic, readonly) RTCI420Frame* lastDrawnFrame; + +#if TARGET_OS_IPHONE +- (instancetype)initWithContext:(EAGLContext*)context; +#else +- (instancetype)initWithContext:(NSOpenGLContext*)context; +#endif + +// Draws |frame| onto the currently bound OpenGL framebuffer. |setupGL| must be +// called before this function will succeed. +- (BOOL)drawFrame:(RTCI420Frame*)frame; + +// The following methods are used to manage OpenGL resources. On iOS +// applications should release resources when placed in background for use in +// the foreground application. In fact, attempting to call OpenGLES commands +// while in background will result in application termination. + +// Sets up the OpenGL state needed for rendering. +- (void)setupGL; +// Tears down the OpenGL state created by |setupGL|. +- (void)teardownGL; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCPair.h b/include/RTCPair.h new file mode 100644 index 0000000..bb57e02 --- /dev/null +++ b/include/RTCPair.h @@ -0,0 +1,45 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// A class to hold a key and value. +@interface RTCPair : NSObject + +@property(nonatomic, strong, readonly) NSString *key; +@property(nonatomic, strong, readonly) NSString *value; + +// Initialize a RTCPair object with a key and value. +- (id)initWithKey:(NSString *)key value:(NSString *)value; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCPeerConnection.h b/include/RTCPeerConnection.h new file mode 100644 index 0000000..6d47f77 --- /dev/null +++ b/include/RTCPeerConnection.h @@ -0,0 +1,124 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "RTCPeerConnectionDelegate.h" + +@class RTCDataChannel; +@class RTCDataChannelInit; +@class RTCICECandidate; +@class RTCICEServers; +@class RTCMediaConstraints; +@class RTCMediaStream; +@class RTCMediaStreamTrack; +@class RTCSessionDescription; +@protocol RTCSessionDescriptionDelegate; +@protocol RTCStatsDelegate; + +// RTCPeerConnection is an ObjectiveC friendly wrapper around a PeerConnection +// object. See the documentation in talk/app/webrtc/peerconnectioninterface.h. +// or http://www.webrtc.org/reference/native-apis, which in turn is inspired by +// the JS APIs: http://dev.w3.org/2011/webrtc/editor/webrtc.html and +// http://www.w3.org/TR/mediacapture-streams/ +@interface RTCPeerConnection : NSObject + +@property(nonatomic, weak) id delegate; + +// Accessor methods to active local streams. +@property(nonatomic, strong, readonly) NSArray *localStreams; + +// The local description. +@property(nonatomic, assign, readonly) RTCSessionDescription *localDescription; + +// The remote description. +@property(nonatomic, assign, readonly) RTCSessionDescription *remoteDescription; + +// The current signaling state. +@property(nonatomic, assign, readonly) RTCSignalingState signalingState; +@property(nonatomic, assign, readonly) RTCICEConnectionState iceConnectionState; +@property(nonatomic, assign, readonly) RTCICEGatheringState iceGatheringState; + +// Add a new MediaStream to be sent on this PeerConnection. +// Note that a SessionDescription negotiation is needed before the +// remote peer can receive the stream. +- (BOOL)addStream:(RTCMediaStream *)stream; + +// Remove a MediaStream from this PeerConnection. +// Note that a SessionDescription negotiation is need before the +// remote peer is notified. +- (void)removeStream:(RTCMediaStream *)stream; + +// Create a data channel. +- (RTCDataChannel*)createDataChannelWithLabel:(NSString*)label + config:(RTCDataChannelInit*)config; + +// Create a new offer. +// Success or failure will be reported via RTCSessionDescriptionDelegate. +- (void)createOfferWithDelegate:(id)delegate + constraints:(RTCMediaConstraints *)constraints; + +// Create an answer to an offer. +// Success or failure will be reported via RTCSessionDescriptionDelegate. +- (void)createAnswerWithDelegate:(id)delegate + constraints:(RTCMediaConstraints *)constraints; + +// Sets the local session description. +// Success or failure will be reported via RTCSessionDescriptionDelegate. +- (void) + setLocalDescriptionWithDelegate:(id)delegate + sessionDescription:(RTCSessionDescription *)sdp; + +// Sets the remote session description. +// Success or failure will be reported via RTCSessionDescriptionDelegate. +- (void) + setRemoteDescriptionWithDelegate:(id)delegate + sessionDescription:(RTCSessionDescription *)sdp; + +// Restarts or updates the ICE Agent process of gathering local candidates +// and pinging remote candidates. +- (BOOL)updateICEServers:(NSArray *)servers + constraints:(RTCMediaConstraints *)constraints; + +// Provides a remote candidate to the ICE Agent. +- (BOOL)addICECandidate:(RTCICECandidate *)candidate; + +// Terminates all media and closes the transport. +- (void)close; + +// Gets statistics for the media track. If |mediaStreamTrack| is nil statistics +// are gathered for all tracks. +// Statistics information will be reported via RTCStatsDelegate. +- (BOOL)getStatsWithDelegate:(id)delegate + mediaStreamTrack:(RTCMediaStreamTrack*)mediaStreamTrack + statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCPeerConnectionDelegate.h b/include/RTCPeerConnectionDelegate.h new file mode 100644 index 0000000..ee6ec7a --- /dev/null +++ b/include/RTCPeerConnectionDelegate.h @@ -0,0 +1,72 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import "RTCTypes.h" + +@class RTCDataChannel; +@class RTCICECandidate; +@class RTCMediaStream; +@class RTCPeerConnection; + +// RTCPeerConnectionDelegate is a protocol for an object that must be +// implemented to get messages from PeerConnection. +@protocol RTCPeerConnectionDelegate + +// Triggered when the SignalingState changed. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + signalingStateChanged:(RTCSignalingState)stateChanged; + +// Triggered when media is received on a new stream from remote peer. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + addedStream:(RTCMediaStream *)stream; + +// Triggered when a remote peer close a stream. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + removedStream:(RTCMediaStream *)stream; + +// Triggered when renegotiation is needed, for example the ICE has restarted. +- (void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection; + +// Called any time the ICEConnectionState changes. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + iceConnectionChanged:(RTCICEConnectionState)newState; + +// Called any time the ICEGatheringState changes. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + iceGatheringChanged:(RTCICEGatheringState)newState; + +// New Ice candidate have been found. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + gotICECandidate:(RTCICECandidate *)candidate; + +// New data channel has been opened. +- (void)peerConnection:(RTCPeerConnection*)peerConnection + didOpenDataChannel:(RTCDataChannel*)dataChannel; + +@end diff --git a/include/RTCPeerConnectionFactory.h b/include/RTCPeerConnectionFactory.h new file mode 100644 index 0000000..5e2f6b6 --- /dev/null +++ b/include/RTCPeerConnectionFactory.h @@ -0,0 +1,71 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class RTCAudioTrack; +@class RTCMediaConstraints; +@class RTCMediaStream; +@class RTCPeerConnection; +@class RTCVideoCapturer; +@class RTCVideoSource; +@class RTCVideoTrack; +@protocol RTCPeerConnectionDelegate; + +// RTCPeerConnectionFactory is an ObjectiveC wrapper for PeerConnectionFactory. +// It is the main entry point to the PeerConnection API for clients. +@interface RTCPeerConnectionFactory : NSObject + +// Initialize & de-initialize the SSL subsystem. Failure is fatal. ++ (void)initializeSSL; ++ (void)deinitializeSSL; + +// Create an RTCPeerConnection object. RTCPeerConnectionFactory will create +// required libjingle threads, socket and network manager factory classes for +// networking. +- (RTCPeerConnection *) + peerConnectionWithICEServers:(NSArray *)servers + constraints:(RTCMediaConstraints *)constraints + delegate:(id)delegate; + +// Create an RTCMediaStream named |label|. +- (RTCMediaStream *)mediaStreamWithLabel:(NSString *)label; + +// Creates a RTCVideoSource. The new source takes ownership of |capturer|. +// |constraints| decides video resolution and frame rate but can be NULL. +- (RTCVideoSource *)videoSourceWithCapturer:(RTCVideoCapturer *)capturer + constraints:(RTCMediaConstraints *)constraints; + +// Creates a new local VideoTrack. The same |source| can be used in several +// tracks. +- (RTCVideoTrack *)videoTrackWithID:(NSString *)videoId + source:(RTCVideoSource *)source; + +// Creates an new AudioTrack. +- (RTCAudioTrack *)audioTrackWithID:(NSString *)audioId; + +@end diff --git a/include/RTCSessionDescription.h b/include/RTCSessionDescription.h new file mode 100644 index 0000000..ffe8fbe --- /dev/null +++ b/include/RTCSessionDescription.h @@ -0,0 +1,50 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// Description of an RFC 4566 Session. +// RTCSessionDescription is an ObjectiveC wrapper for +// SessionDescriptionInterface. +@interface RTCSessionDescription : NSObject + +// The SDP description. +@property(nonatomic, copy, readonly) NSString *description; + +// The session type. +@property(nonatomic, copy, readonly) NSString *type; + +- (id)initWithType:(NSString *)type sdp:(NSString *)sdp; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end + diff --git a/include/RTCSessionDescriptionDelegate.h b/include/RTCSessionDescriptionDelegate.h new file mode 100644 index 0000000..ecdc581 --- /dev/null +++ b/include/RTCSessionDescriptionDelegate.h @@ -0,0 +1,49 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class RTCPeerConnection; +@class RTCSessionDescription; + +extern NSString* const kRTCSessionDescriptionDelegateErrorDomain; +extern int const kRTCSessionDescriptionDelegateErrorCode; + +// RTCSessionDescriptionDelegate is a protocol for listening to callback +// messages when RTCSessionDescriptions are created or set. +@protocol RTCSessionDescriptionDelegate + +// Called when creating a session. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + didCreateSessionDescription:(RTCSessionDescription *)sdp + error:(NSError *)error; + +// Called when setting a local or remote description. +- (void)peerConnection:(RTCPeerConnection *)peerConnection + didSetSessionDescriptionWithError:(NSError *)error; + +@end diff --git a/include/RTCStatsDelegate.h b/include/RTCStatsDelegate.h new file mode 100644 index 0000000..3de3dfe --- /dev/null +++ b/include/RTCStatsDelegate.h @@ -0,0 +1,39 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class RTCPeerConnection; + +// RTCSessionDescriptionDelegate is a protocol for receiving statistic +// reports from RTCPeerConnection. +@protocol RTCStatsDelegate + +- (void)peerConnection:(RTCPeerConnection*)peerConnection + didGetStats:(NSArray*)stats; // NSArray of RTCStatsReport*. + +@end diff --git a/include/RTCStatsReport.h b/include/RTCStatsReport.h new file mode 100644 index 0000000..784ce67 --- /dev/null +++ b/include/RTCStatsReport.h @@ -0,0 +1,45 @@ +/* + * libjingle + * Copyright 2014, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// ObjectiveC friendly wrapper around a StatsReport object. +// See talk/app/webrtc/statsypes.h +@interface RTCStatsReport : NSObject + +@property(nonatomic, readonly) NSString* reportId; +@property(nonatomic, readonly) NSString* type; +@property(nonatomic, readonly) CFTimeInterval timestamp; +@property(nonatomic, readonly) NSArray* values; // NSArray of RTCPair*. + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__(( + unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCTypes.h b/include/RTCTypes.h new file mode 100644 index 0000000..2a55200 --- /dev/null +++ b/include/RTCTypes.h @@ -0,0 +1,78 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Enums that are common to the ObjectiveC version of the PeerConnection API. + +// RTCICEConnectionState correspond to the states in webrtc::ICEConnectionState. +typedef enum { + RTCICEConnectionNew, + RTCICEConnectionChecking, + RTCICEConnectionConnected, + RTCICEConnectionCompleted, + RTCICEConnectionFailed, + RTCICEConnectionDisconnected, + RTCICEConnectionClosed, +} RTCICEConnectionState; + +// RTCICEGatheringState the states in webrtc::ICEGatheringState. +typedef enum { + RTCICEGatheringNew, + RTCICEGatheringGathering, + RTCICEGatheringComplete, +} RTCICEGatheringState; + +// RTCSignalingState correspond to the states in webrtc::SignalingState. +typedef enum { + RTCSignalingStable, + RTCSignalingHaveLocalOffer, + RTCSignalingHaveLocalPrAnswer, + RTCSignalingHaveRemoteOffer, + RTCSignalingHaveRemotePrAnswer, + RTCSignalingClosed, +} RTCSignalingState; + +// RTCStatsOutputLevel correspond to webrtc::StatsOutputLevel +typedef enum { + RTCStatsOutputLevelStandard, + RTCStatsOutputLevelDebug, +} RTCStatsOutputLevel; + +// RTCSourceState corresponds to the states in webrtc::SourceState. +typedef enum { + RTCSourceStateInitializing, + RTCSourceStateLive, + RTCSourceStateEnded, + RTCSourceStateMuted, +} RTCSourceState; + +// RTCTrackState corresponds to the states in webrtc::TrackState. +typedef enum { + RTCTrackStateInitializing, + RTCTrackStateLive, + RTCTrackStateEnded, + RTCTrackStateFailed, +} RTCTrackState; diff --git a/include/RTCVideoCapturer.h b/include/RTCVideoCapturer.h new file mode 100644 index 0000000..7321d57 --- /dev/null +++ b/include/RTCVideoCapturer.h @@ -0,0 +1,42 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +// RTCVideoCapturer is an ObjectiveC wrapper for VideoCapturerInterface. +@interface RTCVideoCapturer : NSObject + +// Create a new video capturer using the specified device. ++ (RTCVideoCapturer *)capturerWithDeviceName:(NSString *)deviceName; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCVideoRenderer.h b/include/RTCVideoRenderer.h new file mode 100644 index 0000000..3c2baba --- /dev/null +++ b/include/RTCVideoRenderer.h @@ -0,0 +1,43 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#if TARGET_OS_IPHONE +#import +#endif + +@class RTCI420Frame; + +@protocol RTCVideoRenderer + +// The size of the frame. +- (void)setSize:(CGSize)size; + +// The frame to be displayed. +- (void)renderFrame:(RTCI420Frame*)frame; + +@end diff --git a/include/RTCVideoSource.h b/include/RTCVideoSource.h new file mode 100644 index 0000000..8de8068 --- /dev/null +++ b/include/RTCVideoSource.h @@ -0,0 +1,39 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "RTCMediaSource.h" + +// RTCVideoSource is an ObjectiveC wrapper for VideoSourceInterface. +@interface RTCVideoSource : RTCMediaSource + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/include/RTCVideoTrack.h b/include/RTCVideoTrack.h new file mode 100644 index 0000000..8385b71 --- /dev/null +++ b/include/RTCVideoTrack.h @@ -0,0 +1,47 @@ +/* + * libjingle + * Copyright 2013, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "RTCMediaStreamTrack.h" + +@protocol RTCVideoRenderer; + +// RTCVideoTrack is an ObjectiveC wrapper for VideoTrackInterface. +@interface RTCVideoTrack : RTCMediaStreamTrack + +// Register a renderer that will render all frames received on this track. +- (void)addRenderer:(id)renderer; + +// Deregister a renderer. +- (void)removeRenderer:(id)renderer; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Disallow init and don't add to documentation +- (id)init __attribute__( + (unavailable("init is not a supported initializer for this class."))); +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +@end diff --git a/lib/libCNG.a.gz b/lib/libCNG.a.gz new file mode 100644 index 0000000..f60261f Binary files /dev/null and b/lib/libCNG.a.gz differ diff --git a/lib/libG711.a.gz b/lib/libG711.a.gz new file mode 100644 index 0000000..ef7522f Binary files /dev/null and b/lib/libG711.a.gz differ diff --git a/lib/libG722.a.gz b/lib/libG722.a.gz new file mode 100644 index 0000000..da58302 Binary files /dev/null and b/lib/libG722.a.gz differ diff --git a/lib/libPCM16B.a.gz b/lib/libPCM16B.a.gz new file mode 100644 index 0000000..a6490d1 Binary files /dev/null and b/lib/libPCM16B.a.gz differ diff --git a/lib/libaudio_coding_module.a.gz b/lib/libaudio_coding_module.a.gz new file mode 100644 index 0000000..f76fc84 Binary files /dev/null and b/lib/libaudio_coding_module.a.gz differ diff --git a/lib/libaudio_conference_mixer.a.gz b/lib/libaudio_conference_mixer.a.gz new file mode 100644 index 0000000..3cb4538 Binary files /dev/null and b/lib/libaudio_conference_mixer.a.gz differ diff --git a/lib/libaudio_decoder_interface.a.gz b/lib/libaudio_decoder_interface.a.gz new file mode 100644 index 0000000..cb1daaa Binary files /dev/null and b/lib/libaudio_decoder_interface.a.gz differ diff --git a/lib/libaudio_device.a.gz b/lib/libaudio_device.a.gz new file mode 100644 index 0000000..74ab6d2 Binary files /dev/null and b/lib/libaudio_device.a.gz differ diff --git a/lib/libaudio_encoder_interface.a.gz b/lib/libaudio_encoder_interface.a.gz new file mode 100644 index 0000000..8ca84a8 Binary files /dev/null and b/lib/libaudio_encoder_interface.a.gz differ diff --git a/lib/libaudio_processing.a.gz b/lib/libaudio_processing.a.gz new file mode 100644 index 0000000..d812be6 Binary files /dev/null and b/lib/libaudio_processing.a.gz differ diff --git a/lib/libaudio_processing_neon.a.gz b/lib/libaudio_processing_neon.a.gz new file mode 100644 index 0000000..a9a5996 Binary files /dev/null and b/lib/libaudio_processing_neon.a.gz differ diff --git a/lib/libaudio_processing_sse2.a.gz b/lib/libaudio_processing_sse2.a.gz new file mode 100644 index 0000000..b84ec7b Binary files /dev/null and b/lib/libaudio_processing_sse2.a.gz differ diff --git a/lib/libbitrate_controller.a.gz b/lib/libbitrate_controller.a.gz new file mode 100644 index 0000000..aad6416 Binary files /dev/null and b/lib/libbitrate_controller.a.gz differ diff --git a/lib/libcommon_audio.a.gz b/lib/libcommon_audio.a.gz new file mode 100644 index 0000000..cfa880b Binary files /dev/null and b/lib/libcommon_audio.a.gz differ diff --git a/lib/libcommon_audio_sse2.a.gz b/lib/libcommon_audio_sse2.a.gz new file mode 100644 index 0000000..d701dea Binary files /dev/null and b/lib/libcommon_audio_sse2.a.gz differ diff --git a/lib/libcommon_video.a.gz b/lib/libcommon_video.a.gz new file mode 100644 index 0000000..ddfa503 Binary files /dev/null and b/lib/libcommon_video.a.gz differ diff --git a/lib/libcrnspr.a.gz b/lib/libcrnspr.a.gz new file mode 100644 index 0000000..aa1aa20 Binary files /dev/null and b/lib/libcrnspr.a.gz differ diff --git a/lib/libcrnss.a.gz b/lib/libcrnss.a.gz new file mode 100644 index 0000000..ba04273 Binary files /dev/null and b/lib/libcrnss.a.gz differ diff --git a/lib/libcrnssckbi.a.gz b/lib/libcrnssckbi.a.gz new file mode 100644 index 0000000..dbc20ef Binary files /dev/null and b/lib/libcrnssckbi.a.gz differ diff --git a/lib/libcrssl.a.gz b/lib/libcrssl.a.gz new file mode 100644 index 0000000..2ba821f Binary files /dev/null and b/lib/libcrssl.a.gz differ diff --git a/lib/libexpat.a.gz b/lib/libexpat.a.gz new file mode 100644 index 0000000..e15f741 Binary files /dev/null and b/lib/libexpat.a.gz differ diff --git a/lib/libfield_trial_default.a.gz b/lib/libfield_trial_default.a.gz new file mode 100644 index 0000000..10328c3 Binary files /dev/null and b/lib/libfield_trial_default.a.gz differ diff --git a/lib/libiLBC.a.gz b/lib/libiLBC.a.gz new file mode 100644 index 0000000..9e727af Binary files /dev/null and b/lib/libiLBC.a.gz differ diff --git a/lib/libiSAC.a.gz b/lib/libiSAC.a.gz new file mode 100644 index 0000000..bb113c5 Binary files /dev/null and b/lib/libiSAC.a.gz differ diff --git a/lib/libiSACFix.a.gz b/lib/libiSACFix.a.gz new file mode 100644 index 0000000..0305327 Binary files /dev/null and b/lib/libiSACFix.a.gz differ diff --git a/lib/libicudata.a.gz b/lib/libicudata.a.gz new file mode 100644 index 0000000..1687240 Binary files /dev/null and b/lib/libicudata.a.gz differ diff --git a/lib/libicui18n.a.gz b/lib/libicui18n.a.gz new file mode 100644 index 0000000..2592a53 Binary files /dev/null and b/lib/libicui18n.a.gz differ diff --git a/lib/libicuuc.a.gz b/lib/libicuuc.a.gz new file mode 100644 index 0000000..19f7dc0 Binary files /dev/null and b/lib/libicuuc.a.gz differ diff --git a/lib/libjingle_media.a.gz b/lib/libjingle_media.a.gz new file mode 100644 index 0000000..b330542 Binary files /dev/null and b/lib/libjingle_media.a.gz differ diff --git a/lib/libjingle_p2p.a.gz b/lib/libjingle_p2p.a.gz new file mode 100644 index 0000000..967e4a0 Binary files /dev/null and b/lib/libjingle_p2p.a.gz differ diff --git a/lib/libjingle_peerconnection.a.gz b/lib/libjingle_peerconnection.a.gz new file mode 100644 index 0000000..f216178 Binary files /dev/null and b/lib/libjingle_peerconnection.a.gz differ diff --git a/lib/libjingle_peerconnection_objc.a.gz b/lib/libjingle_peerconnection_objc.a.gz new file mode 100644 index 0000000..33facd4 Binary files /dev/null and b/lib/libjingle_peerconnection_objc.a.gz differ diff --git a/lib/libjsoncpp.a.gz b/lib/libjsoncpp.a.gz new file mode 100644 index 0000000..b28e638 Binary files /dev/null and b/lib/libjsoncpp.a.gz differ diff --git a/lib/libmedia_file.a.gz b/lib/libmedia_file.a.gz new file mode 100644 index 0000000..e3738fa Binary files /dev/null and b/lib/libmedia_file.a.gz differ diff --git a/lib/libmetrics_default.a.gz b/lib/libmetrics_default.a.gz new file mode 100644 index 0000000..b28b8f4 Binary files /dev/null and b/lib/libmetrics_default.a.gz differ diff --git a/lib/libneteq.a.gz b/lib/libneteq.a.gz new file mode 100644 index 0000000..08ce502 Binary files /dev/null and b/lib/libneteq.a.gz differ diff --git a/lib/libnss_static.a.gz b/lib/libnss_static.a.gz new file mode 100644 index 0000000..a311f36 Binary files /dev/null and b/lib/libnss_static.a.gz differ diff --git a/lib/libopus.a.gz b/lib/libopus.a.gz new file mode 100644 index 0000000..089a346 Binary files /dev/null and b/lib/libopus.a.gz differ diff --git a/lib/libpaced_sender.a.gz b/lib/libpaced_sender.a.gz new file mode 100644 index 0000000..053ca19 Binary files /dev/null and b/lib/libpaced_sender.a.gz differ diff --git a/lib/librbe_components.a.gz b/lib/librbe_components.a.gz new file mode 100644 index 0000000..b01256f Binary files /dev/null and b/lib/librbe_components.a.gz differ diff --git a/lib/libred.a.gz b/lib/libred.a.gz new file mode 100644 index 0000000..15adc23 Binary files /dev/null and b/lib/libred.a.gz differ diff --git a/lib/libremote_bitrate_estimator.a.gz b/lib/libremote_bitrate_estimator.a.gz new file mode 100644 index 0000000..b72177a Binary files /dev/null and b/lib/libremote_bitrate_estimator.a.gz differ diff --git a/lib/librtc_base.a.gz b/lib/librtc_base.a.gz new file mode 100644 index 0000000..d9d345f Binary files /dev/null and b/lib/librtc_base.a.gz differ diff --git a/lib/librtc_base_approved.a.gz b/lib/librtc_base_approved.a.gz new file mode 100644 index 0000000..b2b23c7 Binary files /dev/null and b/lib/librtc_base_approved.a.gz differ diff --git a/lib/librtc_p2p.a.gz b/lib/librtc_p2p.a.gz new file mode 100644 index 0000000..158e22d Binary files /dev/null and b/lib/librtc_p2p.a.gz differ diff --git a/lib/librtc_sound.a.gz b/lib/librtc_sound.a.gz new file mode 100644 index 0000000..99e8509 Binary files /dev/null and b/lib/librtc_sound.a.gz differ diff --git a/lib/librtc_xmllite.a.gz b/lib/librtc_xmllite.a.gz new file mode 100644 index 0000000..8bcf830 Binary files /dev/null and b/lib/librtc_xmllite.a.gz differ diff --git a/lib/librtc_xmpp.a.gz b/lib/librtc_xmpp.a.gz new file mode 100644 index 0000000..dce4992 Binary files /dev/null and b/lib/librtc_xmpp.a.gz differ diff --git a/lib/librtp_rtcp.a.gz b/lib/librtp_rtcp.a.gz new file mode 100644 index 0000000..7513172 Binary files /dev/null and b/lib/librtp_rtcp.a.gz differ diff --git a/lib/libsqlite_regexp.a.gz b/lib/libsqlite_regexp.a.gz new file mode 100644 index 0000000..64c66e3 Binary files /dev/null and b/lib/libsqlite_regexp.a.gz differ diff --git a/lib/libsrtp.a.gz b/lib/libsrtp.a.gz new file mode 100644 index 0000000..8cfa05c Binary files /dev/null and b/lib/libsrtp.a.gz differ diff --git a/lib/libsystem_wrappers.a.gz b/lib/libsystem_wrappers.a.gz new file mode 100644 index 0000000..1b500df Binary files /dev/null and b/lib/libsystem_wrappers.a.gz differ diff --git a/lib/libusrsctplib.a.gz b/lib/libusrsctplib.a.gz new file mode 100644 index 0000000..19401df Binary files /dev/null and b/lib/libusrsctplib.a.gz differ diff --git a/lib/libvideo_capture_module.a.gz b/lib/libvideo_capture_module.a.gz new file mode 100644 index 0000000..c62eb18 Binary files /dev/null and b/lib/libvideo_capture_module.a.gz differ diff --git a/lib/libvideo_capture_module_internal_impl.a.gz b/lib/libvideo_capture_module_internal_impl.a.gz new file mode 100644 index 0000000..486de91 Binary files /dev/null and b/lib/libvideo_capture_module_internal_impl.a.gz differ diff --git a/lib/libvideo_coding_utility.a.gz b/lib/libvideo_coding_utility.a.gz new file mode 100644 index 0000000..cf3e634 Binary files /dev/null and b/lib/libvideo_coding_utility.a.gz differ diff --git a/lib/libvideo_engine_core.a.gz b/lib/libvideo_engine_core.a.gz new file mode 100644 index 0000000..77ad82e Binary files /dev/null and b/lib/libvideo_engine_core.a.gz differ diff --git a/lib/libvideo_processing.a.gz b/lib/libvideo_processing.a.gz new file mode 100644 index 0000000..706ad9f Binary files /dev/null and b/lib/libvideo_processing.a.gz differ diff --git a/lib/libvideo_processing_sse2.a.gz b/lib/libvideo_processing_sse2.a.gz new file mode 100644 index 0000000..4a6c453 Binary files /dev/null and b/lib/libvideo_processing_sse2.a.gz differ diff --git a/lib/libvideo_render_module.a.gz b/lib/libvideo_render_module.a.gz new file mode 100644 index 0000000..8d8b45a Binary files /dev/null and b/lib/libvideo_render_module.a.gz differ diff --git a/lib/libvideo_render_module_internal_impl.a.gz b/lib/libvideo_render_module_internal_impl.a.gz new file mode 100644 index 0000000..88f8f52 Binary files /dev/null and b/lib/libvideo_render_module_internal_impl.a.gz differ diff --git a/lib/libvoice_engine.a.gz b/lib/libvoice_engine.a.gz new file mode 100644 index 0000000..4e37a47 Binary files /dev/null and b/lib/libvoice_engine.a.gz differ diff --git a/lib/libvpx.a.gz b/lib/libvpx.a.gz new file mode 100644 index 0000000..0d1cc2e Binary files /dev/null and b/lib/libvpx.a.gz differ diff --git a/lib/libvpx_intrinsics_mmx.a.gz b/lib/libvpx_intrinsics_mmx.a.gz new file mode 100644 index 0000000..3af1a7c Binary files /dev/null and b/lib/libvpx_intrinsics_mmx.a.gz differ diff --git a/lib/libvpx_intrinsics_sse2.a.gz b/lib/libvpx_intrinsics_sse2.a.gz new file mode 100644 index 0000000..794c53a Binary files /dev/null and b/lib/libvpx_intrinsics_sse2.a.gz differ diff --git a/lib/libvpx_intrinsics_sse4_1.a.gz b/lib/libvpx_intrinsics_sse4_1.a.gz new file mode 100644 index 0000000..8d2e44b Binary files /dev/null and b/lib/libvpx_intrinsics_sse4_1.a.gz differ diff --git a/lib/libvpx_intrinsics_ssse3.a.gz b/lib/libvpx_intrinsics_ssse3.a.gz new file mode 100644 index 0000000..f03fa45 Binary files /dev/null and b/lib/libvpx_intrinsics_ssse3.a.gz differ diff --git a/lib/libwebrtc.a.gz b/lib/libwebrtc.a.gz new file mode 100644 index 0000000..ec2110f Binary files /dev/null and b/lib/libwebrtc.a.gz differ diff --git a/lib/libwebrtc_common.a.gz b/lib/libwebrtc_common.a.gz new file mode 100644 index 0000000..5c95d32 Binary files /dev/null and b/lib/libwebrtc_common.a.gz differ diff --git a/lib/libwebrtc_i420.a.gz b/lib/libwebrtc_i420.a.gz new file mode 100644 index 0000000..f14976b Binary files /dev/null and b/lib/libwebrtc_i420.a.gz differ diff --git a/lib/libwebrtc_opus.a.gz b/lib/libwebrtc_opus.a.gz new file mode 100644 index 0000000..70b29d2 Binary files /dev/null and b/lib/libwebrtc_opus.a.gz differ diff --git a/lib/libwebrtc_utility.a.gz b/lib/libwebrtc_utility.a.gz new file mode 100644 index 0000000..093ce3e Binary files /dev/null and b/lib/libwebrtc_utility.a.gz differ diff --git a/lib/libwebrtc_video_coding.a.gz b/lib/libwebrtc_video_coding.a.gz new file mode 100644 index 0000000..fe82f7b Binary files /dev/null and b/lib/libwebrtc_video_coding.a.gz differ diff --git a/lib/libwebrtc_vp8.a.gz b/lib/libwebrtc_vp8.a.gz new file mode 100644 index 0000000..d2f5417 Binary files /dev/null and b/lib/libwebrtc_vp8.a.gz differ diff --git a/lib/libwebrtc_vp9.a.gz b/lib/libwebrtc_vp9.a.gz new file mode 100644 index 0000000..d1c3b7e Binary files /dev/null and b/lib/libwebrtc_vp9.a.gz differ diff --git a/lib/libyuv.a.gz b/lib/libyuv.a.gz new file mode 100644 index 0000000..1108b1f Binary files /dev/null and b/lib/libyuv.a.gz differ diff --git a/lib/libyuv_neon.a.gz b/lib/libyuv_neon.a.gz new file mode 100644 index 0000000..9200f93 Binary files /dev/null and b/lib/libyuv_neon.a.gz differ