summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* merge in mnc-dr1.5-release history after reset to mnc-dr1.5-devThe Android Automerger2016-03-170-0/+0
|\
| * Decoder: Fix stack underflow in CAVLC 4x4 parse functionsHarish Mahendrakar2016-03-011-3/+15
| | | | | | | | | | Bug: 26399350 Change-Id: Id768751672a7b093ab6e53d4fc0b3188d470920e
| * Ensure ih264d_start_of_pic() is not repeated in ih264d_mark_err_slice_skip()Harish Mahendrakar2016-03-011-3/+6
|/ | | | | | | | | | | | | | In case of error in handling MMCO commpands/reference list creation, ih264d_start_of_pic() was called again in ih264d_mark_err_slice_skip() resulting in leaking a picture or an MV buffer in buffer manager. To fix this, ensure prev_slice_err is set to 1 only if u4_pic_buf_got is zero, before calling ih264d_mark_err_slice_skip() at the end of picture decode. This will ensure ih264d_start_of_pic() is not repeated Bug: 25818142 Change-Id: I7d5a9179533581eec663bc6a19a2901e7cce6af3
* Return error when there are more mmco params than allocated sizeNaveen Kumar Ponnusamy2016-01-154-4/+34
|\ | | | | | | | | | | | | am: 943323f1d9 * commit '943323f1d9d3dd5c2634deb26cbe72343ca6b3db': Return error when there are more mmco params than allocated size
| * Return error when there are more mmco params than allocated sizeNaveen Kumar Ponnusamy2016-01-134-4/+34
| | | | | | | | | | | | Bug: 25818142 Change-Id: I5c1b23985eeca5192b42703c627ca3d060e4e13d
* | Decoder Update mb count after mb map is set.Harish Mahendrakar2016-01-072-11/+6
|\| | | | | | | | | | | | | am: 4a524d3a8a * commit '4a524d3a8ae9aa20c36430008e6bd429443f8f1d': Decoder Update mb count after mb map is set.
| * Decoder Update mb count after mb map is set.Harish Mahendrakar2016-01-072-11/+6
| | | | | | | | | | | | Bug: 25928803 Change-Id: Iccc58a7dd1c5c6ea656dfca332cfb8dddba4de37
* | Remove __DATE__/__TIME__ from Android buildsDan Willemsen2015-10-302-0/+14
| | | | | | | | | | | | | | This removes unnecessary changes from build to build. Bug: 24204119 Change-Id: I25258314fe56ea186d38d756fb5fb04aa689a812 (cherry picked from commit f197ccb7562bac6f5bae40c9cb9dbb46a77baeb5)
* | Reconcile branch with master after mass cherrypicksMarco Nelissen2015-10-161-4/+0
| | | | | | | | Change-Id: Ib017480389cb9f5204e5437716653016da348dba
* | Decoder: Memset 8 extra bytes at the end of internal bitstream bufferHarish Mahendrakar2015-10-161-0/+5
| | | | | | | | | | | | | | Decoder may read 8 extra bytes at the end of this buffer, though it will never be used Setting it to zero will ensure unitialized reads are avoided Change-Id: I724239861cb9fa64f3a70cb5450e094cb3afa20c
* | Decoder: Once all the MBs in a picture are decoded ignore remaining bytesHarish Mahendrakar2015-10-162-4/+0
| | | | | | | | | | | | | | Once all the MBs are decoded, simply break from decode loops and do not signal an error This will handle cases where there may be extra bytes at the end of picture data Change-Id: I6d8ec918df5375f135e60f85b9a56ab2a5313a64
* | Decoder: Exit gracefully in case of allocation failureHarish Mahendrakar2015-10-161-0/+3
| | | | | | | | | | | | Skip error concealment when allocation fails for decoder buffers Change-Id: I785f31cad5dca52c8c67cba78cdd330b7b4539e1
* | Decoder: Added a check for unsupported resolutionsHarish Mahendrakar2015-10-131-0/+6
| | | | | | | | | | | | | | | | Decoder now returns an error for resolutions greater than 3840x2176 Bug: 24542936 Change-Id: I38be0e4c5cf2a980bfd4c781f3b49171f73b5ccb
* | Encoder added support for VUI paramsHamsalekha S2015-10-095-6/+145
| | | | | | | | | | | | | | SPS will now include vui params Removed a trailing space in ih264e_api.c Change-Id: I67a57741689206e571e9a83f7e3360149f87e06a
* | Moved check for level after check for resolution change.Hamsalekha S2015-10-091-0/+4
| | | | | | | | | | | | This is required for DRC tests in CTS . Change-Id: Icd0fe10d97c6ee55f8358682a578bddb58590de4
* | Fix a typo in gai4_ih264_max_luma_pic_sizeMartin Storsjo2015-10-091-1/+1
| |
* | Decoder: Fixed an issue in handling flushHarish Mahendrakar2015-09-252-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed a NULL pointer reference, when flush is called before decoding any pictures. This was seen in following CTS test, android.media.cts.DecoderTest#testCodecResetsH264WithSurface Fixed code formatting issues in ih264d_set_flush_mode Updated the testbench to call flush before decoding starts Bug: 24405410 Change-Id: Ib04e0b15573b2482c9d5b43c8bc7dd30d8f8efdd
* | Decoder: Fixed an out of bound read in intra pred buffersHarish Mahendrakar2015-09-251-3/+20
| | | | | | | | | | | | Bug: 23453762 Change-Id: I129e5a2ac8b9a28f3c894ebca0aef7063ca5934e (cherry picked from commit 040ec939c61f7dffb76c977b775b1bc1e82f2bde)
* | Decoder: Reduced memory requirementsHarish Mahendrakar2015-09-2320-3012/+1558
|/ | | | | | | | | | | Memory allocations are now done based on contents of SPS API changed to move allocations inside the library Also changed strlen to strnlen Bug: 24221026 Change-Id: I9130457f564cddb4da7ec6399cc9fe88ee871217
* Return error in SPS/PPS parsing when extra bytes are read from inputHarish Mahendrakar2015-09-181-2/+13
| | | | | | Bug: 24157524 Change-Id: I4b319ef8e23e1ba5f84f52b92f40ba7fb1429101
* Merge "Encoder: Fixed an issue in handling FPS greater than 60" into mnc-devRonghua Wu2015-08-031-2/+10
|\
| * Encoder: Fixed an issue in handling FPS greater than 60Harish Mahendrakar2015-08-031-2/+10
| | | | | | | | | | | | | | FPS > 60 was resulting in an integer overflow, so using float now. Bug: 22504214 Change-Id: I4626ba6a43167c00c42dd6440df37bd1eb1f151a
* | Support for level greater than level at init in DecoderHamsalekha S2015-07-314-12/+87
| | | | | | | | | | | | | | | | | | Added support to check num_ref_frames in SPS and num_reorder_frames in VUI before returning error for level Bug: 22860270 Change-Id: I392bab419385ca239836d200f9f2b064915a8a46
* | Decoder: Fixed issues shown by ValgrindHamsalekha S2015-07-312-20/+29
| | | | | | | | | | | | | | | | | | The slice header structure has now been initialized to 0 Fixed bug in closing of threads in the case of error. Bug: 22860270 Change-Id: I777e0b73ad2f083c72be179984f5c1cb00ededb6
* | Don't use side effects in the macro PUT_BITS_SEV parametersMartin Storsjo2015-07-311-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | If ENTROPY_TRACE is defined, the value parameter gets evaluated twice. Since this parameter includes ++, the pointer gets incremented twice. This fixes encoding with trace enabled. Bug: 22860270 Change-Id: I3d71ac33d007301e488d264a33c7b5c4d4ff2b56
* | Made gops closedHarinarayanan K K2015-07-313-10/+13
| | | | | | | | | | | | | | | | | | | | Now no picture in a gop will depend on any picture in the previous gop All calls to force an IDR are respected as soon as possible Bug: 22860270 Change-Id: Id2bcd5687c3fb786336a01894c1b9228d67a87a6
* | Always do recon of 4x4 intra blocksMartin Storsjo2015-07-311-21/+13
| | | | | | | | | | | | | | | | | | | | | | | | Even if this 4x4 block isn't at the bottom or right border, the other 4x4 intra blocks within the same macroblock may use it for intra prediction. This fixes intra coded macroblocks in b-frames. Bug: 22860270 Change-Id: Ifdf48c1b2bbf232e785d6d5b8244aacba1ad3dd6
* | Validate the u4_entropy_coding_mode fieldMartin Storsjo2015-07-312-0/+12
| | | | | | | | | | | | | | | | | | Previously, if this field wasn't set, the invalid coding mode could lead to crashes later. Bug: 22860270 Change-Id: If8dd2f8d5f2fbdd6bb76772344f959df23159167
* | Fixed issue in cost computation for BIPRED MEHarinarayanan K K2015-07-311-4/+4
| | | | | | | | | | | | | | | | | | BIPRED ME was discarding the halfpel motion vector components in cost computation. That is fixed now. Bug: 22860270 Change-Id: If6c77096d701a258920b14134ff120fd1540f254
* | Cabac optimizationsDoney Alex2015-07-313-75/+32
| | | | | | | | | | | | | | | | | | | | Optimized cabac functions for writing bypass bins. Removed unused return from cabac flush function. Removed the macro REV_NBITS. Bug: 22860270 Change-Id: Iece82797f2f45a35281817a2b77a7c7fe4e02bd1
* | Use INT_MAX as i4_max_sad in ih264e_evaluate_bipredMartin Storsjo2015-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The stored i4_mb_distortion that was used as i4_max_sad previously might come from a different coding mode - even if pf_ime_compute_sad_16x16 returns early when i4_mb_distortion is larger than ps_mb_ctxt_bi->i4_mb_distortion, the calculated i4_mb_cost can still end up smaller than ps_mb_ctxt_bi->i4_mb_cost. Therefore, set i4_max_sad to INT_MAX to avoid the early exit in pf_ime_compute_sad_16x16 here, since it can't be used reliably (and returning early can end up choosing a suboptimal mode). This makes sure that the encoded output is identical when the SIMD optimized routines are disabled, when using B-frames. Bug: 22860270 Change-Id: I9b8d524f88020e557541700133c7a0b48fe6a3b8
* | Make sure that apv_bufs[0] and u4_is_last always are setMartin Storsjo2015-07-312-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | When encoding in header mode, the s_inp_buf struct that was written to ps_video_encode_op->s_ive_op.s_inp_buf was completely uninitialized. In ih264e_input_queue_update, make sure to initialize u4_is_last when skipping frames. Bug: 22860270 Change-Id: I87e677acd00baf4f732ca7d35ee192e7f1f73994
* | avcenc: Initialize avg_timeMartin Storsjo2015-07-311-0/+1
| | | | | | | | | | | | | | | | This fixes valgrind warnings when encoding with b-frames. Bug: 22860270 Change-Id: I922314e5e6fd09db3ba60e60863e2611309886d5
* | Check the width/height and adjust level used for RCMartin Storsjo2015-07-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 6cb6772805, the actual level used is MAX(u4_max_level, ih264e_get_min_level()), which means that it isn't a fatal error to set u4_max_level to a too low level (if the caller doesn't know or care). Despite this, the actual value set by the caller was still used for initializing the RC. This allows the caller to not have to set u4_max_level (currently every caller has to duplicate a table or code snippet for determining the right level for each resolution). The caller still can set it to a higher value if he wants to explicitly use a higher level than what is necessary. This makes sure that the output is identical even if u4_max_level is set too low. Bug: 22860270 Change-Id: Icdc6c0652a97568d1eafc050226357a9d643d809
* | Fixed encode of trailing B framesHarinarayanan K K2015-07-311-0/+80
| | | | | | | | | | | | | | | | | | In case a P frame was marked as the last frame to encode, the B frames previous to it in the same gop were not getting encoded. This is fixed now. Bug: 22860270 Change-Id: I871f2a1d52b8db9ee75426b00287b58203586f23
* | Remove the now unused stride field from the set dimensions structMartin Storsjo2015-07-313-13/+0
| | | | | | | | | | | | | | | | | | Since 90a3904fd3 and d020be5ac7, this field doesn't have any actual effect - the strides are taken from the input pictures. Bug: 22860270 Change-Id: I9b08cbf8ee558e038d0017a6176d7b3bd3c428bd
* | Fixed encode of single frameHarinarayanan K K2015-07-311-1/+1
| | | | | | | | | | | | | | | | | | Encoding a single frame used to make encoder to go into infinite loop. That is fixed now Bug: 22860270 Change-Id: I51752bdc5fd6071868884c2ff6074c14d05c8564
* | Don't declare variables after statementsMartin Storsjo2015-07-313-20/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | This fixes building with compilers that are strict about the pre-C99 rule about having all variable declarations before statements. (The previous version of this commit was originally made before the commit adding support for main profile, which added a bunch more similar issues.) Bug: 22860270 Change-Id: I0a927deb2ef4125f79429d108439e249fa531607
* | Mark arrays of pointers as constMartin Storsjo2015-07-312-4/+4
| | | | | | | | | | | | | | | | | | Previously they were only marked as the pointers pointing to const data, but the array themselves being non-const. Bug: 22860270 Change-Id: Ib5a9af6298615b2c40367a21e728899418b09935
* | Don't set -mno-avxMartin Storsjo2015-07-314-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | There is no point in intentionally disabling this feature; it isn't enabled by default by the compiler - and if it were to be enabled by default (if the toolchain baseline includes it, because it can be expected to be supported everywhere) there would be no reason to disable it. Bug: 22860270 Change-Id: I67019eea63c4fb7183d9e47cf16bc8485022fef2
* | Remove double semicolons (empty statements)Martin Storsjo2015-07-312-2/+2
|/ | | | | | | | Some compilers can't handle this, and these occurrances are typos. Bug: 22860270 Change-Id: I82349f103cef1f196d1a85dae307aff83c7d6090
* Fix MIPS buildMarco Nelissen2015-06-251-1/+1
| | | | Change-Id: I8190ce01d313f987f142a0c7ef5ae31f01562510
* Remove all other thread implementations than pthreadMartin Storsjo2015-06-251-368/+0
| | | | Change-Id: Id30fc1a9c007f2f32ed3375bbf02085f0edad5a0
* Don't declare variables after statementsMartin Storsjo2015-06-2510-39/+55
| | | | | | | This fixes building with compilers that are strict about the pre-C99 rule about having all variable declarations before statements. Change-Id: I06dd0cc42a6dbe90025c3c913a0c8d9ffb0acbcb
* Reorder code to avoid reading uninitialized dataMartin Storsjo2015-06-251-2/+2
| | | | | | | | | If the current slice isn't BSLICE, u1_weighted_bipred_idc is uninitialized, which valgrind can complain about (mostly in uninitialized builds). By reordering the conditions, we avoid doing conditional jumps based on uninitialized data. Change-Id: I4d601fd1a4e34d85fe5992ecb934ac3747953960
* Force regenerating the header via i4_gen_header instead of i4_header_modeMartin Storsjo2015-06-252-1/+2
| | | | | | | | | | | | If i4_header_mode is set (without the caller explicitly requesting it), the next frame to be encoded will be missed altogether (when only a header is output). Instead force a header to be generated prepended to the next frame. If the caller explicitly requests header mode, it will be output in a separate call. Change-Id: If475717edf980bccb2076f880c60c9dd7dede904
* Don't use static structs for rc initMartin Storsjo2015-06-2512-13/+13
| | | | | | | | | | | | | Most of them was benign and didn't risk any data race; they were used for write-only memory during init. The array as_itt_memtab in ih264e_get_rate_control_mem_tab could however cause a real data race, if multiple threads try to initialize an encoder at the same time, since it used as temporary storage when mapping between different structs. Change-Id: I3ca29f0e3be2fad154becc3ee29867e591975a74
* Initialize i4_non_ref_frames_in_stream before encoding SPS/PPSMartin Storsjo2015-06-252-6/+6
| | | | | | | When header mode is enabled, the SPS is populated before this field was initialized in ih264e_pic_init. Change-Id: I7e38828e12bee15bd3a53562b4e4d0d65354326a
* avcenc: Make sure that "avcenc --help" works as intendedMartin Storsjo2015-06-251-0/+5
| | | | | | | The --help option is handled by the normal argument parsing loop below, but that is only invoked if argc > 2. Change-Id: Icff3625412c340565c062628f2657c41db73068e
* avcenc: Check that enough arguments exist before parsingMartin Storsjo2015-06-251-1/+1
| | | | | | | | | Each round in the loop uses both argv[i] and argv[i + 1]. This fixes crashes if given an odd number of parameters, 3 or more. Change-Id: I9b8be99042eb7d0f69ebd87166d9cc920d15a950