From eabbc375c0538ecabedf3dfb0fd39d88c92df18f Mon Sep 17 00:00:00 2001 From: Yandong Lin Date: Wed, 23 Dec 2020 09:11:57 +0800 Subject: [PATCH] [mpi_dec_test]: Support jpeg loop decoding usage: -n -1 Signed-off-by: Yandong Lin Change-Id: Ic184142f771b1e9c68344b3162e491f18d4d33fc --- test/mpi_dec_test.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/test/mpi_dec_test.c b/test/mpi_dec_test.c index f8c9557c..65b089a5 100644 --- a/test/mpi_dec_test.c +++ b/test/mpi_dec_test.c @@ -411,10 +411,14 @@ static int decode_advanced(MpiDecLoopData *data) size_t read_size = fread(buf, 1, data->packet_size, data->fp_input); if (read_size != data->packet_size || feof(data->fp_input)) { - mpp_log("%p found last packet\n", ctx); - - // setup eos flag - data->eos = pkt_eos = 1; + if (data->frame_num < 0) { + clearerr(data->fp_input); + rewind(data->fp_input); + } else { + mpp_log("%p found last packet\n", ctx); + // setup eos flag + data->eos = pkt_eos = 1; + } } // reset pos @@ -478,7 +482,13 @@ static int decode_advanced(MpiDecLoopData *data) if (mpp_frame_get_eos(frame_out)) mpp_log("%p found eos frame\n", ctx); } - + if (data->frame_num > 0 && data->frame_count < data->frame_num) { + data->eos = 0; + clearerr(data->fp_input); + rewind(data->fp_input); + } else { + data->eos = 1; + } /* output queue */ ret = mpi->enqueue(ctx, MPP_PORT_OUTPUT, task); if (ret)