[vp8d] remove unused log in the parser & hal

[vp8d] realloc stream buf when buf is no enough
[vp9d] remove unused code & reset eos in reset status

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@951 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
ChenSiyong
2016-06-23 03:36:46 +00:00
parent af8c3f8016
commit 85dd93fadf
3 changed files with 48 additions and 28 deletions

View File

@@ -336,6 +336,7 @@ MPP_RET vp8d_parser_reset(void *ctx)
FUN_T("FUN_IN");
vp8d_unref_allframe(p);
p->needKeyFrame = 0;
p->eos = 0;
FUN_T("FUN_OUT");
return ret;
}
@@ -401,10 +402,11 @@ MPP_RET vp8d_parser_split_frame(RK_U8 *src, RK_U32 src_size, RK_U8 *dst, RK_U32
MPP_RET vp8d_parser_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
{
MPP_RET ret = MPP_OK;
RK_U32 out_size = 0;
RK_U32 out_size = 0, len_in = 0;
RK_U8 * pos = NULL;
RK_U8 *buf = NULL;
VP8DContext *c = (VP8DContext *)ctx;
VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx;
MppPacket input_packet = p->input_packet;
@@ -415,25 +417,39 @@ MPP_RET vp8d_parser_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
buf = pos = mpp_packet_get_pos(pkt);
p->pts = mpp_packet_get_pts(pkt);
vp8d_parser_split_frame(buf,
mpp_packet_get_length(pkt),
p->bitstream_sw_buf,
&out_size);
pos += out_size;
mpp_packet_set_pos(pkt, pos);
if (out_size > p->max_stream_size) {
len_in = mpp_packet_get_length(pkt),
p->eos = mpp_packet_get_eos(pkt);
// mpp_log("len_in = %d",len_in);
if (len_in > p->max_stream_size) {
mpp_free(p->bitstream_sw_buf);
p->bitstream_sw_buf = mpp_malloc(RK_U8, out_size + 1024);
p->bitstream_sw_buf = NULL;
p->bitstream_sw_buf = mpp_malloc(RK_U8, (len_in + 1024));
if (NULL == p->bitstream_sw_buf) {
mpp_err("vp8d_parser realloc fail");
return MPP_ERR_NOMEM;
}
p->max_stream_size = out_size + 1024;
p->max_stream_size = len_in + 1024;
}
mpp_log("p->bitstream_sw_buf = 0x%x", p->bitstream_sw_buf);
mpp_log("out_size = 0x%x", out_size);
vp8d_parser_split_frame(buf,
len_in,
p->bitstream_sw_buf,
&out_size);
pos += out_size;
mpp_packet_set_pos(pkt, pos);
if (out_size == 0 && p->eos) {
if (p->notify_cb.callBack != NULL) {
p->notify_cb.callBack(p->notify_cb.opaque, NULL);
}
return ret;
}
// mpp_log("p->bitstream_sw_buf = 0x%x", p->bitstream_sw_buf);
// mpp_log("out_size = 0x%x", out_size);
mpp_packet_set_data(input_packet, p->bitstream_sw_buf);
mpp_packet_set_size(input_packet, p->max_stream_size);
mpp_packet_set_length(input_packet, out_size);
@@ -1129,8 +1145,8 @@ MPP_RET decoder_frame_header(VP8DParserContext_t *p, RK_U8 *pbase, RK_U32 size)
p->frameTagSize = p->vpVersion >= 1 ? 3 : 4;
} else {
p->offsetToDctParts = (pbase[0] >> 5) | (pbase[1] << 3) | (pbase[2] << 11);
mpp_log("offsetToDctParts %d pbase[0] = 0x%x pbase[1] = 0x%x pbase[2] = 0x%x ", p->offsetToDctParts, pbase[0],
pbase[1], pbase[2]);
// mpp_log("offsetToDctParts %d pbase[0] = 0x%x pbase[1] = 0x%x pbase[2] = 0x%x ", p->offsetToDctParts, pbase[0],
// pbase[1], pbase[2]);
p->showFrame = (pbase[0] >> 4) & 1;
p->frameTagSize = 3;
}
@@ -1138,7 +1154,7 @@ MPP_RET decoder_frame_header(VP8DParserContext_t *p, RK_U8 *pbase, RK_U32 size)
size -= p->frameTagSize;
if (p->keyFrame)
vp8hwdResetProbs(p);
mpp_log_f("p->decMode = %d", p->decMode);
//mpp_log_f("p->decMode = %d", p->decMode);
if (p->decMode == VP8HWD_VP8) {
ret = vp8_header_parser(p, pbase, size);
} else {
@@ -1179,8 +1195,16 @@ MPP_RET vp8d_parser_parse(void *ctx, HalDecTask *in_task)
in_task->syntax.data = (void *)p->dxva_ctx;
in_task->syntax.number = 1;
in_task->output = p->frame_out->slot_index;
in_task->valid = 1;
if (p->eos) {
if (p->showFrame) {
mpp_buf_slot_set_prop(p->frame_slots, p->frame_out->slot_index, SLOT_EOS, &p->eos);
} else {
if (p->notify_cb.callBack != NULL) {
p->notify_cb.callBack(p->notify_cb.opaque, NULL);
}
}
}
vp8d_ref_update(p);
FUN_T("FUN_OUT");

View File

@@ -582,16 +582,7 @@ static RK_S32 read_colorspace_details(Vp9CodecContext *ctx)
ctx->colorspace = colorspaces[mpp_get_bits(&s->gb, 3)];
vp9d_dbg(VP9D_DBG_HEADER, "color_space %d", ctx->colorspace);
if (ctx->colorspace == MPP_FRAME_SPC_RGB) { // RGB = profile 1
#if 0
static const enum AVPixelFormat pix_fmt_rgb[3] = {
AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12
};
if (ctx->profile & 1) {
s->ss_h = s->ss_v = 1;
res = pix_fmt_rgb[bits];
ctx->color_range = MPP_FRAME_RANGE_JPEG;
} else
#endif
{
mpp_err("RGB not supported in profile %d\n", ctx->profile);
return MPP_ERR_STREAM;
@@ -1692,6 +1683,11 @@ MPP_RET vp9d_paser_reset(Vp9CodecContext *ctx)
}
}
memset(pc, 0, sizeof(VP9ParseContext));
s->eos = 0;
if (ps) {
ps->eos = 0;
}
return MPP_OK;
}
static void inv_count_data(VP9Context *s)

View File

@@ -586,7 +586,7 @@ MPP_RET hal_vp8d_gen_regs(void* hal, HalTaskInfo *task)
hal_vp8_init_hwcfg(ctx);
mb_width = (pic_param->width + 15) >> 4;
mb_height = (pic_param->height + 15) >> 4;
mpp_log("mb_width = %d mb_height = %d", mb_width, mb_height);
// mpp_log("mb_width = %d mb_height = %d", mb_width, mb_height);
regs->reg120.sw_pic_mb_width = mb_width & 0x1FF;
regs->reg120.sw_pic_mb_hight_p = mb_height & 0xFF;
regs->reg120.sw_pic_mb_w_ext = mb_width >> 9;