summaryrefslogtreecommitdiffstats
path: root/encoder/ih264e_utils.c
Commit message (Collapse)AuthorAgeFilesLines
* Made gops closedHarinarayanan K K2015-07-311-7/+10
| | | | | | | | | | 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
* Make sure that apv_bufs[0] and u4_is_last always are setMartin Storsjo2015-07-311-1/+7
| | | | | | | | | | | | 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
* 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
* Initialize i4_non_ref_frames_in_stream before encoding SPS/PPSMartin Storsjo2015-06-251-6/+0
| | | | | | | When header mode is enabled, the SPS is populated before this field was initialized in ih264e_pic_init. Change-Id: I7e38828e12bee15bd3a53562b4e4d0d65354326a
* Reduced memory requirements.Harinarayanan K K2015-06-251-14/+17
| | | | | | | | | | | | | | | | Buffer allocation is based on minimum level required for the input resolution rather than the input max level. Number of maximum context sets can be set to 1 to reduce memory usage. Added a macro ENC_MIN_PU_SIZE for minimum size of inter prediction unit supported by encoder. Changed the maximum constraint on number of MBs for NMB processing to width in Mbs. Change-Id: I5a9255e93935d90c13262681aafc772aedf8ae81
* Fixed issues with forcing I and IDR frames.Harinarayanan K K2015-06-251-19/+30
| | | | | | | | | | Setting I frame interval to 1 caused encoder to go into infinite loop. Fixed that by stopping RC update. Forcing of I and IDR frame did not cause the frames at expected time due to delayed encoding. This is fixed now. Change-Id: Ibf549fb335c053ee33de768455b20e46be3e7c1c
* Remove the codec level stride fieldMartin Storsjo2015-06-251-10/+0
| | | | | | | | | This field isn't used at the moment at all. The public field ive_ctl_set_dimensions_ip_t.u4_strd is kept to avoid breaking other calling code, although it doesn't have any actual function any longer. Change-Id: Icfc88846fa63f209c67b8e1f8e0cc21bc4ddb73a
* Use a separate field for the chroma strideMartin Storsjo2015-06-251-0/+1
| | | | | | | | | | | | | | When both luma and chroma are copied to the local buffer (either due to yuv format conversion, or due to padding), they have got the same stride, but if chroma is copied while luma is used directly from the input buffer, they might have different strides. Therefore add a separate field for chroma stride. This commit only adds the field, while it still has got the same value as before. Change-Id: I0dce97ad4d91cd1d9aba4b4472c6a0de45a314bc
* Added support for Main Profile toolsets in encoder.Harinarayanan K K2015-06-251-133/+426
| | | | | | | | Added support for CABAC entropy coding. Added support for B slices. Fixed an issue in rate control constant QP mode. Change-Id: Ib759d35e8e943f941aa9b8bbff0362d92c619994
* Support levels 5.0 and 5.1 in the encoder properlyMartin Storsjo2015-06-031-0/+8
| | | | | | | | The function ih264e_get_lvl_idx lacked handling of them before, which meant that it returned index 0 (corresponding to level 1.0) if level 5.0 or 5.1 were selected. Change-Id: I482213e68e11fd091c72ec57a593392aa1a0a4ae
* Include space for chroma in the padding allocated in ↵Martin Storsjo2015-06-031-1/+1
| | | | | | | | | | | | | | ih264e_get_total_pic_buf_size Chroma is already accounted for in e.g. num_samples by multiplying the number of luma samples by 3/2, so include it in the padding calculation as well. This fixes encoding 176x144 at level 1.0 - normally this isn't an issue since the padding is a bit overestimated, but for this particular resolution/level combination, it fails unless this is calculated properly. Change-Id: Id5df6e5aee4d3d78f4c28a3b7d5fed6fe42a1f2c
* fix file permissionsLajos Molnar2015-05-051-0/+0
| | | | Change-Id: Ia4f99d5b963acd8d8a1afc2fbdf06b122d898f63
* Initial versionHamsalekha S2015-04-021-0/+1804
Change-Id: I7efe9a589cd24edf86e8d086b40c27cbbf8b4017