diff options
author | Luc Trudeau <ltrudeau@twoorioles.com> | 2020-02-21 18:01:18 +0300 |
---|---|---|
committer | Luc Trudeau <ltrudeau@twoorioles.com> | 2020-02-21 19:01:08 +0300 |
commit | cacc8e350c4066ff1bb3ffb2cbf9813bd26d7baa (patch) | |
tree | 9b18bfba2e93f9c6ca2a9b7025a96a7834b3224c /tools | |
parent | 0c88560789b4388cc1d2113110574040606a0b45 (diff) |
cli: remove init_[de]muxers() functions
Muxer and demuxers arrays are now statically initialized
Diffstat (limited to 'tools')
-rw-r--r-- | tools/dav1d.c | 2 | ||||
-rw-r--r-- | tools/input/input.c | 34 | ||||
-rw-r--r-- | tools/input/input.h | 1 | ||||
-rw-r--r-- | tools/output/output.c | 50 | ||||
-rw-r--r-- | tools/output/output.h | 1 |
5 files changed, 34 insertions, 54 deletions
diff --git a/tools/dav1d.c b/tools/dav1d.c index 35cc68e..97c7801 100644 --- a/tools/dav1d.c +++ b/tools/dav1d.c @@ -155,8 +155,6 @@ int main(const int argc, char *const *const argv) { return EXIT_FAILURE; } - init_demuxers(); - init_muxers(); parse(argc, argv, &cli_settings, &lib_settings); if ((res = input_open(&in, cli_settings.demuxer, diff --git a/tools/input/input.c b/tools/input/input.c index 83f7328..50d6145 100644 --- a/tools/input/input.c +++ b/tools/input/input.c @@ -43,21 +43,15 @@ struct DemuxerContext { const Demuxer *impl; }; -#define MAX_NUM_DEMUXERS 3 -static const Demuxer *demuxers[MAX_NUM_DEMUXERS]; -static int num_demuxers = 0; - -#define register_demuxer(impl) { \ - extern const Demuxer impl; \ - assert(num_demuxers < MAX_NUM_DEMUXERS); \ - demuxers[num_demuxers++] = &impl; \ -} - -void init_demuxers(void) { - register_demuxer(ivf_demuxer); - register_demuxer(annexb_demuxer); - register_demuxer(section5_demuxer); -} +extern const Demuxer ivf_demuxer; +extern const Demuxer annexb_demuxer; +extern const Demuxer section5_demuxer; +static const Demuxer *const demuxers[] = { + &ivf_demuxer, + &annexb_demuxer, + §ion5_demuxer, + NULL +}; int input_open(DemuxerContext **const c_out, const char *const name, const char *const filename, @@ -68,19 +62,19 @@ int input_open(DemuxerContext **const c_out, int res, i; if (name) { - for (i = 0; i < num_demuxers; i++) { + for (i = 0; demuxers[i]; i++) { if (!strcmp(demuxers[i]->name, name)) { impl = demuxers[i]; break; } } - if (i == num_demuxers) { + if (!demuxers[i]) { fprintf(stderr, "Failed to find demuxer named \"%s\"\n", name); return DAV1D_ERR(ENOPROTOOPT); } } else { int probe_sz = 0; - for (i = 0; i < num_demuxers; i++) + for (i = 0; demuxers[i]; i++) probe_sz = imax(probe_sz, demuxers[i]->probe_sz); uint8_t *const probe_data = malloc(probe_sz); if (!probe_data) { @@ -96,14 +90,14 @@ int input_open(DemuxerContext **const c_out, return errno ? DAV1D_ERR(errno) : DAV1D_ERR(EIO); } - for (i = 0; i < num_demuxers; i++) { + for (i = 0; demuxers[i]; i++) { if (demuxers[i]->probe(probe_data)) { impl = demuxers[i]; break; } } free(probe_data); - if (i == num_demuxers) { + if (!demuxers[i]) { fprintf(stderr, "Failed to probe demuxer for file %s\n", filename); diff --git a/tools/input/input.h b/tools/input/input.h index abe6c16..7b2fdc9 100644 --- a/tools/input/input.h +++ b/tools/input/input.h @@ -32,7 +32,6 @@ typedef struct DemuxerContext DemuxerContext; -void init_demuxers(void); int input_open(DemuxerContext **const c_out, const char *const name, const char *const filename, unsigned fps[2], unsigned *num_frames, unsigned timebase[2]); diff --git a/tools/output/output.c b/tools/output/output.c index aa58e1c..368d079 100644 --- a/tools/output/output.c +++ b/tools/output/output.c @@ -42,22 +42,17 @@ struct MuxerContext { const Muxer *impl; }; -#define MAX_NUM_MUXERS 4 -static const Muxer *muxers[MAX_NUM_MUXERS]; -static unsigned num_muxers = 0; - -#define register_muxer(impl) { \ - extern const Muxer impl; \ - assert(num_muxers < MAX_NUM_MUXERS); \ - muxers[num_muxers++] = &impl; \ -} - -void init_muxers(void) { - register_muxer(null_muxer); - register_muxer(md5_muxer); - register_muxer(yuv_muxer); - register_muxer(y4m2_muxer); -} +extern const Muxer null_muxer; +extern const Muxer md5_muxer; +extern const Muxer yuv_muxer; +extern const Muxer y4m2_muxer; +static const Muxer *muxers[] = { + &null_muxer, + &md5_muxer, + &yuv_muxer, + &y4m2_muxer, + NULL +}; static const char *find_extension(const char *const f) { const size_t l = strlen(f); @@ -86,31 +81,31 @@ int output_open(MuxerContext **const c_out, int res; if (name) { - for (i = 0; i < num_muxers; i++) { + for (i = 0; muxers[i]; i++) { if (!strcmp(muxers[i]->name, name)) { impl = muxers[i]; break; } } - if (i == num_muxers) { + if (!muxers[i]) { fprintf(stderr, "Failed to find muxer named \"%s\"\n", name); return DAV1D_ERR(ENOPROTOOPT); } } else if (!strcmp(filename, "/dev/null")) { impl = muxers[0]; } else { - const char *ext = find_extension(filename); + const char *const ext = find_extension(filename); if (!ext) { fprintf(stderr, "No extension found for file %s\n", filename); return -1; } - for (i = 0; i < num_muxers; i++) { + for (i = 0; muxers[i]; i++) { if (!strcmp(muxers[i]->extension, ext)) { impl = muxers[i]; break; } } - if (i == num_muxers) { + if (!muxers[i]) { fprintf(stderr, "Failed to find muxer for extension \"%s\"\n", ext); return DAV1D_ERR(ENOPROTOOPT); } @@ -132,12 +127,8 @@ int output_open(MuxerContext **const c_out, } int output_write(MuxerContext *const ctx, Dav1dPicture *const p) { - int res; - - if ((res = ctx->impl->write_picture(ctx->data, p)) < 0) - return res; - - return 0; + const int res = ctx->impl->write_picture(ctx->data, p); + return res < 0 ? res : 0; } void output_close(MuxerContext *const ctx) { @@ -147,9 +138,8 @@ void output_close(MuxerContext *const ctx) { } int output_verify(MuxerContext *const ctx, const char *const md5_str) { - int res = 0; - if (ctx->impl->verify) - res = ctx->impl->verify(ctx->data, md5_str); + const int res = ctx->impl->verify ? + ctx->impl->verify(ctx->data, md5_str) : 0; free(ctx); return res; } diff --git a/tools/output/output.h b/tools/output/output.h index c252d64..6111c86 100644 --- a/tools/output/output.h +++ b/tools/output/output.h @@ -32,7 +32,6 @@ typedef struct MuxerContext MuxerContext; -void init_muxers(void); int output_open(MuxerContext **c, const char *name, const char *filename, const Dav1dPictureParameters *p, const unsigned fps[2]); int output_write(MuxerContext *ctx, Dav1dPicture *pic); |