diff options
Diffstat (limited to 'tools/input/input.c')
-rw-r--r-- | tools/input/input.c | 34 |
1 files changed, 14 insertions, 20 deletions
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); |