From 4e091252cb061b97cbb4a214199c174dd26e453d Mon Sep 17 00:00:00 2001 From: Harish Mahendrakar Date: Tue, 28 Apr 2015 19:07:40 +0530 Subject: Fixed few issues seen in CTS tests Added support for encoding non-multiple of 16 dimensions Added support for encoding dimensions smaller than 64x64 Aligned coeff data to 4 byte boundary Bug: 20554276 Change-Id: I111093950f94698296d8499a2845cfe2db6c557b --- common/ih264_macros.h | 2 +- decoder/ih264d_parse_headers.c | 19 -------- encoder/arm/ih264e_fmt_conv.s | 7 +-- encoder/ih264e_cavlc.c | 1 + encoder/ih264e_cavlc.h | 26 +++++----- encoder/ih264e_core_coding.c | 15 +++--- encoder/ih264e_process.c | 107 ++++++++++++++++++++++++----------------- test/encoder/app.h | 1 - test/encoder/input.c | 6 +-- test/encoder/main.c | 8 +-- 10 files changed, 94 insertions(+), 98 deletions(-) diff --git a/common/ih264_macros.h b/common/ih264_macros.h index 6e4cb16..969012f 100755 --- a/common/ih264_macros.h +++ b/common/ih264_macros.h @@ -48,7 +48,7 @@ #define ALIGN16(x) ((((x) + 15) >> 4) << 4) #define ALIGN8(x) ((((x) + 7) >> 3) << 3) #define ALIGN4(x) ((((x) + 3) >> 2) << 2) - +#define ALIGN2(x) ((((x) + 1) >> 1) << 1) /** ****************************************************************************** diff --git a/decoder/ih264d_parse_headers.c b/decoder/ih264d_parse_headers.c index 9458d6b..de5bcb9 100755 --- a/decoder/ih264d_parse_headers.c +++ b/decoder/ih264d_parse_headers.c @@ -958,28 +958,9 @@ WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm) return ret; } - /* - * Code Add to check for display width. - * This has to be at the end of the SPS parsing, so everything gets - * parsed and the error will not affect decoding. - * */ - if((0 != ps_dec->u4_app_disp_width) - && (ps_dec->u4_app_disp_width < ps_dec->u2_pic_wd)) - { - ps_dec->u4_app_disp_width = ps_dec->u2_pic_wd; - return ERROR_DISP_WIDTH_RESET_TO_PIC_WIDTH; - } - - - ps_dec->u2_pic_wd = u2_pic_wd; ps_dec->u2_pic_ht = u2_pic_ht; - /* Added temporarily to give pic height and width as display height */ - /* and width in case some cropping errors occur` */ - /*ps_dec->u2_disp_height = ps_dec->u2_pic_ht; - ps_dec->u2_disp_width = ps_dec->u2_pic_wd;*/ - /* Determining the Width and Height of Frame from that of Picture */ ps_dec->u2_frm_wd_y = u2_frm_wd_y; diff --git a/encoder/arm/ih264e_fmt_conv.s b/encoder/arm/ih264e_fmt_conv.s index 2bf1479..2c04141 100755 --- a/encoder/arm/ih264e_fmt_conv.s +++ b/encoder/arm/ih264e_fmt_conv.s @@ -83,7 +83,6 @@ ih264e_fmt_conv_420p_to_420sp_a9q: sub r7, r7, r5 @// Source increment sub r8, r8, r5 @// Destination increment - vpush {d8-d15} yuv420sp_uv_row_loop_y: mov r6, r5 @@ -134,7 +133,7 @@ yuv420sp_uv_chroma: mov r5, r5, lsr #1 mov r4, r4, lsr #1 ldr r3, [sp, #40] @// Load pu1_dest_uv from stack - vpush {d8-d15} + yuv420sp_uv_row_loop_uv: mov r6, r5 @@ -171,7 +170,6 @@ yuv420sp_uv_row_loop_end_uv: subs r4, r4, #1 bgt yuv420sp_uv_row_loop_uv @//POP THE REGISTERS - vpop {d8-d15} ldmfd sp!, {r4-r12, pc} @@ -276,8 +274,6 @@ ih264e_fmt_conv_422i_to_420sp_a9q: add r4, r12, r4 @// u2_offset1 = u2_offset1 + u4_stride_y add r5, r14, r5, lsl #1 @// u2_offset_yuv422i = u2_offset_yuv422i + u4_stride_yuv422i - vpush {d8-d15} - @// Register Assignment @// pu1_y - r0 @// pu1_y_nxt_row - r6 @@ -322,7 +318,6 @@ yuv420_to_yuv422i_width_loop: add r8, r8, r5 @// pu2_yuv422i_nxt_row = pu2_yuv422i_nxt_row + u2_offset_yuv422i bgt yuv420_to_yuv422i_hight_loop - vpop {d8-d15} ldmfd sp!, {r4-r12, pc} @// Restore the register which are used diff --git a/encoder/ih264e_cavlc.c b/encoder/ih264e_cavlc.c index 1341dcd..1f98b6a 100755 --- a/encoder/ih264e_cavlc.c +++ b/encoder/ih264e_cavlc.c @@ -59,6 +59,7 @@ #include "iv2.h" #include "ive2.h" #include "ih264_debug.h" +#include "ih264_macros.h" #include "ih264_defs.h" #include "ih264e_defs.h" #include "ih264e_error.h" diff --git a/encoder/ih264e_cavlc.h b/encoder/ih264e_cavlc.h index 86f4cd4..acd0def 100755 --- a/encoder/ih264e_cavlc.h +++ b/encoder/ih264e_cavlc.h @@ -43,20 +43,20 @@ /*****************************************************************************/ #define PARSE_COEFF_DATA_BLOCK_4x4(pv_mb_coeff_data, ps_mb_coeff_data, u4_nnz, u4_sig_coeff_map, pi2_res_block) \ +{\ + ps_mb_coeff_data = pv_mb_coeff_data; \ + u4_nnz = ps_mb_coeff_data->i4_sig_map_nnz & 0xff; \ + if (u4_nnz)\ {\ - ps_mb_coeff_data = pv_mb_coeff_data; \ - u4_nnz = ps_mb_coeff_data->i4_sig_map_nnz & 0xff; \ - if (u4_nnz)\ - {\ - u4_sig_coeff_map = ps_mb_coeff_data->i4_sig_map_nnz >> 16; \ - pi2_res_block = ps_mb_coeff_data->ai2_residue; \ - pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue + u4_nnz; \ - }\ - else\ - {\ - pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue;\ - }\ - } + u4_sig_coeff_map = ps_mb_coeff_data->i4_sig_map_nnz >> 16; \ + pi2_res_block = ps_mb_coeff_data->ai2_residue; \ + pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz); \ + }\ + else\ + {\ + pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue;\ + }\ +} /*****************************************************************************/ diff --git a/encoder/ih264e_core_coding.c b/encoder/ih264e_core_coding.c index 5ba18de..89243a5 100755 --- a/encoder/ih264e_core_coding.c +++ b/encoder/ih264e_core_coding.c @@ -58,6 +58,7 @@ #include "ih264_platform_macros.h" #include "iv2.h" #include "ive2.h" +#include "ih264_macros.h" #include "ih264_defs.h" #include "ih264e_defs.h" #include "ih264_trans_data.h" @@ -843,7 +844,7 @@ void ih264e_pack_l_mb_i16(WORD16 *pi2_res_mb, } /* write significant coeff map */ ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); u4_cntrl = 0x00008000;// Set DC bit in ctrl code } @@ -896,7 +897,7 @@ void ih264e_pack_l_mb_i16(WORD16 *pi2_res_mb, } /* write significant coeff map */ ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); *u1_cbp_l = 15; u4_cntrl |= (1 << (31 - u1_scan_order[b4])); @@ -1059,7 +1060,7 @@ void ih264e_pack_l_mb(WORD16 *pi2_res_mb, /* write significant coeff map */ ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); /* cbp */ *u1_cbp_l |= (1 << b8); @@ -1283,7 +1284,7 @@ void ih264e_pack_c_mb(WORD16 *pi2_res_mb, } /* write significant coeff map U/V */ ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); *u1_cbp_c = 1; (*pu4_cntrl) |= (1 << cntrl_pos); @@ -1388,7 +1389,7 @@ void ih264e_pack_c_mb(WORD16 *pi2_res_mb, /* write significant coeff map U/V */ ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); u1_cbp_ac = 2; (*pu4_cntrl) |= 1 << cntrl_pos; @@ -1804,7 +1805,7 @@ UWORD8 ih264e_code_luma_intra_macroblock_4x4(process_ctxt_t *ps_proc) ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); /* update ptr to coeff data */ - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); /* cbp */ u1_cbp_l |= (1 << b8); @@ -1950,7 +1951,7 @@ UWORD8 ih264e_code_luma_intra_macroblock_4x4_rdopt_on(process_ctxt_t *ps_proc) ps_mb_coeff_data->i4_sig_map_nnz |= (u4_s_map << 16); /* update ptr to coeff data */ - (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + u4_nnz_cnt; + (*pv_mb_coeff_data) = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz_cnt); /* cbp */ u1_cbp_l |= (1 << b8); diff --git a/encoder/ih264e_process.c b/encoder/ih264e_process.c index 9a468e9..fa67d84 100755 --- a/encoder/ih264e_process.c +++ b/encoder/ih264e_process.c @@ -778,13 +778,6 @@ WORD32 ih264e_update_proc_ctxt(process_ctxt_t *ps_proc) /* sub mb modes */ UWORD8 *pu1_top_mb_intra_modes = ps_proc->pu1_top_mb_intra_modes + (i4_mb_x << 4); -// /* zero mv */ -// mv_t zero_mv = {0, 0}; - - /* Pad the MB to support non standard sizes */ - UWORD32 u4_pad_right_sz = ps_codec->s_cfg.u4_wd - ps_codec->s_cfg.u4_disp_wd; - UWORD32 u4_pad_bottom_sz = ps_codec->s_cfg.u4_ht - ps_codec->s_cfg.u4_disp_ht; - /*************************************************************/ /* During MV prediction, when top right mb is not available, */ /* top left mb info. is used for prediction. Hence the curr */ @@ -946,28 +939,6 @@ WORD32 ih264e_update_proc_ctxt(process_ctxt_t *ps_proc) ps_proc->pu1_rec_buf_chroma += MB_SIZE; ps_proc->pu1_ref_buf_chroma += MB_SIZE; - /* pad right edge */ - if (u4_pad_right_sz && (ps_proc->i4_mb_x == i4_wd_mbs - 1)) - { - ih264_pad_right_luma( - ps_proc->pu1_src_buf_luma + MB_SIZE - u4_pad_right_sz, - ps_proc->i4_src_strd, MB_SIZE, u4_pad_right_sz); - - ih264_pad_right_chroma( - ps_proc->pu1_src_buf_chroma + MB_SIZE - u4_pad_right_sz, - ps_proc->i4_src_strd, BLK8x8SIZE, u4_pad_right_sz); - } - - /* pad bottom edge */ - if (u4_pad_bottom_sz && (ps_proc->i4_mb_y == i4_ht_mbs - 1) && - ps_proc->i4_mb_x != 0) - { - ih264_pad_bottom(ps_proc->pu1_src_buf_luma + (MB_SIZE - u4_pad_bottom_sz) * ps_proc->i4_src_strd, - ps_proc->i4_src_strd, MB_SIZE, u4_pad_bottom_sz); - - ih264_pad_bottom(ps_proc->pu1_src_buf_chroma + (MB_SIZE - u4_pad_bottom_sz) * ps_proc->i4_src_strd / 2, - ps_proc->i4_src_strd, MB_SIZE, (u4_pad_bottom_sz / 2)); - } /* Reset cost, distortion params */ ps_proc->i4_mb_cost = INT_MAX; @@ -1051,7 +1022,10 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) UWORD8 *pu1_y_buf_base, *pu1_u_buf_base, *pu1_v_buf_base; /* Pad the MB to support non standard sizes */ + UWORD32 u4_pad_right_sz = ps_codec->s_cfg.u4_wd - ps_codec->s_cfg.u4_disp_wd; UWORD32 u4_pad_bottom_sz = ps_codec->s_cfg.u4_ht - ps_codec->s_cfg.u4_disp_ht; + UWORD16 u2_num_rows = MB_SIZE; + WORD32 convert_uv_only; /********************************************************************/ /* BEGIN INIT */ @@ -1064,14 +1038,27 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) ps_proc->i4_nmb_ntrpy = (ps_proc->i4_wd_mbs > MAX_NMB) ? MAX_NMB : ps_proc->i4_wd_mbs; ps_proc->u4_nmb_me = (ps_proc->i4_wd_mbs > MAX_NMB)? MAX_NMB : ps_proc->i4_wd_mbs; + convert_uv_only = 1; + if (u4_pad_bottom_sz && (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1)) + { + u2_num_rows = (UWORD16) MB_SIZE - u4_pad_bottom_sz; + ps_proc->pu1_src_buf_luma_base = ps_codec->pu1_y_csc_buf_base; + ps_proc->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma_base + (i4_mb_x * MB_SIZE) + ps_codec->s_cfg.u4_max_wd * (i4_mb_y * MB_SIZE); + convert_uv_only = 0; + + } + else + ps_proc->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma_base + (i4_mb_x * MB_SIZE) + i4_src_strd * (i4_mb_y * MB_SIZE); + /* init buffer pointers */ - ps_proc->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma_base + (i4_mb_x * MB_SIZE) + i4_src_strd * (i4_mb_y * MB_SIZE); - ps_proc->pu1_src_buf_chroma = ps_proc->pu1_src_buf_chroma_base + (i4_mb_x * MB_SIZE) + i4_src_strd * (i4_mb_y * BLK8x8SIZE); + + ps_proc->pu1_src_buf_chroma = ps_proc->pu1_src_buf_chroma_base + (i4_mb_x * MB_SIZE) + ps_codec->s_cfg.u4_max_wd * (i4_mb_y * BLK8x8SIZE); ps_proc->pu1_rec_buf_luma = ps_proc->pu1_rec_buf_luma_base + (i4_mb_x * MB_SIZE) + i4_rec_strd * (i4_mb_y * MB_SIZE); ps_proc->pu1_rec_buf_chroma = ps_proc->pu1_rec_buf_chroma_base + (i4_mb_x * MB_SIZE) + i4_rec_strd * (i4_mb_y * BLK8x8SIZE); ps_proc->pu1_ref_buf_luma = ps_proc->pu1_ref_buf_luma_base + (i4_mb_x * MB_SIZE) + i4_rec_strd * (i4_mb_y * MB_SIZE); ps_proc->pu1_ref_buf_chroma = ps_proc->pu1_ref_buf_chroma_base + (i4_mb_x * MB_SIZE) + i4_rec_strd * (i4_mb_y * BLK8x8SIZE); + /* * Do color space conversion * NOTE : We assume there that the number of MB's to process will not span multiple rows @@ -1095,12 +1082,13 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) ps_codec->pf_ih264e_conv_420p_to_420sp( pu1_y_buf_base, pu1_u_buf_base, pu1_v_buf_base, ps_proc->pu1_src_buf_luma, - ps_proc->pu1_src_buf_chroma, MB_SIZE, - ps_proc->i4_wd_mbs * MB_SIZE, + ps_proc->pu1_src_buf_chroma, u2_num_rows, + ps_codec->s_cfg.u4_disp_wd, ps_proc->s_inp_buf.s_raw_buf.au4_strd[0], ps_proc->s_inp_buf.s_raw_buf.au4_strd[1], ps_proc->s_inp_buf.s_raw_buf.au4_strd[2], - ps_proc->i4_src_strd, ps_proc->i4_src_strd, 1); + ps_proc->i4_src_strd, ps_proc->i4_src_strd, + convert_uv_only); break; case IV_YUV_422ILE : @@ -1111,7 +1099,7 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) ps_proc->pu1_src_buf_luma, ps_proc->pu1_src_buf_chroma, ps_proc->pu1_src_buf_chroma + 1, pu1_y_buf_base, - ps_proc->i4_wd_mbs * MB_SIZE, MB_SIZE, + ps_codec->s_cfg.u4_disp_wd, u2_num_rows, ps_proc->i4_src_strd, ps_proc->i4_src_strd, ps_proc->i4_src_strd, ps_proc->s_inp_buf.s_raw_buf.au4_strd[0] >> 1); @@ -1121,16 +1109,36 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) break; } + if (u4_pad_right_sz && (ps_proc->i4_mb_x == 0) && + (ps_proc->i4_src_strd > (WORD32)ps_codec->s_cfg.u4_disp_wd) ) + { + UWORD32 u4_pad_wd, u4_pad_ht; + u4_pad_wd = (UWORD32)(ps_proc->i4_src_strd - ps_codec->s_cfg.u4_disp_wd); + u4_pad_wd = MIN(u4_pad_right_sz, u4_pad_wd); + u4_pad_ht = MB_SIZE; + if(ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1) + u4_pad_ht = MIN(MB_SIZE, (MB_SIZE - u4_pad_bottom_sz)); + + ih264_pad_right_luma( + ps_proc->pu1_src_buf_luma + ps_codec->s_cfg.u4_disp_wd, + ps_proc->i4_src_strd, u4_pad_ht, u4_pad_wd); + + ih264_pad_right_chroma( + ps_proc->pu1_src_buf_chroma + ps_codec->s_cfg.u4_disp_wd, + ps_proc->i4_src_strd, u4_pad_ht / 2, u4_pad_wd); + } + /* pad bottom edge */ if (u4_pad_bottom_sz && (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1) && ps_proc->i4_mb_x == 0) { ih264_pad_bottom(ps_proc->pu1_src_buf_luma + (MB_SIZE - u4_pad_bottom_sz) * ps_proc->i4_src_strd, - ps_proc->i4_src_strd, MB_SIZE, u4_pad_bottom_sz); + ps_proc->i4_src_strd, ps_proc->i4_src_strd, u4_pad_bottom_sz); ih264_pad_bottom(ps_proc->pu1_src_buf_chroma + (MB_SIZE - u4_pad_bottom_sz) * ps_proc->i4_src_strd / 2, - ps_proc->i4_src_strd, MB_SIZE, (u4_pad_bottom_sz / 2)); + ps_proc->i4_src_strd, ps_proc->i4_src_strd, (u4_pad_bottom_sz / 2)); } + /* packed mb coeff data */ ps_proc->pv_mb_coeff_data = ((UWORD8 *)ps_proc->pv_pic_mb_coeff_data) + i4_mb_y * ps_codec->u4_size_coeff_data; @@ -1266,7 +1274,7 @@ IH264E_ERROR_T ih264e_pad_recon_buffer(process_ctxt_t *ps_proc, /* padding left chroma */ ps_codec->pf_pad_left_chroma(pu1_curr_pic_chroma, i4_rec_strd, i4_pad_ht >> 1, PAD_LEFT); } - else if (i4_mb_x == ps_proc->i4_wd_mbs - 1) + if (i4_mb_x == ps_proc->i4_wd_mbs - 1) { /* padding right luma */ ps_codec->pf_pad_right_luma(pu1_curr_pic_luma + MB_SIZE, i4_rec_strd, i4_pad_ht, PAD_RIGHT); @@ -1300,7 +1308,7 @@ IH264E_ERROR_T ih264e_pad_recon_buffer(process_ctxt_t *ps_proc, wd += PAD_LEFT; } - else if (i4_mb_x == ps_proc->i4_wd_mbs - 1) + if (i4_mb_x == ps_proc->i4_wd_mbs - 1) { wd += PAD_RIGHT; } @@ -1415,7 +1423,7 @@ IH264E_ERROR_T ih264e_dblk_pad_hpel_processing_n_mbs(process_ctxt_t *ps_proc, } } - if (i4_mb_y > 0) + if ((i4_mb_y > 0) || (i4_mb_y == (ps_proc->i4_ht_mbs - 1))) { /* if number of mb's to be processed are less than 'N', go back. * exception to the above clause is end of row */ @@ -1442,10 +1450,10 @@ IH264E_ERROR_T ih264e_dblk_pad_hpel_processing_n_mbs(process_ctxt_t *ps_proc, } /* performing deblocking for required number of MBs */ - if (ps_proc->u4_disable_deblock_level != 1) + if ((i4_mb_y > 0) && (ps_proc->u4_disable_deblock_level != 1)) { /* Top or Top right MBs not deblocked */ - if (u4_deblk_prev_row != 1) + if ((u4_deblk_prev_row != 1) && (i4_mb_y > 0)) { return IH264E_SUCCESS; } @@ -1483,7 +1491,7 @@ IH264E_ERROR_T ih264e_dblk_pad_hpel_processing_n_mbs(process_ctxt_t *ps_proc, } } - else + else if(i4_mb_y > 0) { ps_deblk->i4_mb_x += i4_n_mb_process_count; @@ -1606,6 +1614,19 @@ IH264E_ERROR_T ih264e_dblk_pad_hpel_processing_n_mbs(process_ctxt_t *ps_proc, } + /* In case height is less than 2 MBs pad top */ + if (ps_proc->i4_ht_mbs <= 2) + { + UWORD8 *pu1_pad_top_src; + /* padding top luma */ + pu1_pad_top_src = ps_proc->pu1_rec_buf_luma_base - PAD_LEFT; + ps_codec->pf_pad_top(pu1_pad_top_src, i4_rec_strd, i4_rec_strd, PAD_TOP); + + /* padding top chroma */ + pu1_pad_top_src = ps_proc->pu1_rec_buf_chroma_base - PAD_LEFT; + ps_codec->pf_pad_top(pu1_pad_top_src, i4_rec_strd, i4_rec_strd, (PAD_TOP >> 1)); + } + /* padding bottom luma */ pu1_pad_bottom_src = ps_proc->pu1_rec_buf_luma_base + ps_proc->i4_ht_mbs * MB_SIZE * i4_rec_strd - PAD_LEFT; ps_codec->pf_pad_bottom(pu1_pad_bottom_src, i4_rec_strd, i4_rec_strd, PAD_BOT); diff --git a/test/encoder/app.h b/test/encoder/app.h index 8c409b8..7c16fcd 100755 --- a/test/encoder/app.h +++ b/test/encoder/app.h @@ -127,7 +127,6 @@ #define DEFAULT_EPROFILE IV_PROFILE_BASE #define DEFAULT_SLICE_MODE 0 #define DEFAULT_SLICE_PARAM 256 -#define DEFAULT_ARCH ARCH_ARM_A9Q #define STRLENGTH 500 diff --git a/test/encoder/input.c b/test/encoder/input.c index aa52b45..c292612 100755 --- a/test/encoder/input.c +++ b/test/encoder/input.c @@ -243,10 +243,8 @@ void allocate_input(app_ctxt_t *ps_app_ctxt) num_bufs = MIN(DEFAULT_MAX_INPUT_BUFS, num_bufs); /* Size of buffer */ - luma_size = ps_get_buf_info_op->s_ive_op.au4_min_in_buf_size[0]; - chroma_size = ps_get_buf_info_op->s_ive_op.au4_min_in_buf_size[1]+ - ps_get_buf_info_op->s_ive_op.au4_min_in_buf_size[2]; - + luma_size = ps_app_ctxt->u4_wd * ps_app_ctxt->u4_ht; + chroma_size = luma_size >> 1; pic_size = luma_size + chroma_size; num_mbs = ALIGN16(ps_app_ctxt->u4_max_wd) * ALIGN16(ps_app_ctxt->u4_max_ht); diff --git a/test/encoder/main.c b/test/encoder/main.c index b02958a..2a9635d 100755 --- a/test/encoder/main.c +++ b/test/encoder/main.c @@ -905,7 +905,7 @@ void init_default_params(app_ctxt_t *ps_app_ctxt) ps_app_ctxt->u4_pics_cnt = 0; ps_app_ctxt->e_inp_color_fmt = DEFAULT_INP_COLOR_FMT; ps_app_ctxt->e_recon_color_fmt = DEFAULT_RECON_COLOR_FMT; - ps_app_ctxt->e_arch = DEFAULT_ARCH; + ps_app_ctxt->e_arch = ARCH_ARM_A9Q; ps_app_ctxt->e_soc = SOC_GENERIC; ps_app_ctxt->header_generated = 0; ps_app_ctxt->pv_codec_obj = NULL; @@ -1604,9 +1604,9 @@ void synchronous_encode(iv_obj_t *ps_enc, app_ctxt_t *ps_app_ctxt) { /* init buffers */ ps_inp_raw_buf->apv_bufs[0] = pu1_buf; - pu1_buf += (ps_app_ctxt->u4_strd) * ALIGN16(ps_app_ctxt->u4_ht); + pu1_buf += (ps_app_ctxt->u4_wd) * ps_app_ctxt->u4_ht; ps_inp_raw_buf->apv_bufs[1] = pu1_buf; - pu1_buf += (ps_app_ctxt->u4_strd >> 1) * (ALIGN16(ps_app_ctxt->u4_ht) >> 1); + pu1_buf += (ps_app_ctxt->u4_wd >> 1) * (ps_app_ctxt->u4_ht >> 1); ps_inp_raw_buf->apv_bufs[2] = pu1_buf; ps_inp_raw_buf->au4_wd[0] = ps_app_ctxt->u4_wd; @@ -2346,7 +2346,7 @@ int main(int argc, char *argv[]) /*****************************************************************************/ /* Video control Set Frame dimensions */ /*****************************************************************************/ - s_app_ctxt.u4_strd = ALIGN16(s_app_ctxt.u4_wd); + s_app_ctxt.u4_strd = s_app_ctxt.u4_wd; set_dimensions(&s_app_ctxt, 0, 0); /*****************************************************************************/ -- cgit v1.2.3