summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-17 23:55:45 +0100
committerwm4 <wm4@nowhere>2015-02-17 23:58:18 +0100
commitfa9b587426d7bd350d92afdb440c396336b2ecfd (patch)
tree23f8e85f54e6f50a0624b649e221dde19be3af34
parent082371a1603eaaa6c5c9f4bd57f9e77ff027ee15 (diff)
downloadmpv-fa9b587426d7bd350d92afdb440c396336b2ecfd.tar.bz2
mpv-fa9b587426d7bd350d92afdb440c396336b2ecfd.tar.xz
demux, matroska: remove demuxer type field
The Matroska timeline code was the only thing which still used the demuxer.type field. This field explicitly identifies a demuxer implementation. The purpose of the Matroska timeline code was to reject files that are not Matroska. But it already forces the Matroska format, meaning loading will explicitly only use the Matroska demuxer. If the demuxer can't open the file, no other demuxer will be tried, and thus checking the field is redundant. The change in demux_mkv_timeline.c removes the if condition, and unindents the if body.
-rw-r--r--demux/demux.c1
-rw-r--r--demux/demux.h8
-rw-r--r--demux/demux_mkv.c1
-rw-r--r--demux/demux_mkv_timeline.c58
4 files changed, 29 insertions, 39 deletions
diff --git a/demux/demux.c b/demux/demux.c
index e29956af12..e901a9352b 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -900,7 +900,6 @@ static struct demuxer *open_given_type(struct mpv_global *global,
struct demuxer *demuxer = talloc_ptrtype(NULL, demuxer);
*demuxer = (struct demuxer) {
.desc = desc,
- .type = desc->type,
.stream = stream,
.seekable = stream->seekable,
.filepos = -1,
diff --git a/demux/demux.h b/demux/demux.h
index 14154cef0c..cd897be7e2 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -36,11 +36,6 @@
#define MAX_PACKS 16000
#define MAX_PACK_BYTES (400 * 1024 * 1024)
-enum demuxer_type {
- DEMUXER_TYPE_GENERIC = 0,
- DEMUXER_TYPE_MATROSKA,
-};
-
// DEMUXER control commands/answers
#define DEMUXER_CTRL_NOTIMPL -1
#define DEMUXER_CTRL_DONTKNOW 0
@@ -111,8 +106,6 @@ typedef struct demuxer_desc {
const char *name; // Demuxer name, used with -demuxer switch
const char *desc; // Displayed to user
- enum demuxer_type type; // optional
-
// Return 0 on success, otherwise -1
int (*open)(struct demuxer *demuxer, enum demux_check check);
// The following functions are all optional
@@ -185,7 +178,6 @@ typedef struct demuxer {
const char *filetype; // format name when not identified by demuxer (libavformat)
int64_t filepos; // input stream current pos.
char *filename; // same as stream->url
- enum demuxer_type type;
bool seekable;
bool partially_seekable; // implies seekable=true
double start_time;
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index b1a299feca..2c1f34d70c 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -2884,7 +2884,6 @@ static void mkv_free(struct demuxer *demuxer)
const demuxer_desc_t demuxer_desc_matroska = {
.name = "mkv",
.desc = "Matroska",
- .type = DEMUXER_TYPE_MATROSKA,
.open = demux_mkv_open,
.fill_buffer = demux_mkv_fill_buffer,
.close = mkv_free,
diff --git a/demux/demux_mkv_timeline.c b/demux/demux_mkv_timeline.c
index 57bb93e1cd..1a1816b93e 100644
--- a/demux/demux_mkv_timeline.c
+++ b/demux/demux_mkv_timeline.c
@@ -212,45 +212,45 @@ static bool check_file_seg(struct tl_ctx *ctx, struct demuxer ***sources,
free_stream(s);
return was_valid;
}
- if (d->type == DEMUXER_TYPE_MATROSKA) {
- struct matroska_data *m = &d->matroska_data;
- for (int i = 1; i < *num_sources; i++) {
- struct matroska_segment_uid *uid = *uids + i;
- if ((*sources)[i])
- continue;
- /* Accept the source if the segment uid matches and the edition
- * either matches or isn't specified. */
- if (!memcmp(uid->segment, m->uid.segment, 16) &&
- (!uid->edition || uid->edition == m->uid.edition))
- {
- MP_INFO(ctx, "Match for source %d: %s\n", i, d->filename);
-
- for (int j = 0; j < m->num_ordered_chapters; j++) {
- struct matroska_chapter *c = m->ordered_chapters + j;
-
- if (!c->has_segment_uid)
- continue;
+ struct matroska_data *m = &d->matroska_data;
- if (has_source_request(*uids, *num_sources, &c->uid))
- continue;
+ for (int i = 1; i < *num_sources; i++) {
+ struct matroska_segment_uid *uid = *uids + i;
+ if ((*sources)[i])
+ continue;
+ /* Accept the source if the segment uid matches and the edition
+ * either matches or isn't specified. */
+ if (!memcmp(uid->segment, m->uid.segment, 16) &&
+ (!uid->edition || uid->edition == m->uid.edition))
+ {
+ MP_INFO(ctx, "Match for source %d: %s\n", i, d->filename);
- /* Set the requested segment. */
- MP_TARRAY_GROW(NULL, *uids, *num_sources);
- (*uids)[*num_sources] = c->uid;
+ for (int j = 0; j < m->num_ordered_chapters; j++) {
+ struct matroska_chapter *c = m->ordered_chapters + j;
- /* Add a new source slot. */
- MP_TARRAY_APPEND(NULL, *sources, *num_sources, NULL);
- }
+ if (!c->has_segment_uid)
+ continue;
- if (enable_cache(ctx->global, &s, &d, &params) < 0)
+ if (has_source_request(*uids, *num_sources, &c->uid))
continue;
- (*sources)[i] = d;
- return true;
+ /* Set the requested segment. */
+ MP_TARRAY_GROW(NULL, *uids, *num_sources);
+ (*uids)[*num_sources] = c->uid;
+
+ /* Add a new source slot. */
+ MP_TARRAY_APPEND(NULL, *sources, *num_sources, NULL);
}
+
+ if (enable_cache(ctx->global, &s, &d, &params) < 0)
+ continue;
+
+ (*sources)[i] = d;
+ return true;
}
}
+
free_demuxer(d);
free_stream(s);
return was_valid;