diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2018-04-17 18:04:10 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-04-17 18:04:10 +0000 |
| commit | f9157d2eb61f80dd19df01a693b71725d1bc6c22 (patch) | |
| tree | 881e386865fb75013035ab2786ded474e5f499c9 | |
| parent | c745eba06d3d9b64fd441cbf6a129b0676363a52 (diff) | |
| parent | 8e8ad2f900563fe62f0051bab9cf274975b897b1 (diff) | |
| download | platform_external_libmpeg2-oreo-m4-s4-release.tar.gz platform_external_libmpeg2-oreo-m4-s4-release.tar.bz2 platform_external_libmpeg2-oreo-m4-s4-release.zip | |
Merge cherrypicks of [3912569, 3913632, 3913633, 3913557, 3913471, 3913509, 3913558, 3913541, 3913542, 3913472, 3913473, 3913735, 3913736, 3913737, 3913738, 3913739, 3913510, 3913511, 3913512, 3913513, 3913514, 3913559, 3913560, 3913755, 3913795, 3912643, 3913543, 3912570, 3913057] into sparse-4669640-L32000000164199687android-8.1.0_r29oreo-m4-s4-release
Change-Id: I71f427f3a2ba0510bdb6a1cbe66f9ce2b1c2b02c
| -rw-r--r-- | decoder/impeg2d_api.h | 2 | ||||
| -rw-r--r-- | decoder/impeg2d_api_main.c | 10 | ||||
| -rw-r--r-- | decoder/impeg2d_decoder.c | 19 | ||||
| -rw-r--r-- | decoder/impeg2d_structs.h | 3 |
4 files changed, 25 insertions, 9 deletions
diff --git a/decoder/impeg2d_api.h b/decoder/impeg2d_api.h index 3fa098b..f239637 100644 --- a/decoder/impeg2d_api.h +++ b/decoder/impeg2d_api.h @@ -50,7 +50,7 @@ -#define NUM_MEM_RECORDS 4 * MAX_THREADS + NUM_INT_FRAME_BUFFERS + 5 + 2 +#define NUM_MEM_RECORDS 4 * MAX_THREADS + NUM_INT_FRAME_BUFFERS + 5 + 2 + 1 #define SETBIT(a,i) ((a) |= (1 << i)) diff --git a/decoder/impeg2d_api_main.c b/decoder/impeg2d_api_main.c index e3c83bf..cc85eff 100644 --- a/decoder/impeg2d_api_main.c +++ b/decoder/impeg2d_api_main.c @@ -647,7 +647,11 @@ void impeg2d_fill_mem_rec(impeg2d_fill_mem_rec_ip_t *ps_ip, } } - + ps_mem_rec->u4_mem_alignment = 128; + ps_mem_rec->e_mem_type = IV_EXTERNAL_CACHEABLE_PERSISTENT_MEM; + ps_mem_rec->u4_mem_size = MAX_BITSTREAM_BUFFER_SIZE + MIN_BUFFER_BYTES_AT_EOS; + ps_mem_rec++; + u1_no_rec++; { WORD32 i4_job_queue_size; @@ -693,6 +697,7 @@ void impeg2d_fill_mem_rec(impeg2d_fill_mem_rec_ip_t *ps_ip, ps_mem_rec->u4_mem_size = sizeof(iv_mem_rec_t) * (NUM_MEM_RECORDS); ps_mem_rec++; u1_no_rec++; + ps_op->s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled = u1_no_rec; ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code = 0; } @@ -1963,6 +1968,9 @@ IV_API_CALL_STATUS_T impeg2d_api_init(iv_obj_t *ps_dechdl, ps_dec_state = ps_dec_state_multi_core->ps_dec_state[0]; + ps_dec_state->pu1_input_buffer = ps_mem_rec->pv_base; + u4_num_mem_rec++; + ps_mem_rec++; ps_dec_state->pv_jobq_buf = ps_mem_rec->pv_base; ps_dec_state->i4_jobq_buf_size = ps_mem_rec->u4_mem_size; diff --git a/decoder/impeg2d_decoder.c b/decoder/impeg2d_decoder.c index e4ff79c..bff8c21 100644 --- a/decoder/impeg2d_decoder.c +++ b/decoder/impeg2d_decoder.c @@ -102,12 +102,14 @@ void impeg2d_dec_hdr(void *pv_dec,impeg2d_video_decode_ip_t *ps_ip, ps_dec = (dec_state_t *)pv_dec; ps_op->s_ivd_video_decode_op_t.u4_error_code = 0; - if (u4_size >= MAX_BITSTREAM_BUFFER_SIZE) + if (u4_size > MAX_BITSTREAM_BUFFER_SIZE) { - u4_size = MAX_BITSTREAM_BUFFER_SIZE - MIN_BUFFER_BYTES_AT_EOS; + u4_size = MAX_BITSTREAM_BUFFER_SIZE; } - impeg2d_bit_stream_init(&(ps_dec->s_bit_stream),ps_ip->s_ivd_video_decode_ip_t.pv_stream_buffer, + memcpy(ps_dec->pu1_input_buffer, ps_ip->s_ivd_video_decode_ip_t.pv_stream_buffer, u4_size); + + impeg2d_bit_stream_init(&(ps_dec->s_bit_stream), ps_dec->pu1_input_buffer, u4_size); { @@ -194,16 +196,19 @@ void impeg2d_dec_frm(void *pv_dec,impeg2d_video_decode_ip_t *ps_ip, ps_op->s_ivd_video_decode_op_t.u4_num_bytes_consumed = 0; IMPEG2D_FRM_NUM_SET(); - if (u4_size >= MAX_BITSTREAM_BUFFER_SIZE) + if (u4_size > MAX_BITSTREAM_BUFFER_SIZE) { - u4_size = MAX_BITSTREAM_BUFFER_SIZE - MIN_BUFFER_BYTES_AT_EOS; + u4_size = MAX_BITSTREAM_BUFFER_SIZE; } - ps_dec->pu1_inp_bits_buf = ps_ip->s_ivd_video_decode_ip_t.pv_stream_buffer; + memcpy(ps_dec->pu1_input_buffer, ps_ip->s_ivd_video_decode_ip_t.pv_stream_buffer, u4_size); + + ps_dec->pu1_inp_bits_buf = ps_dec->pu1_input_buffer; + ps_dec->u4_num_inp_bytes = u4_size; ps_stream = &ps_dec->s_bit_stream; - impeg2d_bit_stream_init(ps_stream,ps_ip->s_ivd_video_decode_ip_t.pv_stream_buffer,u4_size); + impeg2d_bit_stream_init(ps_stream, ps_dec->pu1_input_buffer, u4_size); /* @ */ /* Updating the bufferID */ diff --git a/decoder/impeg2d_structs.h b/decoder/impeg2d_structs.h index bdda8b8..48fdd13 100644 --- a/decoder/impeg2d_structs.h +++ b/decoder/impeg2d_structs.h @@ -342,6 +342,9 @@ typedef struct dec_state_struct_t WORD32 i4_start_mb_y; WORD32 i4_end_mb_y; + /* Buffer to store the input stream */ + UWORD8 *pu1_input_buffer; + /** * Job queue buffer base */ |
