diff --git a/test/mpi_rc2_test.c b/test/mpi_rc2_test.c index f9794750..26f7328d 100644 --- a/test/mpi_rc2_test.c +++ b/test/mpi_rc2_test.c @@ -135,7 +135,7 @@ static MPP_RET mpi_rc_init(MpiRc2TestCtx *ctx) MpiEncTestArgs* enc_cmd = ctx->enc_cmd; if (enc_cmd->file_input) - reader_init(&ctx->reader, enc_cmd->file_input); + reader_init(&ctx->reader, enc_cmd->file_input, enc_cmd->type_src); if (NULL == ctx->reader) { mpp_err("failed to open dec input file %s\n", enc_cmd->file_input); diff --git a/utils/mpi_dec_utils.c b/utils/mpi_dec_utils.c index 30562c1a..9b6fe21c 100644 --- a/utils/mpi_dec_utils.c +++ b/utils/mpi_dec_utils.c @@ -49,6 +49,7 @@ typedef struct FileReader_t { FILE *fp_input; size_t file_size; + MppCodingType type; FileType file_type; char *buf; size_t buf_size; @@ -204,7 +205,7 @@ static FileBufSlot *read_normal_file(FileReader data) return slot; } -static void check_file_type(FileReader data, char *file_in) +static void check_file_type(FileReader data, char *file_in, MppCodingType type) { FileReaderImpl *impl = (FileReaderImpl*)data; @@ -220,7 +221,8 @@ static void check_file_type(FileReader data, char *file_in) impl->read_total = impl->seek_base; } else if (strstr(file_in, ".jpg") || strstr(file_in, ".jpeg") || - strstr(file_in, ".mjpeg")) { + strstr(file_in, ".mjpeg") || + type == MPP_VIDEO_CodingMJPEG) { impl->file_type = FILE_JPEG_TYPE; impl->buf_size = impl->file_size; impl->stuff_size = 0; @@ -321,7 +323,7 @@ void reader_rewind(FileReader reader) impl->slot_rd_idx = 0; } -void reader_init(FileReader* reader, char* file_in) +void reader_init(FileReader* reader, char* file_in, MppCodingType type) { FILE *fp_input = fopen(file_in, "rb"); FileReaderImpl *impl = NULL; @@ -340,7 +342,7 @@ void reader_init(FileReader* reader, char* file_in) impl->file_size = ftell(fp_input); fseek(fp_input, 0L, SEEK_SET); - check_file_type(impl, file_in); + check_file_type(impl, file_in, type); impl->slots = mpp_calloc(FileBufSlot*, impl->slot_max); @@ -441,7 +443,8 @@ RK_S32 mpi_dec_opt_i(void *ctx, const char *next) if (next) { strncpy(cmd->file_input, next, MAX_FILE_NAME_LENGTH - 1); cmd->have_input = 1; - name_to_coding_type(cmd->file_input, &cmd->type); + if (!cmd->type) + name_to_coding_type(cmd->file_input, &cmd->type); return 1; } @@ -681,7 +684,7 @@ RK_S32 mpi_dec_test_cmd_init(MpiDecTestCmd* cmd, int argc, char **argv) ret = mpp_opt_parse(opts, argc, argv); if (cmd->have_input) { - reader_init(&cmd->reader, cmd->file_input); + reader_init(&cmd->reader, cmd->file_input, cmd->type); if (cmd->reader) mpp_log("input file %s size %ld\n", cmd->file_input, reader_size(cmd->reader)); } diff --git a/utils/mpi_dec_utils.h b/utils/mpi_dec_utils.h index 975a8536..1c2cbcd1 100644 --- a/utils/mpi_dec_utils.h +++ b/utils/mpi_dec_utils.h @@ -72,7 +72,7 @@ RK_S32 mpi_dec_test_cmd_init(MpiDecTestCmd* cmd, int argc, char **argv); RK_S32 mpi_dec_test_cmd_deinit(MpiDecTestCmd* cmd); void mpi_dec_test_cmd_options(MpiDecTestCmd* cmd); -void reader_init(FileReader* reader, char* file_in); +void reader_init(FileReader* reader, char* file_in, MppCodingType type); void reader_deinit(FileReader reader); void reader_start(FileReader reader);