Yaowu Xu [Thu, 30 Jan 2014 17:33:24 +0000 (09:33 -0800)]
Merge "Fix some automerge artifacts"
Yaowu Xu [Thu, 30 Jan 2014 17:33:20 +0000 (09:33 -0800)]
Merge "Fix a build issue for --enable-intern-stats"
Yaowu Xu [Thu, 30 Jan 2014 03:03:07 +0000 (19:03 -0800)]
Fix some automerge artifacts
Some changes in 1ca1186 were mistakenly reverted by a later merge,
this commit re-instated the chanages from values to enums.
Change-Id: Ia6b01c31da584a1f612996e6432612c1295b9eaf
Yaowu Xu [Thu, 30 Jan 2014 02:15:37 +0000 (18:15 -0800)]
Fix a build issue for --enable-intern-stats
Change-Id: Iea7c9fa0726dbf9792eea79e6a05eb8a3c718d45
Dmitry Kovalev [Thu, 30 Jan 2014 06:07:17 +0000 (22:07 -0800)]
Merge "Changing ivf_write_frame_header() function signature."
James Zern [Thu, 30 Jan 2014 04:23:10 +0000 (20:23 -0800)]
Merge "obj_int_extract (msvs): add missing project dep"
Dmitry Kovalev [Thu, 30 Jan 2014 01:57:21 +0000 (17:57 -0800)]
Changing ivf_write_frame_header() function signature.
Replacing vpx_codec_cx_pkt argument with two separate pts and frame_size.
Change-Id: I7b37e379ee71342520cf08f03acfb4b499b2cbe4
James Zern [Thu, 30 Jan 2014 01:26:02 +0000 (17:26 -0800)]
obj_int_extract (msvs): add missing project dep
obj_int_extract.bat
this project and target still need some work to allow for concurrent
builds to succeed from the command line.
Change-Id: Ieb3bddc54636e77519083c48573909616257eb23
Yaowu Xu [Thu, 30 Jan 2014 00:36:20 +0000 (16:36 -0800)]
Merge "create super fast rtc mode"
Yaowu Xu [Thu, 30 Jan 2014 00:36:06 +0000 (16:36 -0800)]
Merge "Add a strict mode for auto_min_max_partition_size feature"
Yaowu Xu [Wed, 29 Jan 2014 18:03:07 +0000 (10:03 -0800)]
Add a strict mode for auto_min_max_partition_size feature
In this new mode, the size range is strictly determined by the min
and max partition size in neighborhood blocks.
Niklas720 encoding time at cpu-used -5 goes from 56250ms to 50676ms,
a 10% reduction.
Change-Id: I316b0e2ac967ff3fad57b28d69c0ec80b7d8b34e
Dmitry Kovalev [Wed, 29 Jan 2014 22:02:26 +0000 (14:02 -0800)]
Merge "Moving RATE_CONTROL struct to vp9_ratectrl.h."
Dmitry Kovalev [Wed, 29 Jan 2014 22:00:25 +0000 (14:00 -0800)]
Merge "Removing ONEPASS_FRAMESTATS struct."
Deb Mukherjee [Wed, 29 Jan 2014 21:37:30 +0000 (13:37 -0800)]
Merge "Enables alt-ref frames in one pass mode"
Dmitry Kovalev [Wed, 29 Jan 2014 20:54:21 +0000 (12:54 -0800)]
Merge "Finally removing vp9_setup_interp_filters() function."
Dmitry Kovalev [Wed, 29 Jan 2014 20:50:26 +0000 (12:50 -0800)]
Merge "Cleaning up vp9_firstpass.c."
Dmitry Kovalev [Wed, 29 Jan 2014 20:47:12 +0000 (12:47 -0800)]
Merge "vpxenc: Relocate rate/quantizer histogram code."
Yunqing Wang [Wed, 29 Jan 2014 20:45:49 +0000 (12:45 -0800)]
Merge "Add macros for convolve functions"
Dmitry Kovalev [Wed, 29 Jan 2014 20:28:29 +0000 (12:28 -0800)]
vpxenc: Relocate rate/quantizer histogram code.
Adding rate_hist.{h, c} files.
Change-Id: Iaa28af6b25ec8982966a7296a073d6017b3a7f96
Dmitry Kovalev [Mon, 27 Jan 2014 22:20:39 +0000 (14:20 -0800)]
Finally removing vp9_setup_interp_filters() function.
Change-Id: If446225afbb49f6033c2a4516a37c377de6f70f7
Dmitry Kovalev [Wed, 29 Jan 2014 19:26:09 +0000 (11:26 -0800)]
Cleaning up vp9_firstpass.c.
Change-Id: Ic2ff6405f01fd43d07c5ee3b5e374909401115cc
Dmitry Kovalev [Wed, 29 Jan 2014 19:21:08 +0000 (11:21 -0800)]
Merge "Adapting decode_with_drops example to use new file reading API."
Deb Mukherjee [Thu, 23 Jan 2014 02:00:08 +0000 (18:00 -0800)]
Enables alt-ref frames in one pass mode
Includes a few fixes and clean-ups that adds the ability
to use alt-ref frames in one-pass mode.
Whether alt-refs are actually used or not is controlled by a
macro USE_ALTREF_FOR_ONE_PASS in vp9_firstpass.c.
This first cut seems to improve derf by 15+% in 1-pass mode.
But further experiments with parameters are underway.
Change-Id: I78254421435478003367c788c7930d2dc4ee2816
Dmitry Kovalev [Tue, 28 Jan 2014 19:25:24 +0000 (11:25 -0800)]
Adapting decode_with_drops example to use new file reading API.
Change-Id: Idd1acfcf8bb16a2ddb9c6c1c841a7741e90589d9
Dmitry Kovalev [Tue, 28 Jan 2014 19:27:30 +0000 (11:27 -0800)]
Adapting postproc example to use new file reading API.
Change-Id: Ib3747c81db8cc89b5d7012db557411a3b49712aa
Jim Bankoski [Wed, 29 Jan 2014 16:39:39 +0000 (08:39 -0800)]
create super fast rtc mode
This patch only works if the video is a width and height that are both
a multiple of 32.. It sets every partition to 16x16, and does INTRADC
only on the first frame and ZEROMV on every other frame. It always does
does the largest possible transform, and loop filter level is set to 4.
Was ~20% faster than speed -5 of vp8
Now 20% slower but adds motion search ( every block ), nearest, near
and zeromv
The SVC test was changed because - while this realtime mode produces
bad quality albeit quickly, it isn't obeying all the rules it should
about which frames are available.
Change-Id: I235c0b22573957986d41497dfb84568ec1dec8c7
Paul Wilkins [Wed, 29 Jan 2014 14:59:04 +0000 (14:59 +0000)]
Trap divide by 0.
Trap divide by 0 that could occur with a 0 rate target
in aq mode COMPLEXITY_AQ.
Change-Id: I034514f512b2a0db470ae8d37ea395278bf473cf
Yunqing Wang [Wed, 29 Jan 2014 01:29:52 +0000 (17:29 -0800)]
Add macros for convolve functions
Added macros to reduce the code duplication.
Change-Id: I1916aa5a386ea07d961d4ec439ab09bb8c45487d
Johann [Tue, 28 Jan 2014 23:57:33 +0000 (15:57 -0800)]
Correct OUTPUT_C_HEADER
OUTPUT_FMT_C_HEADER
Change-Id: Ic1a583352ead8268efc39f1b89257e9c622e1613
Jim Bankoski [Tue, 28 Jan 2014 23:12:03 +0000 (15:12 -0800)]
Merge "Reintroduce modelling for some speeds"
Jim Bankoski [Tue, 28 Jan 2014 21:51:06 +0000 (13:51 -0800)]
Reintroduce modelling for some speeds
Change-Id: Ia8fa3961eec34545465018281dc022bc6f73869a
Dmitry Kovalev [Tue, 28 Jan 2014 20:57:49 +0000 (12:57 -0800)]
Moving RATE_CONTROL struct to vp9_ratectrl.h.
Change-Id: I0c286e3d68a4a4ecf6df02e6fd9990327b0ceb22
Dmitry Kovalev [Tue, 28 Jan 2014 20:48:19 +0000 (12:48 -0800)]
Removing ONEPASS_FRAMESTATS struct.
It seems we don't use it and not going to.
Change-Id: Ie76cd04dafc79b0a5911f8957d4253ca2d787f0c
Dmitry Kovalev [Tue, 28 Jan 2014 20:30:27 +0000 (12:30 -0800)]
Merge "vpxdec: restoring old md5 behavior for y4m files."
Dmitry Kovalev [Tue, 28 Jan 2014 19:12:58 +0000 (11:12 -0800)]
vpxdec: restoring old md5 behavior for y4m files.
Fix of https://code.google.com/p/webm/issues/detail?id=698 issue.
Change-Id: I7a92d91481dbbae28d8953f146e9faafdcd7a310
Dmitry Kovalev [Tue, 28 Jan 2014 18:37:58 +0000 (10:37 -0800)]
Merge "Decoupling set_ref_ptrs() and vp9_setup_interp_filters()."
Dmitry Kovalev [Tue, 28 Jan 2014 18:37:26 +0000 (10:37 -0800)]
Merge "Removing _1d suffix from transform names."
Yaowu Xu [Tue, 28 Jan 2014 18:28:54 +0000 (10:28 -0800)]
Merge "Added a speed feature"
hkuang [Tue, 28 Jan 2014 17:57:08 +0000 (09:57 -0800)]
Merge "Add vp9_tm_predictor_32x32 neon implementation which is 7.8 times faster than C."
Dmitry Kovalev [Tue, 28 Jan 2014 00:15:36 +0000 (16:15 -0800)]
Removing _1d suffix from transform names.
It is enough to specify (e.g.) idct16, it is obviously different from
idct16x16.
Change-Id: I6b408a37a945de3162429380b59a775b03b95db0
hkuang [Mon, 27 Jan 2014 22:03:06 +0000 (14:03 -0800)]
Add vp9_tm_predictor_32x32 neon implementation
which is 7.8 times faster than C.
Change-Id: I858ef4ec09202a07d445da8db702783d6d9d7321
Dmitry Kovalev [Tue, 28 Jan 2014 00:00:20 +0000 (16:00 -0800)]
Decoupling set_ref_ptrs() and vp9_setup_interp_filters().
Change-Id: I8d17867a4772554cbba2bd113cc5b4c99d50146d
Dmitry Kovalev [Mon, 27 Jan 2014 22:22:15 +0000 (14:22 -0800)]
Merge "Adapting simple_decoder to use new file reading API."
Dmitry Kovalev [Mon, 27 Jan 2014 21:40:29 +0000 (13:40 -0800)]
Adapting simple_decoder to use new file reading API.
Change-Id: I374a0c4bb4a66c0d3dc874c6e57fdee9d1ab72df
Johann [Mon, 27 Jan 2014 20:13:59 +0000 (12:13 -0800)]
Merge "Ouput symbols as c header file."
Dmitry Kovalev [Mon, 27 Jan 2014 19:46:41 +0000 (11:46 -0800)]
Merge "Adding get_bsize() function to vp9_firstpass.c."
Tao Bai [Mon, 27 Jan 2014 18:56:04 +0000 (10:56 -0800)]
Ouput symbols as c header file.
This is required by webrtc.
Change-Id: I32983597eb0f6797aeb0d93b65d8911989ba98ea
Dmitry Kovalev [Mon, 27 Jan 2014 18:42:42 +0000 (10:42 -0800)]
Merge "Removing subpix_fn_table struct."
Alex Converse [Mon, 27 Jan 2014 18:25:35 +0000 (10:25 -0800)]
Merge "Cache loop filter errors."
Alex Converse [Mon, 27 Jan 2014 18:25:12 +0000 (10:25 -0800)]
Merge "Refactor loop filter level search."
hkuang [Sun, 26 Jan 2014 18:37:06 +0000 (10:37 -0800)]
Fix the vp9_tm_predictor_8x8_neon.
Change-Id: I832cf83871044bfee7b7e57dbd31bae05cbd53e9
Deb Mukherjee [Thu, 23 Jan 2014 22:53:53 +0000 (14:53 -0800)]
Adds a stand-alone resize utility for testing
Adds a stand-alone resize_util app for testing. The app
will not be built in the shared library configurations
so as not to require the APIs to be exposed.
Change-Id: I4718c8bff1abf4e57c2ab2d84be8738fc0048200
Deb Mukherjee [Sat, 25 Jan 2014 17:16:57 +0000 (09:16 -0800)]
Multiple resize filters
Adds multiple filters in the 0.5-1.0 range in the last stage
of the resize functions to prevent over-smoothing/aliasing
Change-Id: I1a615adb16f0df5095790945c94b28b4d6a6fc48
Dmitry Kovalev [Fri, 24 Jan 2014 22:26:26 +0000 (14:26 -0800)]
Adding get_bsize() function to vp9_firstpass.c.
Change-Id: I31373ad860eb554eb3b03e877e8fba580dc3de07
Alex Converse [Fri, 24 Jan 2014 23:57:40 +0000 (15:57 -0800)]
Cache loop filter errors.
This avoids fitlering a frame multiple times at the same level.
Change-Id: I1fd54dd7ea257d16da8569f48036b8fad3a3ed61
Alex Converse [Fri, 24 Jan 2014 23:00:48 +0000 (15:00 -0800)]
Refactor loop filter level search.
Factor out the code that tries filtering a frame at a given level.
Change-Id: Ia04507e3ce6b1ad6ae7d05a9d88222fd319f44b7
Dmitry Kovalev [Sat, 25 Jan 2014 01:06:26 +0000 (17:06 -0800)]
Removing subpix_fn_table struct.
We don't use different filter kernels for x and y, it is always one kernel
for both directions.
Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
Dmitry Kovalev [Sat, 25 Jan 2014 00:52:10 +0000 (16:52 -0800)]
Merge "Renaming INTERPOLATION_TYPE to INTERP_FILTER."
Yaowu Xu [Wed, 22 Jan 2014 22:57:03 +0000 (14:57 -0800)]
Added a speed feature
That force the stop of subpel search possibly at full/half/quater pel
stages
Change-Id: Ie50c500417bd78e1a53e6620bd4c2b85f63d9c67
Frank Galligan [Sat, 25 Jan 2014 00:21:56 +0000 (16:21 -0800)]
Merge "Optimize vp9_tm_predictor_8x8_neon function"
Yaowu Xu [Sat, 25 Jan 2014 00:05:13 +0000 (16:05 -0800)]
Merge "change to avoid IOC"
Dmitry Kovalev [Fri, 24 Jan 2014 20:26:57 +0000 (12:26 -0800)]
Renaming INTERPOLATION_TYPE to INTERP_FILTER.
Corresponding renames:
subpel_kernel => interp_kernel
vp9_get_filter_kernel() => vp9_get_interp_kernel()
pred_filter_type => pred_interp_filter
adaptive_pred_filter_type => adaptive_pred_interp_filter
mcomp_filter_type => interp_filter
read_interp_filter_type() => read_interp_filter()
write_interp_filter_type() => write_interp_filter()
fix_mcomp_filter_type() => fix_interp_filter()
Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
Dmitry Kovalev [Fri, 24 Jan 2014 23:53:12 +0000 (15:53 -0800)]
Merge "Removing MODE_STATS."
Alex Converse [Fri, 24 Jan 2014 23:41:01 +0000 (15:41 -0800)]
Merge "Add some consts to vp9_calc_ss_err()."
Dmitry Kovalev [Fri, 24 Jan 2014 23:06:47 +0000 (15:06 -0800)]
Merge "Implementing simple API to read video files."
Dmitry Kovalev [Fri, 24 Jan 2014 22:47:59 +0000 (14:47 -0800)]
Merge "Removing unused inter_mode_counts field from CODING_CONTEXT."
Alex Converse [Fri, 24 Jan 2014 22:21:39 +0000 (14:21 -0800)]
Add some consts to vp9_calc_ss_err().
Also change its wrongly named dest parameter to reference.
Change-Id: Ide142dead31c9ccda1f09a48b221284369783fb7
Alex Converse [Fri, 24 Jan 2014 22:10:14 +0000 (14:10 -0800)]
Merge "Add a method to estimate loop filter level from quantizer and frame type."
Dmitry Kovalev [Fri, 24 Jan 2014 21:56:16 +0000 (13:56 -0800)]
Merge "Inlining IFMVCV macro."
Yaowu Xu [Fri, 24 Jan 2014 21:44:05 +0000 (13:44 -0800)]
Merge "Fixed integer overflow for large input video"
Dmitry Kovalev [Fri, 24 Jan 2014 21:31:57 +0000 (13:31 -0800)]
Removing unused inter_mode_counts field from CODING_CONTEXT.
Change-Id: I24ff8ab3d2c807906aa86974bcb4c540256206de
Yaowu Xu [Fri, 24 Jan 2014 20:06:39 +0000 (12:06 -0800)]
change to avoid IOC
SSE for a 64x64 block with 3 planes can go as high as 3*2^28. So left
shift by 4 may overflow 32 bit int.
Change-Id: I63c84aa56894788bb987299badabbd7cc6fd0be6
Dmitry Kovalev [Fri, 24 Jan 2014 20:29:50 +0000 (12:29 -0800)]
Merge "Cleaning up vp9_ratectl.c file."
Alex Converse [Thu, 23 Jan 2014 21:24:20 +0000 (13:24 -0800)]
Add a method to estimate loop filter level from quantizer and frame type.
Use this method with rt at speed -5.
Change-Id: If3bd6fad4c05ddde72131442dad191e4145047e7
Yaowu Xu [Fri, 24 Jan 2014 19:34:41 +0000 (11:34 -0800)]
Fixed integer overflow for large input video
The sum of squared mv components can go beyond int range for large
input resolution. This commit changed the type to int64 to avoid
overflow.
Change-Id: Ib21ea2817845cea1435f893064e6417c79c5bc64
Frank Galligan [Fri, 24 Jan 2014 19:31:23 +0000 (11:31 -0800)]
Merge "Revert external frame buffer code."
Dmitry Kovalev [Fri, 24 Jan 2014 19:20:09 +0000 (11:20 -0800)]
Implementing simple API to read video files.
New API is supposed to be used from example code. Current implementation
only supports IVF containers (will be extended to Y4M).
Change-Id: Ib7da87237690b1a28297bdf03bc41c6836a84b7e
Dmitry Kovalev [Fri, 24 Jan 2014 19:15:01 +0000 (11:15 -0800)]
Merge "Setup pre[0] buffer before calls to {first_pass, zz}_motion_search."
Dmitry Kovalev [Thu, 23 Jan 2014 22:14:31 +0000 (14:14 -0800)]
Cleaning up vp9_ratectl.c file.
Change-Id: I8cfa5d5eb2c1bbacd9b604cc5dc0a2cd2e5cebb8
Dmitry Kovalev [Thu, 23 Jan 2014 22:55:52 +0000 (14:55 -0800)]
Inlining IFMVCV macro.
Change-Id: I5173f996612e410d9cd495df9414d194b1ab18f3
Frank Galligan [Fri, 24 Jan 2014 19:07:14 +0000 (11:07 -0800)]
Optimize vp9_tm_predictor_8x8_neon function
Change-Id: Ia12aae491202098ff66366145aa0c3da38dc97e5
hkuang [Fri, 24 Jan 2014 18:48:44 +0000 (10:48 -0800)]
Merge "Add vp9_tm_predictor_16x16 neon implementation which is 3.5 times faster than C."
James Zern [Fri, 24 Jan 2014 18:47:00 +0000 (10:47 -0800)]
Merge changes I826655a7,I5164df72,Iba9b198c,Ide9a6846,I4f51ce85,I0e6aa00f,Ic334da9a,I252f5f8a,I7865db2d,I13b434b1
* changes:
test/: remove unnecessary extern "C"s
top-level: add extern "C" to headers
vpx_ports: add extern "C" to headers
vpx: add extern "C" to headers
vp9/encoder: add extern "C" to headers
vp9/decoder: add extern "C" to headers
vp9/common: add extern "C" to headers
vp8/encoder: add extern "C" to headers
vp8/decoder: add extern "C" to headers
vp8/common: add extern "C" to headers
hkuang [Tue, 21 Jan 2014 22:49:15 +0000 (14:49 -0800)]
Add vp9_tm_predictor_16x16 neon implementation
which is 3.5 times faster than C.
Change-Id: I24439ba7a2971829c11620f34848facf2c916678
Frank Galligan [Thu, 23 Jan 2014 22:59:00 +0000 (14:59 -0800)]
Revert external frame buffer code.
A future CL will add external frame buffers
differently.
Squash commit of four revert commits:
Revert "Increase required number of external frame buffers"
This reverts commit
9e41d569d7c84dd9ca8f0047c15377a883945685.
Revert "Add external constants."
This reverts commit
bbf53047b03106e3c2e24b28cb836cc838db5ee8.
Revert "Add frame buffer lru cache."
This reverts commit
fbada948fa345e67acf9aa41a8f9a78f5dfe8648.
Conflicts:
vpxdec.c
Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005
Revert "Add support to pass in external frame buffers."
This reverts commit
10f891696bc4c972c13cc9fde2c53470501a03e2.
Conflicts:
test/external_frame_buffer_test.cc
vp9/common/vp9_alloccommon.c
vp9/common/vp9_reconinter.c
vp9/decoder/vp9_decodeframe.c
vp9/encoder/vp9_onyx_if.c
vp9/vp9_dx_iface.c
vpx/vpx_decoder.h
vpx/vpx_external_frame_buffer.h
vpx_scale/generic/yv12config.c
vpxdec.c
Change-Id: I7434cf590f1c852b38569980e4247fad0d939c2e
Adrian Grange [Fri, 24 Jan 2014 16:38:52 +0000 (08:38 -0800)]
Merge changes I24ad1f0f,I33be1366
* changes:
Reorder functions to avoid forward declaration
Rename set_scale_factors as set_ref_ptrs
Yaowu Xu [Fri, 24 Jan 2014 16:07:27 +0000 (08:07 -0800)]
Merge "Changed to prevent decoder crash"
Dmitry Kovalev [Fri, 24 Jan 2014 07:09:21 +0000 (23:09 -0800)]
Merge "Cleaning up vp9_firstpass.c file."
Dmitry Kovalev [Fri, 24 Jan 2014 06:37:36 +0000 (22:37 -0800)]
Merge "Removing get_scale_ref_frame_idx() function + cleanup."
James Zern [Sat, 18 Jan 2014 21:03:31 +0000 (13:03 -0800)]
test/: remove unnecessary extern "C"s
Change-Id: I826655a708010149de231ca31a2e3ba4f1842c0c
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
top-level: add extern "C" to headers
Change-Id: I5164df72aff84eca0ace56032c5373f04053c6a5
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vpx_ports: add extern "C" to headers
Change-Id: Iba9b198ce78b3f8b644feba064f83abc247e75dd
Dmitry Kovalev [Fri, 24 Jan 2014 01:20:34 +0000 (17:20 -0800)]
vpxdec: grouping together code with the same if conditions
Change-Id: I5e546fce725b8c4722da5494e9423154e870fd58
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vpx: add extern "C" to headers
Change-Id: Ide9a68466ed30453872465a6c2f9c414690df876
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp9/encoder: add extern "C" to headers
Change-Id: I4f51ce859a97bf1b8fd2b37ac585b7c643232b69
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp9/decoder: add extern "C" to headers
Change-Id: I0e6aa00f220280e22d30d098545265835d0c1079
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp9/common: add extern "C" to headers
Change-Id: Ic334da9aee968e33762c2b25d9fbad24c844b411
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp8/encoder: add extern "C" to headers
Change-Id: I252f5f8a5d5ada65da08699774a7bb1eb2bd5b2e
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp8/decoder: add extern "C" to headers
Change-Id: I7865db2d15ffa8cfa4de88714e48734c5ff9bb86
James Zern [Sat, 18 Jan 2014 20:16:11 +0000 (12:16 -0800)]
vp8/common: add extern "C" to headers
Change-Id: I13b434b1e6621e31962b08831c3587c039368c83