ref: f7849b3926738e3ea28ba5979effc05832a583e7
parent: 3679d082c528461bb2511aa2a404cb03a9f19b7c
author: Sam Leitch <sam@luceva.net>
date: Sun Mar 30 10:00:10 EDT 2014
Added an iOS folder with a test. It still needs some work.
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,17 @@
-win/bin/
-win/obj/
-win/_ReSharper.h264bsd/
-win/ipch/
-win/*.sdf
-*.user
-*.o
-node_modules
-js/h264bsd_asm.js.map
-*.suo
-flex/bin/
-*.swf
-*.swc
-.settings
+win/bin/
+win/obj/
+win/_ReSharper.h264bsd/
+win/ipch/
+win/*.sdf
+*.user
+*.o
+node_modules
+js/h264bsd_asm.js.map
+*.suo
+flex/bin/
+*.swf
+*.swc
+.settings
+*.xcworkspacedata
+*.xcuserstate
+xcuserdata
--- /dev/null
+++ b/ios/h264bsd.xcodeproj/project.pbxproj
@@ -1,0 +1,420 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 225DF3BA18E7C634002CE505 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225DF3B918E7C634002CE505 /* Foundation.framework */; };
+ 225DF41818E7C778002CE505 /* h264bsd_byte_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3E218E7C778002CE505 /* h264bsd_byte_stream.c */; };
+ 225DF41918E7C778002CE505 /* h264bsd_cavlc.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3E418E7C778002CE505 /* h264bsd_cavlc.c */; };
+ 225DF41A18E7C778002CE505 /* h264bsd_conceal.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3E718E7C778002CE505 /* h264bsd_conceal.c */; };
+ 225DF41B18E7C778002CE505 /* h264bsd_deblocking.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3EA18E7C778002CE505 /* h264bsd_deblocking.c */; };
+ 225DF41C18E7C778002CE505 /* h264bsd_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3EC18E7C778002CE505 /* h264bsd_decoder.c */; };
+ 225DF41D18E7C778002CE505 /* h264bsd_dpb.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3EE18E7C778002CE505 /* h264bsd_dpb.c */; };
+ 225DF41E18E7C778002CE505 /* h264bsd_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3F018E7C778002CE505 /* h264bsd_image.c */; };
+ 225DF41F18E7C778002CE505 /* h264bsd_inter_prediction.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3F218E7C778002CE505 /* h264bsd_inter_prediction.c */; };
+ 225DF42018E7C778002CE505 /* h264bsd_intra_prediction.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3F418E7C778002CE505 /* h264bsd_intra_prediction.c */; };
+ 225DF42118E7C778002CE505 /* h264bsd_macroblock_layer.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3F618E7C778002CE505 /* h264bsd_macroblock_layer.c */; };
+ 225DF42218E7C778002CE505 /* h264bsd_nal_unit.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3F818E7C778002CE505 /* h264bsd_nal_unit.c */; };
+ 225DF42318E7C778002CE505 /* h264bsd_neighbour.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3FA18E7C778002CE505 /* h264bsd_neighbour.c */; };
+ 225DF42418E7C778002CE505 /* h264bsd_pic_order_cnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3FC18E7C778002CE505 /* h264bsd_pic_order_cnt.c */; };
+ 225DF42518E7C778002CE505 /* h264bsd_pic_param_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF3FE18E7C778002CE505 /* h264bsd_pic_param_set.c */; };
+ 225DF42618E7C778002CE505 /* h264bsd_reconstruct.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40018E7C778002CE505 /* h264bsd_reconstruct.c */; };
+ 225DF42718E7C778002CE505 /* h264bsd_sei.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40218E7C778002CE505 /* h264bsd_sei.c */; };
+ 225DF42818E7C778002CE505 /* h264bsd_seq_param_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40418E7C778002CE505 /* h264bsd_seq_param_set.c */; };
+ 225DF42918E7C778002CE505 /* h264bsd_slice_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40618E7C778002CE505 /* h264bsd_slice_data.c */; };
+ 225DF42A18E7C778002CE505 /* h264bsd_slice_group_map.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40818E7C778002CE505 /* h264bsd_slice_group_map.c */; };
+ 225DF42B18E7C778002CE505 /* h264bsd_slice_header.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40A18E7C778002CE505 /* h264bsd_slice_header.c */; };
+ 225DF42C18E7C778002CE505 /* h264bsd_storage.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40C18E7C778002CE505 /* h264bsd_storage.c */; };
+ 225DF42D18E7C778002CE505 /* h264bsd_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF40E18E7C778002CE505 /* h264bsd_stream.c */; };
+ 225DF42E18E7C778002CE505 /* h264bsd_transform.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF41018E7C778002CE505 /* h264bsd_transform.c */; };
+ 225DF42F18E7C778002CE505 /* h264bsd_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF41218E7C778002CE505 /* h264bsd_util.c */; };
+ 225DF43018E7C778002CE505 /* h264bsd_vlc.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF41418E7C778002CE505 /* h264bsd_vlc.c */; };
+ 225DF43118E7C778002CE505 /* h264bsd_vui.c in Sources */ = {isa = PBXBuildFile; fileRef = 225DF41618E7C778002CE505 /* h264bsd_vui.c */; };
+ 226ED51718E897CD00D4A03A /* H264bsdDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 226ED51618E897CD00D4A03A /* H264bsdDecoder.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 225DF3B418E7C634002CE505 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "include/$(PRODUCT_NAME)";
+ dstSubfolderSpec = 16;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 225DF3B618E7C634002CE505 /* libh264bsd.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libh264bsd.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 225DF3B918E7C634002CE505 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 225DF3E118E7C778002CE505 /* basetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basetype.h; sourceTree = "<group>"; };
+ 225DF3E218E7C778002CE505 /* h264bsd_byte_stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_byte_stream.c; sourceTree = "<group>"; };
+ 225DF3E318E7C778002CE505 /* h264bsd_byte_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_byte_stream.h; sourceTree = "<group>"; };
+ 225DF3E418E7C778002CE505 /* h264bsd_cavlc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_cavlc.c; sourceTree = "<group>"; };
+ 225DF3E518E7C778002CE505 /* h264bsd_cavlc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_cavlc.h; sourceTree = "<group>"; };
+ 225DF3E618E7C778002CE505 /* h264bsd_cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_cfg.h; sourceTree = "<group>"; };
+ 225DF3E718E7C778002CE505 /* h264bsd_conceal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_conceal.c; sourceTree = "<group>"; };
+ 225DF3E818E7C778002CE505 /* h264bsd_conceal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_conceal.h; sourceTree = "<group>"; };
+ 225DF3E918E7C778002CE505 /* h264bsd_container.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_container.h; sourceTree = "<group>"; };
+ 225DF3EA18E7C778002CE505 /* h264bsd_deblocking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_deblocking.c; sourceTree = "<group>"; };
+ 225DF3EB18E7C778002CE505 /* h264bsd_deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_deblocking.h; sourceTree = "<group>"; };
+ 225DF3EC18E7C778002CE505 /* h264bsd_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_decoder.c; sourceTree = "<group>"; };
+ 225DF3ED18E7C778002CE505 /* h264bsd_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_decoder.h; sourceTree = "<group>"; };
+ 225DF3EE18E7C778002CE505 /* h264bsd_dpb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_dpb.c; sourceTree = "<group>"; };
+ 225DF3EF18E7C778002CE505 /* h264bsd_dpb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_dpb.h; sourceTree = "<group>"; };
+ 225DF3F018E7C778002CE505 /* h264bsd_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_image.c; sourceTree = "<group>"; };
+ 225DF3F118E7C778002CE505 /* h264bsd_image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_image.h; sourceTree = "<group>"; };
+ 225DF3F218E7C778002CE505 /* h264bsd_inter_prediction.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_inter_prediction.c; sourceTree = "<group>"; };
+ 225DF3F318E7C778002CE505 /* h264bsd_inter_prediction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_inter_prediction.h; sourceTree = "<group>"; };
+ 225DF3F418E7C778002CE505 /* h264bsd_intra_prediction.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_intra_prediction.c; sourceTree = "<group>"; };
+ 225DF3F518E7C778002CE505 /* h264bsd_intra_prediction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_intra_prediction.h; sourceTree = "<group>"; };
+ 225DF3F618E7C778002CE505 /* h264bsd_macroblock_layer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_macroblock_layer.c; sourceTree = "<group>"; };
+ 225DF3F718E7C778002CE505 /* h264bsd_macroblock_layer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_macroblock_layer.h; sourceTree = "<group>"; };
+ 225DF3F818E7C778002CE505 /* h264bsd_nal_unit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_nal_unit.c; sourceTree = "<group>"; };
+ 225DF3F918E7C778002CE505 /* h264bsd_nal_unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_nal_unit.h; sourceTree = "<group>"; };
+ 225DF3FA18E7C778002CE505 /* h264bsd_neighbour.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_neighbour.c; sourceTree = "<group>"; };
+ 225DF3FB18E7C778002CE505 /* h264bsd_neighbour.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_neighbour.h; sourceTree = "<group>"; };
+ 225DF3FC18E7C778002CE505 /* h264bsd_pic_order_cnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_pic_order_cnt.c; sourceTree = "<group>"; };
+ 225DF3FD18E7C778002CE505 /* h264bsd_pic_order_cnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_pic_order_cnt.h; sourceTree = "<group>"; };
+ 225DF3FE18E7C778002CE505 /* h264bsd_pic_param_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_pic_param_set.c; sourceTree = "<group>"; };
+ 225DF3FF18E7C778002CE505 /* h264bsd_pic_param_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_pic_param_set.h; sourceTree = "<group>"; };
+ 225DF40018E7C778002CE505 /* h264bsd_reconstruct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_reconstruct.c; sourceTree = "<group>"; };
+ 225DF40118E7C778002CE505 /* h264bsd_reconstruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_reconstruct.h; sourceTree = "<group>"; };
+ 225DF40218E7C778002CE505 /* h264bsd_sei.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_sei.c; sourceTree = "<group>"; };
+ 225DF40318E7C778002CE505 /* h264bsd_sei.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_sei.h; sourceTree = "<group>"; };
+ 225DF40418E7C778002CE505 /* h264bsd_seq_param_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_seq_param_set.c; sourceTree = "<group>"; };
+ 225DF40518E7C778002CE505 /* h264bsd_seq_param_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_seq_param_set.h; sourceTree = "<group>"; };
+ 225DF40618E7C778002CE505 /* h264bsd_slice_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_slice_data.c; sourceTree = "<group>"; };
+ 225DF40718E7C778002CE505 /* h264bsd_slice_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_slice_data.h; sourceTree = "<group>"; };
+ 225DF40818E7C778002CE505 /* h264bsd_slice_group_map.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_slice_group_map.c; sourceTree = "<group>"; };
+ 225DF40918E7C778002CE505 /* h264bsd_slice_group_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_slice_group_map.h; sourceTree = "<group>"; };
+ 225DF40A18E7C778002CE505 /* h264bsd_slice_header.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_slice_header.c; sourceTree = "<group>"; };
+ 225DF40B18E7C778002CE505 /* h264bsd_slice_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_slice_header.h; sourceTree = "<group>"; };
+ 225DF40C18E7C778002CE505 /* h264bsd_storage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_storage.c; sourceTree = "<group>"; };
+ 225DF40D18E7C778002CE505 /* h264bsd_storage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_storage.h; sourceTree = "<group>"; };
+ 225DF40E18E7C778002CE505 /* h264bsd_stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_stream.c; sourceTree = "<group>"; };
+ 225DF40F18E7C778002CE505 /* h264bsd_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_stream.h; sourceTree = "<group>"; };
+ 225DF41018E7C778002CE505 /* h264bsd_transform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_transform.c; sourceTree = "<group>"; };
+ 225DF41118E7C778002CE505 /* h264bsd_transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_transform.h; sourceTree = "<group>"; };
+ 225DF41218E7C778002CE505 /* h264bsd_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_util.c; sourceTree = "<group>"; };
+ 225DF41318E7C778002CE505 /* h264bsd_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_util.h; sourceTree = "<group>"; };
+ 225DF41418E7C778002CE505 /* h264bsd_vlc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_vlc.c; sourceTree = "<group>"; };
+ 225DF41518E7C778002CE505 /* h264bsd_vlc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_vlc.h; sourceTree = "<group>"; };
+ 225DF41618E7C778002CE505 /* h264bsd_vui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264bsd_vui.c; sourceTree = "<group>"; };
+ 225DF41718E7C778002CE505 /* h264bsd_vui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = h264bsd_vui.h; sourceTree = "<group>"; };
+ 226ED51518E897CD00D4A03A /* H264bsdDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = H264bsdDecoder.h; path = src/H264bsdDecoder.h; sourceTree = "<group>"; };
+ 226ED51618E897CD00D4A03A /* H264bsdDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = H264bsdDecoder.m; path = src/H264bsdDecoder.m; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 225DF3B318E7C634002CE505 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 225DF3BA18E7C634002CE505 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 225DF3AD18E7C634002CE505 = {
+ isa = PBXGroup;
+ children = (
+ 225DF48F18E892BF002CE505 /* src */,
+ 225DF3E018E7C778002CE505 /* h264bsd */,
+ 225DF3B818E7C634002CE505 /* Frameworks */,
+ 225DF3B718E7C634002CE505 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 225DF3B718E7C634002CE505 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF3B618E7C634002CE505 /* libh264bsd.a */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 225DF3B818E7C634002CE505 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF3B918E7C634002CE505 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ 225DF3E018E7C778002CE505 /* h264bsd */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF3E118E7C778002CE505 /* basetype.h */,
+ 225DF3E218E7C778002CE505 /* h264bsd_byte_stream.c */,
+ 225DF3E318E7C778002CE505 /* h264bsd_byte_stream.h */,
+ 225DF3E418E7C778002CE505 /* h264bsd_cavlc.c */,
+ 225DF3E518E7C778002CE505 /* h264bsd_cavlc.h */,
+ 225DF3E618E7C778002CE505 /* h264bsd_cfg.h */,
+ 225DF3E718E7C778002CE505 /* h264bsd_conceal.c */,
+ 225DF3E818E7C778002CE505 /* h264bsd_conceal.h */,
+ 225DF3E918E7C778002CE505 /* h264bsd_container.h */,
+ 225DF3EA18E7C778002CE505 /* h264bsd_deblocking.c */,
+ 225DF3EB18E7C778002CE505 /* h264bsd_deblocking.h */,
+ 225DF3EC18E7C778002CE505 /* h264bsd_decoder.c */,
+ 225DF3ED18E7C778002CE505 /* h264bsd_decoder.h */,
+ 225DF3EE18E7C778002CE505 /* h264bsd_dpb.c */,
+ 225DF3EF18E7C778002CE505 /* h264bsd_dpb.h */,
+ 225DF3F018E7C778002CE505 /* h264bsd_image.c */,
+ 225DF3F118E7C778002CE505 /* h264bsd_image.h */,
+ 225DF3F218E7C778002CE505 /* h264bsd_inter_prediction.c */,
+ 225DF3F318E7C778002CE505 /* h264bsd_inter_prediction.h */,
+ 225DF3F418E7C778002CE505 /* h264bsd_intra_prediction.c */,
+ 225DF3F518E7C778002CE505 /* h264bsd_intra_prediction.h */,
+ 225DF3F618E7C778002CE505 /* h264bsd_macroblock_layer.c */,
+ 225DF3F718E7C778002CE505 /* h264bsd_macroblock_layer.h */,
+ 225DF3F818E7C778002CE505 /* h264bsd_nal_unit.c */,
+ 225DF3F918E7C778002CE505 /* h264bsd_nal_unit.h */,
+ 225DF3FA18E7C778002CE505 /* h264bsd_neighbour.c */,
+ 225DF3FB18E7C778002CE505 /* h264bsd_neighbour.h */,
+ 225DF3FC18E7C778002CE505 /* h264bsd_pic_order_cnt.c */,
+ 225DF3FD18E7C778002CE505 /* h264bsd_pic_order_cnt.h */,
+ 225DF3FE18E7C778002CE505 /* h264bsd_pic_param_set.c */,
+ 225DF3FF18E7C778002CE505 /* h264bsd_pic_param_set.h */,
+ 225DF40018E7C778002CE505 /* h264bsd_reconstruct.c */,
+ 225DF40118E7C778002CE505 /* h264bsd_reconstruct.h */,
+ 225DF40218E7C778002CE505 /* h264bsd_sei.c */,
+ 225DF40318E7C778002CE505 /* h264bsd_sei.h */,
+ 225DF40418E7C778002CE505 /* h264bsd_seq_param_set.c */,
+ 225DF40518E7C778002CE505 /* h264bsd_seq_param_set.h */,
+ 225DF40618E7C778002CE505 /* h264bsd_slice_data.c */,
+ 225DF40718E7C778002CE505 /* h264bsd_slice_data.h */,
+ 225DF40818E7C778002CE505 /* h264bsd_slice_group_map.c */,
+ 225DF40918E7C778002CE505 /* h264bsd_slice_group_map.h */,
+ 225DF40A18E7C778002CE505 /* h264bsd_slice_header.c */,
+ 225DF40B18E7C778002CE505 /* h264bsd_slice_header.h */,
+ 225DF40C18E7C778002CE505 /* h264bsd_storage.c */,
+ 225DF40D18E7C778002CE505 /* h264bsd_storage.h */,
+ 225DF40E18E7C778002CE505 /* h264bsd_stream.c */,
+ 225DF40F18E7C778002CE505 /* h264bsd_stream.h */,
+ 225DF41018E7C778002CE505 /* h264bsd_transform.c */,
+ 225DF41118E7C778002CE505 /* h264bsd_transform.h */,
+ 225DF41218E7C778002CE505 /* h264bsd_util.c */,
+ 225DF41318E7C778002CE505 /* h264bsd_util.h */,
+ 225DF41418E7C778002CE505 /* h264bsd_vlc.c */,
+ 225DF41518E7C778002CE505 /* h264bsd_vlc.h */,
+ 225DF41618E7C778002CE505 /* h264bsd_vui.c */,
+ 225DF41718E7C778002CE505 /* h264bsd_vui.h */,
+ );
+ name = h264bsd;
+ path = ../src;
+ sourceTree = "<group>";
+ };
+ 225DF48F18E892BF002CE505 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 226ED51518E897CD00D4A03A /* H264bsdDecoder.h */,
+ 226ED51618E897CD00D4A03A /* H264bsdDecoder.m */,
+ );
+ name = src;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 225DF3B518E7C634002CE505 /* h264bsd */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 225DF3D918E7C635002CE505 /* Build configuration list for PBXNativeTarget "h264bsd" */;
+ buildPhases = (
+ 225DF3B218E7C634002CE505 /* Sources */,
+ 225DF3B318E7C634002CE505 /* Frameworks */,
+ 225DF3B418E7C634002CE505 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = h264bsd;
+ productName = h264bsd;
+ productReference = 225DF3B618E7C634002CE505 /* libh264bsd.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 225DF3AE18E7C634002CE505 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0510;
+ ORGANIZATIONNAME = h264bsd;
+ };
+ buildConfigurationList = 225DF3B118E7C634002CE505 /* Build configuration list for PBXProject "h264bsd" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 225DF3AD18E7C634002CE505;
+ productRefGroup = 225DF3B718E7C634002CE505 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 225DF3B518E7C634002CE505 /* h264bsd */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 225DF3B218E7C634002CE505 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 225DF42218E7C778002CE505 /* h264bsd_nal_unit.c in Sources */,
+ 225DF42118E7C778002CE505 /* h264bsd_macroblock_layer.c in Sources */,
+ 225DF41E18E7C778002CE505 /* h264bsd_image.c in Sources */,
+ 225DF42B18E7C778002CE505 /* h264bsd_slice_header.c in Sources */,
+ 225DF43118E7C778002CE505 /* h264bsd_vui.c in Sources */,
+ 225DF42818E7C778002CE505 /* h264bsd_seq_param_set.c in Sources */,
+ 225DF41F18E7C778002CE505 /* h264bsd_inter_prediction.c in Sources */,
+ 225DF41818E7C778002CE505 /* h264bsd_byte_stream.c in Sources */,
+ 225DF42D18E7C778002CE505 /* h264bsd_stream.c in Sources */,
+ 225DF41A18E7C778002CE505 /* h264bsd_conceal.c in Sources */,
+ 225DF42418E7C778002CE505 /* h264bsd_pic_order_cnt.c in Sources */,
+ 225DF42C18E7C778002CE505 /* h264bsd_storage.c in Sources */,
+ 225DF42918E7C778002CE505 /* h264bsd_slice_data.c in Sources */,
+ 226ED51718E897CD00D4A03A /* H264bsdDecoder.m in Sources */,
+ 225DF42A18E7C778002CE505 /* h264bsd_slice_group_map.c in Sources */,
+ 225DF41C18E7C778002CE505 /* h264bsd_decoder.c in Sources */,
+ 225DF42E18E7C778002CE505 /* h264bsd_transform.c in Sources */,
+ 225DF42318E7C778002CE505 /* h264bsd_neighbour.c in Sources */,
+ 225DF42018E7C778002CE505 /* h264bsd_intra_prediction.c in Sources */,
+ 225DF43018E7C778002CE505 /* h264bsd_vlc.c in Sources */,
+ 225DF42F18E7C778002CE505 /* h264bsd_util.c in Sources */,
+ 225DF41918E7C778002CE505 /* h264bsd_cavlc.c in Sources */,
+ 225DF42718E7C778002CE505 /* h264bsd_sei.c in Sources */,
+ 225DF42518E7C778002CE505 /* h264bsd_pic_param_set.c in Sources */,
+ 225DF41D18E7C778002CE505 /* h264bsd_dpb.c in Sources */,
+ 225DF42618E7C778002CE505 /* h264bsd_reconstruct.c in Sources */,
+ 225DF41B18E7C778002CE505 /* h264bsd_deblocking.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 225DF3D718E7C635002CE505 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 225DF3D818E7C635002CE505 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 225DF3DA18E7C635002CE505 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DSTROOT = /tmp/h264bsd.dst;
+ OTHER_LDFLAGS = "-ObjC";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ 225DF3DB18E7C635002CE505 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DSTROOT = /tmp/h264bsd.dst;
+ OTHER_LDFLAGS = "-ObjC";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 225DF3B118E7C634002CE505 /* Build configuration list for PBXProject "h264bsd" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 225DF3D718E7C635002CE505 /* Debug */,
+ 225DF3D818E7C635002CE505 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 225DF3D918E7C635002CE505 /* Build configuration list for PBXNativeTarget "h264bsd" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 225DF3DA18E7C635002CE505 /* Debug */,
+ 225DF3DB18E7C635002CE505 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 225DF3AE18E7C634002CE505 /* Project object */;
+}
--- /dev/null
+++ b/ios/h264bsd.xcodeproj/project.xcworkspace/xcshareddata/h264bsd.xccheckout
@@ -1,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IDESourceControlProjectFavoriteDictionaryKey</key>
+ <false/>
+ <key>IDESourceControlProjectIdentifier</key>
+ <string>0D0236DE-025E-4E14-B6AA-14211B8E4799</string>
+ <key>IDESourceControlProjectName</key>
+ <string>h264bsd</string>
+ <key>IDESourceControlProjectOriginsDictionary</key>
+ <dict>
+ <key>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</key>
+ <string>https://github.com/oneam/h264bsd.git</string>
+ </dict>
+ <key>IDESourceControlProjectPath</key>
+ <string>ios/h264bsd/h264bsd.xcodeproj/project.xcworkspace</string>
+ <key>IDESourceControlProjectRelativeInstallPathDictionary</key>
+ <dict>
+ <key>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</key>
+ <string>../../../..</string>
+ </dict>
+ <key>IDESourceControlProjectURL</key>
+ <string>https://github.com/oneam/h264bsd.git</string>
+ <key>IDESourceControlProjectVersion</key>
+ <integer>110</integer>
+ <key>IDESourceControlProjectWCCIdentifier</key>
+ <string>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</string>
+ <key>IDESourceControlProjectWCConfigurations</key>
+ <array>
+ <dict>
+ <key>IDESourceControlRepositoryExtensionIdentifierKey</key>
+ <string>public.vcs.git</string>
+ <key>IDESourceControlWCCIdentifierKey</key>
+ <string>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</string>
+ <key>IDESourceControlWCCName</key>
+ <string>h264bsd</string>
+ </dict>
+ </array>
+</dict>
+</plist>
--- /dev/null
+++ b/ios/src/H264bsdDecoder.h
@@ -1,0 +1,52 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import <Foundation/Foundation.h>
+
+typedef NS_ENUM(NSInteger, H264bsdStatus) {
+ H264bsdStatusReady,
+ H264bsdStatusPictureReady,
+ H264bsdStatusParamsReady,
+ H264bsdStatusError,
+ H264bsdStatusParamsError,
+ H264bsdStatusMemallocError
+};
+
+typedef struct
+{
+ BOOL croppingFlag;
+ NSInteger top;
+ NSInteger left;
+ NSInteger width;
+ NSInteger height;
+} H264CroppingParams;
+
+@interface H264bsdDecoder : NSObject
+
+@property (readonly, nonatomic) NSInteger outputWidth;
+@property (readonly, nonatomic) NSInteger outputHeight;
+@property (readonly, nonatomic) H264CroppingParams croppingParams;
+
+- (id)init;
+- (void)dealloc;
+
+- (H264bsdStatus)decode:(NSData *)data offset:(NSUInteger)offset length:(NSUInteger)length bytesRead:(NSUInteger*)bytesRead;
+
+- (NSData *)nextOutputPicture;
+- (NSData *)nextOutputPictureRGBA;
+
+@end
--- /dev/null
+++ b/ios/src/H264bsdDecoder.m
@@ -1,0 +1,99 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import "h264bsdDecoder.h"
+#include "h264bsd_decoder.h"
+
+@interface H264bsdDecoder()
+@property (assign, nonatomic) storage_t *pStorage;
+@end
+
+@implementation H264bsdDecoder
+
+- (id)init
+{
+ self = [super init];
+
+ if(self)
+ {
+ self.pStorage = h264bsdAlloc();
+ h264bsdInit(self.pStorage, 0);
+ }
+
+ return self;
+}
+
+- (void)dealloc
+{
+ h264bsdShutdown(self.pStorage);
+ h264bsdFree(self.pStorage);
+}
+
+- (H264bsdStatus)decode:(NSData *)data offset:(NSUInteger)offset length:(NSUInteger)length bytesRead:(NSUInteger*)bytesRead
+{
+ u32 readBytes;
+ u8 *byteStrm = (u8*)[data bytes] + offset;
+ u32 status = h264bsdDecode(self.pStorage, byteStrm, (u32)length, 0, &readBytes);
+ *bytesRead = readBytes;
+ return (H264bsdStatus)status;
+}
+
+- (NSData *)nextOutputPicture
+{
+ u32 picId, isIdrPic, numErrMbs;
+ u8* data = h264bsdNextOutputPicture(self.pStorage, &picId, &isIdrPic, &numErrMbs);
+ size_t length = self.outputWidth * self.outputHeight * 3 / 2;
+ return [NSData dataWithBytes:data length:length];
+}
+
+- (NSData *)nextOutputPictureRGBA
+{
+ u32 picId, isIdrPic, numErrMbs;
+ u32* data = h264bsdNextOutputPictureRGBA(self.pStorage, &picId, &isIdrPic, &numErrMbs);
+ size_t length = self.outputWidth * self.outputHeight * 4;
+ return [NSData dataWithBytes:data length:length];
+}
+
+- (NSInteger)outputWidth
+{
+ return h264bsdPicWidth(self.pStorage) * 16;
+}
+
+- (NSInteger)outputHeight
+{
+ return h264bsdPicHeight(self.pStorage) * 16;
+}
+
+- (H264CroppingParams)croppingParams
+{
+ u32 croppingFlag, left, width, top, height;
+
+ h264bsdCroppingParams(self.pStorage, &croppingFlag, &left, &width, &top, &height);
+
+ H264CroppingParams params =
+ {
+ (croppingFlag > 0) ? YES : NO,
+ top,
+ left,
+ width,
+ height
+ };
+
+ return params;
+}
+
+@end
--- /dev/null
+++ b/ios/test/h264bsd Test.xcodeproj/project.pbxproj
@@ -1,0 +1,398 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 225DF44318E7C883002CE505 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225DF44218E7C883002CE505 /* Foundation.framework */; };
+ 225DF44518E7C883002CE505 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225DF44418E7C883002CE505 /* CoreGraphics.framework */; };
+ 225DF44718E7C883002CE505 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225DF44618E7C883002CE505 /* UIKit.framework */; };
+ 225DF44D18E7C883002CE505 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 225DF44B18E7C883002CE505 /* InfoPlist.strings */; };
+ 225DF44F18E7C883002CE505 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 225DF44E18E7C883002CE505 /* main.m */; };
+ 225DF45318E7C883002CE505 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 225DF45218E7C883002CE505 /* AppDelegate.m */; };
+ 225DF45618E7C884002CE505 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 225DF45418E7C884002CE505 /* Main_iPhone.storyboard */; };
+ 225DF45918E7C884002CE505 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 225DF45718E7C884002CE505 /* Main_iPad.storyboard */; };
+ 225DF45C18E7C884002CE505 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 225DF45B18E7C884002CE505 /* ViewController.m */; };
+ 225DF45E18E7C884002CE505 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 225DF45D18E7C884002CE505 /* Images.xcassets */; };
+ 225DF48618E7C9CC002CE505 /* test_1920x1080.h264 in Resources */ = {isa = PBXBuildFile; fileRef = 225DF48318E7C9CC002CE505 /* test_1920x1080.h264 */; };
+ 225DF48718E7C9CC002CE505 /* test_640x360.h264 in Resources */ = {isa = PBXBuildFile; fileRef = 225DF48418E7C9CC002CE505 /* test_640x360.h264 */; };
+ 226ED51918E8981300D4A03A /* libh264bsd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 225DF47F18E7C8B8002CE505 /* libh264bsd.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 225DF47E18E7C8B8002CE505 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 225DF47A18E7C8B8002CE505 /* h264bsd.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 225DF3B618E7C634002CE505;
+ remoteInfo = h264bsd;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 225DF43F18E7C883002CE505 /* h264bsd Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "h264bsd Test.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 225DF44218E7C883002CE505 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 225DF44418E7C883002CE505 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 225DF44618E7C883002CE505 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 225DF44A18E7C883002CE505 /* h264bsd Test-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "h264bsd Test-Info.plist"; sourceTree = "<group>"; };
+ 225DF44C18E7C883002CE505 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 225DF44E18E7C883002CE505 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 225DF45018E7C883002CE505 /* h264bsd Test-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "h264bsd Test-Prefix.pch"; sourceTree = "<group>"; };
+ 225DF45118E7C883002CE505 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+ 225DF45218E7C883002CE505 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+ 225DF45518E7C884002CE505 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = "<group>"; };
+ 225DF45818E7C884002CE505 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = "<group>"; };
+ 225DF45A18E7C884002CE505 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+ 225DF45B18E7C884002CE505 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
+ 225DF45D18E7C884002CE505 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+ 225DF46418E7C884002CE505 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+ 225DF47A18E7C8B8002CE505 /* h264bsd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = h264bsd.xcodeproj; path = ../h264bsd.xcodeproj; sourceTree = "<group>"; };
+ 225DF48318E7C9CC002CE505 /* test_1920x1080.h264 */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_1920x1080.h264; sourceTree = "<group>"; };
+ 225DF48418E7C9CC002CE505 /* test_640x360.h264 */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_640x360.h264; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 225DF43C18E7C883002CE505 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 226ED51918E8981300D4A03A /* libh264bsd.a in Frameworks */,
+ 225DF44518E7C883002CE505 /* CoreGraphics.framework in Frameworks */,
+ 225DF44718E7C883002CE505 /* UIKit.framework in Frameworks */,
+ 225DF44318E7C883002CE505 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 225DF43618E7C883002CE505 = {
+ isa = PBXGroup;
+ children = (
+ 225DF48118E7C9CC002CE505 /* test-data */,
+ 225DF47A18E7C8B8002CE505 /* h264bsd.xcodeproj */,
+ 225DF44818E7C883002CE505 /* h264bsd Test */,
+ 225DF44118E7C883002CE505 /* Frameworks */,
+ 225DF44018E7C883002CE505 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 225DF44018E7C883002CE505 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF43F18E7C883002CE505 /* h264bsd Test.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 225DF44118E7C883002CE505 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF44218E7C883002CE505 /* Foundation.framework */,
+ 225DF44418E7C883002CE505 /* CoreGraphics.framework */,
+ 225DF44618E7C883002CE505 /* UIKit.framework */,
+ 225DF46418E7C884002CE505 /* XCTest.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ 225DF44818E7C883002CE505 /* h264bsd Test */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF45118E7C883002CE505 /* AppDelegate.h */,
+ 225DF45218E7C883002CE505 /* AppDelegate.m */,
+ 225DF45418E7C884002CE505 /* Main_iPhone.storyboard */,
+ 225DF45718E7C884002CE505 /* Main_iPad.storyboard */,
+ 225DF45A18E7C884002CE505 /* ViewController.h */,
+ 225DF45B18E7C884002CE505 /* ViewController.m */,
+ 225DF45D18E7C884002CE505 /* Images.xcassets */,
+ 225DF44918E7C883002CE505 /* Supporting Files */,
+ );
+ path = "h264bsd Test";
+ sourceTree = "<group>";
+ };
+ 225DF44918E7C883002CE505 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF44A18E7C883002CE505 /* h264bsd Test-Info.plist */,
+ 225DF44B18E7C883002CE505 /* InfoPlist.strings */,
+ 225DF44E18E7C883002CE505 /* main.m */,
+ 225DF45018E7C883002CE505 /* h264bsd Test-Prefix.pch */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 225DF47B18E7C8B8002CE505 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF47F18E7C8B8002CE505 /* libh264bsd.a */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 225DF48118E7C9CC002CE505 /* test-data */ = {
+ isa = PBXGroup;
+ children = (
+ 225DF48318E7C9CC002CE505 /* test_1920x1080.h264 */,
+ 225DF48418E7C9CC002CE505 /* test_640x360.h264 */,
+ );
+ name = "test-data";
+ path = ../../test;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 225DF43E18E7C883002CE505 /* h264bsd Test */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 225DF47418E7C884002CE505 /* Build configuration list for PBXNativeTarget "h264bsd Test" */;
+ buildPhases = (
+ 225DF43B18E7C883002CE505 /* Sources */,
+ 225DF43C18E7C883002CE505 /* Frameworks */,
+ 225DF43D18E7C883002CE505 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "h264bsd Test";
+ productName = "h264bsd Test";
+ productReference = 225DF43F18E7C883002CE505 /* h264bsd Test.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 225DF43718E7C883002CE505 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0510;
+ ORGANIZATIONNAME = h264bsd;
+ };
+ buildConfigurationList = 225DF43A18E7C883002CE505 /* Build configuration list for PBXProject "h264bsd Test" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 225DF43618E7C883002CE505;
+ productRefGroup = 225DF44018E7C883002CE505 /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = 225DF47B18E7C8B8002CE505 /* Products */;
+ ProjectRef = 225DF47A18E7C8B8002CE505 /* h264bsd.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ 225DF43E18E7C883002CE505 /* h264bsd Test */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ 225DF47F18E7C8B8002CE505 /* libh264bsd.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libh264bsd.a;
+ remoteRef = 225DF47E18E7C8B8002CE505 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 225DF43D18E7C883002CE505 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 225DF48618E7C9CC002CE505 /* test_1920x1080.h264 in Resources */,
+ 225DF45918E7C884002CE505 /* Main_iPad.storyboard in Resources */,
+ 225DF45E18E7C884002CE505 /* Images.xcassets in Resources */,
+ 225DF45618E7C884002CE505 /* Main_iPhone.storyboard in Resources */,
+ 225DF48718E7C9CC002CE505 /* test_640x360.h264 in Resources */,
+ 225DF44D18E7C883002CE505 /* InfoPlist.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 225DF43B18E7C883002CE505 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 225DF45C18E7C884002CE505 /* ViewController.m in Sources */,
+ 225DF45318E7C883002CE505 /* AppDelegate.m in Sources */,
+ 225DF44F18E7C883002CE505 /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 225DF44B18E7C883002CE505 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 225DF44C18E7C883002CE505 /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+ 225DF45418E7C884002CE505 /* Main_iPhone.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 225DF45518E7C884002CE505 /* Base */,
+ );
+ name = Main_iPhone.storyboard;
+ sourceTree = "<group>";
+ };
+ 225DF45718E7C884002CE505 /* Main_iPad.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 225DF45818E7C884002CE505 /* Base */,
+ );
+ name = Main_iPad.storyboard;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 225DF47218E7C884002CE505 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 225DF47318E7C884002CE505 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 225DF47518E7C884002CE505 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "h264bsd Test/h264bsd Test-Prefix.pch";
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+ ../src,
+ );
+ INFOPLIST_FILE = "h264bsd Test/h264bsd Test-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ 225DF47618E7C884002CE505 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "h264bsd Test/h264bsd Test-Prefix.pch";
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+ ../src,
+ );
+ INFOPLIST_FILE = "h264bsd Test/h264bsd Test-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 225DF43A18E7C883002CE505 /* Build configuration list for PBXProject "h264bsd Test" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 225DF47218E7C884002CE505 /* Debug */,
+ 225DF47318E7C884002CE505 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 225DF47418E7C884002CE505 /* Build configuration list for PBXNativeTarget "h264bsd Test" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 225DF47518E7C884002CE505 /* Debug */,
+ 225DF47618E7C884002CE505 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 225DF43718E7C883002CE505 /* Project object */;
+}
--- /dev/null
+++ b/ios/test/h264bsd Test.xcodeproj/project.xcworkspace/xcshareddata/h264bsd Test.xccheckout
@@ -1,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IDESourceControlProjectFavoriteDictionaryKey</key>
+ <false/>
+ <key>IDESourceControlProjectIdentifier</key>
+ <string>E391A1FD-95DC-46F4-BEBD-52A2B333B2EB</string>
+ <key>IDESourceControlProjectName</key>
+ <string>h264bsd Test</string>
+ <key>IDESourceControlProjectOriginsDictionary</key>
+ <dict>
+ <key>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</key>
+ <string>https://github.com/oneam/h264bsd.git</string>
+ </dict>
+ <key>IDESourceControlProjectPath</key>
+ <string>ios/h264bsd Test/h264bsd Test.xcodeproj/project.xcworkspace</string>
+ <key>IDESourceControlProjectRelativeInstallPathDictionary</key>
+ <dict>
+ <key>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</key>
+ <string>../../../..</string>
+ </dict>
+ <key>IDESourceControlProjectURL</key>
+ <string>https://github.com/oneam/h264bsd.git</string>
+ <key>IDESourceControlProjectVersion</key>
+ <integer>110</integer>
+ <key>IDESourceControlProjectWCCIdentifier</key>
+ <string>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</string>
+ <key>IDESourceControlProjectWCConfigurations</key>
+ <array>
+ <dict>
+ <key>IDESourceControlRepositoryExtensionIdentifierKey</key>
+ <string>public.vcs.git</string>
+ <key>IDESourceControlWCCIdentifierKey</key>
+ <string>20F4D9FA-B5AB-4D1D-9ECB-2245F3E32A20</string>
+ <key>IDESourceControlWCCName</key>
+ <string>h264bsd</string>
+ </dict>
+ </array>
+</dict>
+</plist>
--- /dev/null
+++ b/ios/test/h264bsd Test/AppDelegate.h
@@ -1,0 +1,24 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
--- /dev/null
+++ b/ios/test/h264bsd Test/AppDelegate.m
@@ -1,0 +1,62 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import "AppDelegate.h"
+#import "ViewController.h"
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ // Override point for customization after application launch.
+ return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+
+ ViewController *mainViewController = (ViewController *)self.window.rootViewController;
+ [mainViewController stopPlayback];
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+
+ ViewController *mainViewController = (ViewController *)self.window.rootViewController;
+ [mainViewController startPlayback];
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end
--- /dev/null
+++ b/ios/test/h264bsd Test/Base.lproj/Main_iPad.storyboard
@@ -1,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="BYZ-38-t0r">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="tne-QT-ifu">
+ <objects>
+ <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+ <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+ </objects>
+ </scene>
+ </scenes>
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
+ <simulatedStatusBarMetrics key="statusBar"/>
+ <simulatedOrientationMetrics key="orientation"/>
+ <simulatedScreenMetrics key="destination"/>
+ </simulatedMetricsContainer>
+</document>
--- /dev/null
+++ b/ios/test/h264bsd Test/Base.lproj/Main_iPhone.storyboard
@@ -1,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="ufC-wZ-h7g">
+ <objects>
+ <viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
+ <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
+ </objects>
+ </scene>
+ </scenes>
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
+ <simulatedStatusBarMetrics key="statusBar"/>
+ <simulatedOrientationMetrics key="orientation"/>
+ <simulatedScreenMetrics key="destination" type="retina4"/>
+ </simulatedMetricsContainer>
+</document>
--- /dev/null
+++ b/ios/test/h264bsd Test/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -1,0 +1,53 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
--- /dev/null
+++ b/ios/test/h264bsd Test/Images.xcassets/LaunchImage.launchimage/Contents.json
@@ -1,0 +1,51 @@
+{
+ "images" : [
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "subtype" : "retina4",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
--- /dev/null
+++ b/ios/test/h264bsd Test/ViewController.h
@@ -1,0 +1,25 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface ViewController : UIViewController <UIApplicationDelegate>
+
+- (void)startPlayback;
+- (void)stopPlayback;
+
+@end
--- /dev/null
+++ b/ios/test/h264bsd Test/ViewController.m
@@ -1,0 +1,120 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import "ViewController.h"
+#include "H264bsdDecoder.h"
+
+@interface ViewController ()
+
+@property (strong, nonatomic) NSData *videoData;
+@property (strong, nonatomic) H264bsdDecoder *decoder;
+@property (assign, nonatomic) NSUInteger offset;
+@property (assign, atomic) BOOL playbackStarted;
+
+@end
+
+@implementation ViewController
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ [self stopPlayback];
+ [self loadVideoData];
+ [self initializeDecoder];
+ [self startPlayback];
+}
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+- (void)loadVideoData
+{
+ NSString *test_data = [[NSBundle mainBundle] pathForResource:@"test_640x360" ofType:@"h264"];
+ NSData *videoData = [NSData dataWithContentsOfFile:test_data];
+ self.videoData = videoData;
+}
+
+- (void)initializeDecoder
+{
+ H264bsdDecoder *decoder = [[H264bsdDecoder alloc] init];
+ self.decoder = decoder;
+}
+
+- (void)startPlayback
+{
+ if(self.playbackStarted) return;
+ self.playbackStarted = YES;
+ [self playbackLoop];
+}
+
+- (void)stopPlayback
+{
+ self.playbackStarted = NO;
+}
+
+- (void)playbackLoop
+{
+ if(!self.playbackStarted) return;
+
+ NSData* nextImage = [self decodeNextImage];
+ [self displayImage:nextImage];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self playbackLoop];
+ });
+}
+
+- (NSData*)decodeNextImage
+{
+ H264bsdStatus status = H264bsdStatusReady;
+
+ while(status != H264bsdStatusPictureReady)
+ {
+ NSUInteger bytesRead;
+ NSUInteger length = self.videoData.length - self.offset;
+
+ status = [self.decoder decode:self.videoData offset:self.offset length:length bytesRead:&bytesRead];
+
+ self.offset += bytesRead;
+ if(self.offset >= self.videoData.length) self.offset = 0;
+ }
+
+ NSData *nextOutputPicture = [self.decoder nextOutputPictureRGBA];
+ return nextOutputPicture;
+}
+
+- (void)displayImage:(NSData *)nextImage
+{
+ size_t width = self.decoder.outputWidth;
+ size_t height = self.decoder.outputHeight;
+ size_t bytesPerRow = width * 4;
+ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+ CGDataProviderRef imageDataProvider = CGDataProviderCreateWithCFData((CFDataRef)nextImage);
+
+ CGImageRef image = CGImageCreate(width, height, 8, 32, bytesPerRow, colorSpace, kCGBitmapByteOrderDefault|kCGImageAlphaLast, imageDataProvider, NULL, NO, kCGRenderingIntentDefault);
+
+ self.view.layer.contents = (__bridge id)image;
+
+ CGImageRelease(image);
+ CGDataProviderRelease(imageDataProvider);
+ CGColorSpaceRelease(colorSpace);
+}
+
+@end
--- /dev/null
+++ b/ios/test/h264bsd Test/en.lproj/InfoPlist.strings
@@ -1,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
--- /dev/null
+++ b/ios/test/h264bsd Test/h264bsd Test-Info.plist
@@ -1,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>local.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIMainStoryboardFile</key>
+ <string>Main_iPhone</string>
+ <key>UIMainStoryboardFile~ipad</key>
+ <string>Main_iPad</string>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
--- /dev/null
+++ b/ios/test/h264bsd Test/h264bsd Test-Prefix.pch
@@ -1,0 +1,16 @@
+//
+// Prefix header
+//
+// The contents of this file are implicitly included at the beginning of every source file.
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_5_0
+#warning "This project uses features only available in iOS SDK 5.0 and later."
+#endif
+
+#ifdef __OBJC__
+ #import <UIKit/UIKit.h>
+ #import <Foundation/Foundation.h>
+#endif
--- /dev/null
+++ b/ios/test/h264bsd Test/main.m
@@ -1,0 +1,27 @@
+/*
+ * Copyright (c) 2014 h264bsd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}