X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Ftests%2Ffifo_muxer.c;h=5127a8aadb92690a9819ebb3c9372bb538e32faa;hb=c00b218a8f75ed3eb87c213d95bd5775c0af5e12;hp=4b63df085e2b3d2ec821a26741aa9b80a8cf941b;hpb=f750a0bcfea9e54ee3adbd8616ab861d1471f9b8;p=ffmpeg diff --git a/libavformat/tests/fifo_muxer.c b/libavformat/tests/fifo_muxer.c index 4b63df085e2..5127a8aadb9 100644 --- a/libavformat/tests/fifo_muxer.c +++ b/libavformat/tests/fifo_muxer.c @@ -31,8 +31,6 @@ #define SLEEPTIME_50_MS 50000 #define SLEEPTIME_10_MS 10000 -/* Implementation of mock muxer to simulate real muxer failures */ - /* This is structure of data sent in packets to * failing muxer */ typedef struct FailingMuxerPacketData { @@ -41,113 +39,7 @@ typedef struct FailingMuxerPacketData { unsigned sleep_time; /* sleep for this long in write_packet to simulate long I/O operation */ } FailingMuxerPacketData; - -typedef struct FailingMuxerContext { - AVClass *class; - int write_header_ret; - int write_trailer_ret; - /* If non-zero, summary of processed packets will be printed in deinit */ - int print_deinit_summary; - - int flush_count; - int pts_written[MAX_TST_PACKETS]; - int pts_written_nr; -} FailingMuxerContext; - -static int failing_write_header(AVFormatContext *avf) -{ - FailingMuxerContext *ctx = avf->priv_data; - return ctx->write_header_ret; -} - -static int failing_write_packet(AVFormatContext *avf, AVPacket *pkt) -{ - FailingMuxerContext *ctx = avf->priv_data; - int ret = 0; - if (!pkt) { - ctx->flush_count++; - } else { - FailingMuxerPacketData *data = (FailingMuxerPacketData*) pkt->data; - - if (!data->recover_after) { - data->ret = 0; - } else { - data->recover_after--; - } - - ret = data->ret; - - if (data->sleep_time) { - int64_t slept = 0; - while (slept < data->sleep_time) { - if (ff_check_interrupt(&avf->interrupt_callback)) - return AVERROR_EXIT; - av_usleep(SLEEPTIME_10_MS); - slept += SLEEPTIME_10_MS; - } - } - - if (!ret) { - ctx->pts_written[ctx->pts_written_nr++] = pkt->pts; - av_packet_unref(pkt); - } - } - return ret; -} - -static int failing_write_trailer(AVFormatContext *avf) -{ - FailingMuxerContext *ctx = avf->priv_data; - return ctx->write_trailer_ret; -} - -static void failing_deinit(AVFormatContext *avf) -{ - int i; - FailingMuxerContext *ctx = avf->priv_data; - - if (!ctx->print_deinit_summary) - return; - - printf("flush count: %d\n", ctx->flush_count); - printf("pts seen nr: %d\n", ctx->pts_written_nr); - printf("pts seen: "); - for (i = 0; i < ctx->pts_written_nr; ++i ) { - printf(i ? ",%d" : "%d", ctx->pts_written[i]); - } - printf("\n"); -} -#define OFFSET(x) offsetof(FailingMuxerContext, x) -static const AVOption options[] = { - {"write_header_ret", "write_header() return value", OFFSET(write_header_ret), - AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, - {"write_trailer_ret", "write_trailer() return value", OFFSET(write_trailer_ret), - AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, - {"print_deinit_summary", "print summary when deinitializing muxer", OFFSET(print_deinit_summary), - AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, - {NULL} - }; - -static const AVClass failing_muxer_class = { - .class_name = "Failing test muxer", - .item_name = av_default_item_name, - .option = options, - .version = LIBAVUTIL_VERSION_INT, -}; - -AVOutputFormat tst_failing_muxer = { - .name = "fail", - .long_name = NULL_IF_CONFIG_SMALL("Failing test muxer"), - .priv_data_size = sizeof(FailingMuxerContext), - .write_header = failing_write_header, - .write_packet = failing_write_packet, - .write_trailer = failing_write_trailer, - .deinit = failing_deinit, - .priv_class = &failing_muxer_class, - .flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH, -}; - -static int prepare_packet(AVPacket *pkt,const FailingMuxerPacketData *pkt_data, int64_t pts) +static int prepare_packet(AVPacket *pkt, const FailingMuxerPacketData *pkt_data, int64_t pts) { int ret; FailingMuxerPacketData *data = av_malloc(sizeof(*data)); @@ -333,7 +225,7 @@ static int run_test(const TestCase *test) (int)test->print_summary_on_deinit, test->write_header_ret, test->write_trailer_ret); ret = av_dict_set(&opts, "format_opts", buffer, 0); - ret1 = av_dict_set(&opts, "fifo_format", "fail", 0); + ret1 = av_dict_set(&opts, "fifo_format", "fifo_test", 0); if (ret < 0 || ret1 < 0) { fprintf(stderr, "Failed to set options for test muxer: %s\n", av_err2str(ret)); @@ -382,9 +274,6 @@ int main(int argc, char *argv[]) { int i, ret, ret_all = 0; - av_register_all(); - av_register_output_format(&tst_failing_muxer); - for (i = 0; tests[i].test_func; i++) { ret = run_test(&tests[i]); if (!ret_all && ret < 0)