shithub: dav1d

Download patch

ref: cacc8e350c4066ff1bb3ffb2cbf9813bd26d7baa
parent: 0c88560789b4388cc1d2113110574040606a0b45
author: Luc Trudeau <ltrudeau@twoorioles.com>
date: Fri Feb 21 05:01:18 EST 2020

cli: remove init_[de]muxers() functions

Muxer and demuxers arrays are now statically initialized

--- a/tools/dav1d.c
+++ b/tools/dav1d.c
@@ -155,8 +155,6 @@
         return EXIT_FAILURE;
     }
 
-    init_demuxers();
-    init_muxers();
     parse(argc, argv, &cli_settings, &lib_settings);
 
     if ((res = input_open(&in, cli_settings.demuxer,
--- a/tools/input/input.c
+++ b/tools/input/input.c
@@ -43,22 +43,16 @@
     const Demuxer *impl;
 };
 
-#define MAX_NUM_DEMUXERS 3
-static const Demuxer *demuxers[MAX_NUM_DEMUXERS];
-static int num_demuxers = 0;
+extern const Demuxer ivf_demuxer;
+extern const Demuxer annexb_demuxer;
+extern const Demuxer section5_demuxer;
+static const Demuxer *const demuxers[] = {
+    &ivf_demuxer,
+    &annexb_demuxer,
+    &section5_demuxer,
+    NULL
+};
 
-#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);
-}
-
 int input_open(DemuxerContext **const c_out,
                const char *const name, const char *const filename,
                unsigned fps[2], unsigned *const num_frames, unsigned timebase[2])
@@ -68,19 +62,19 @@
     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,7 +90,7 @@
             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;
@@ -103,7 +97,7 @@
             }
         }
         free(probe_data);
-        if (i == num_demuxers) {
+        if (!demuxers[i]) {
             fprintf(stderr,
                     "Failed to probe demuxer for file %s\n",
                     filename);
--- 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]);
--- a/tools/output/output.c
+++ b/tools/output/output.c
@@ -42,23 +42,18 @@
     const Muxer *impl;
 };
 
-#define MAX_NUM_MUXERS 4
-static const Muxer *muxers[MAX_NUM_MUXERS];
-static unsigned num_muxers = 0;
+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
+};
 
-#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);
-}
-
 static const char *find_extension(const char *const f) {
     const size_t l = strlen(f);
 
@@ -86,13 +81,13 @@
     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);
         }
@@ -99,18 +94,18 @@
     } 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_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 @@
 }
 
 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;
 }
--- 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);