[mv2parser]: Fix split case last packet issue

Fix error on split case that last packet is not sent to parser.

Change-Id: I4f32644e4740f592cc5c6dfdf592a8bbc79d6599
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
This commit is contained in:
sayon.chen
2021-10-19 09:07:06 +08:00
committed by Herman Chen
parent 0aeb6e46b6
commit 72559f581d

View File

@@ -468,7 +468,7 @@ MPP_RET m2vd_parser_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
length = mpp_packet_get_length(pkt);
eos = mpp_packet_get_eos(pkt);
if (eos && !length) {
if (eos && !length && !p->left_length) {
task->valid = 0;
task->flags.eos = 1;
m2vd_parser_flush(ctx);
@@ -514,6 +514,9 @@ MPP_RET m2vd_parser_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
mpp_packet_set_data(p->input_packet, p->bitstream_sw_buf);
mpp_packet_set_size(p->input_packet, p->max_stream_size);
if (mpp_packet_get_eos(pkt))
mpp_packet_set_eos(p->input_packet);
p->pts = mpp_packet_get_pts(pkt);
task->valid = 1;
mpp_packet_set_length(pkt, 0);
@@ -531,7 +534,7 @@ MPP_RET m2vd_parser_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
mpp_packet_set_extra_data(p->input_packet);
}
p->eos = mpp_packet_get_eos(pkt);
p->eos = mpp_packet_get_pts(p->input_packet);
mpp_packet_set_pts(p->input_packet, p->pts);
task->input_packet = p->input_packet;
task->flags.eos = p->eos;