summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-07-11 20:08:12 +0200
committerwm4 <wm4@nowhere>2013-07-11 21:09:39 +0200
commitd17d2fdc7c536821b3fea8c4a37c0ad09fc487db (patch)
tree88e2dcaa89ea98478bd7831a87febb4c8ba7435c /demux
parent3a7fa5b186fc130c159b072cb86194644f9876fb (diff)
downloadmpv-d17d2fdc7c536821b3fea8c4a37c0ad09fc487db.tar.bz2
mpv-d17d2fdc7c536821b3fea8c4a37c0ad09fc487db.tar.xz
demux: change signature of open functions, cleanups
Preparation for redoing the open functions.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux.c21
-rw-r--r--demux/demux.h16
-rw-r--r--demux/demux_cue.c10
-rw-r--r--demux/demux_edl.c8
-rw-r--r--demux/demux_lavf.c48
-rw-r--r--demux/demux_libass.c10
-rw-r--r--demux/demux_mf.c37
-rw-r--r--demux/demux_mkv.c33
-rw-r--r--demux/demux_mng.c49
-rw-r--r--demux/demux_rawaudio.c27
-rw-r--r--demux/demux_rawvideo.c30
-rw-r--r--demux/demux_subreader.c6
12 files changed, 137 insertions, 158 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 3cd23a4b42..64fee955ed 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -72,7 +72,7 @@ const demuxer_desc_t *const demuxer_list[] = {
#ifdef CONFIG_TV
&demuxer_desc_tv,
#endif
-#ifdef CONFIG_LIBASS
+#ifdef CONFIG_ASS
&demuxer_desc_libass,
#endif
&demuxer_desc_matroska,
@@ -594,16 +594,14 @@ static struct demuxer *open_given_type(struct MPOpts *opts,
struct demuxer_params *params)
{
struct demuxer *demuxer;
- int fformat;
+ int fformat = desc->type;
mp_msg(MSGT_DEMUXER, MSGL_V, "Trying demuxer: %s\n", desc->name);
demuxer = new_demuxer(opts, stream, desc->type, filename);
demuxer->params = params;
- if (desc->check_file)
- fformat = desc->check_file(demuxer);
- else
- fformat = desc->type;
- if (force)
- fformat = desc->type;
+ if (!force) {
+ if (desc->check_file)
+ fformat = desc->check_file(demuxer) >= 0 ? fformat : 0;
+ }
if (fformat == 0)
goto fail;
if (fformat == desc->type) {
@@ -614,15 +612,12 @@ static struct demuxer *open_given_type(struct MPOpts *opts,
mp_tmsg(MSGT_DEMUXER, MSGL_INFO, "Detected file format: %s\n",
desc->shortdesc);
if (demuxer->desc->open) {
- struct demuxer *demux2 = demuxer->desc->open(demuxer);
- if (!demux2) {
+ int ret = demuxer->desc->open(demuxer);
+ if (ret < 0) {
mp_tmsg(MSGT_DEMUXER, MSGL_ERR, "Opening as detected format "
"\"%s\" failed.\n", desc->shortdesc);
goto fail;
}
- /* At least demux_mov can return a demux_demuxers instance
- * from open() instead of the original fed in. */
- demuxer = demux2;
}
demuxer->file_format = fformat;
if (stream_manages_timeline(demuxer->stream)) {
diff --git a/demux/demux.h b/demux/demux.h
index 3b0d6d5956..c43f0282fb 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -105,19 +105,15 @@ typedef struct demuxer_desc {
// If 1 detection is safe and fast, do it before file extension check
int safe_check;
- // Check if can demux the file, return DEMUXER_TYPE_xxx on success
- // Mandatory if safe_check == 1, else optional
+ // Return 0 on success, otherwise -1
int (*check_file)(struct demuxer *demuxer);
- /// Get packets from file, return 0 on eof. Mandatory
- int (*fill_buffer)(struct demuxer *demuxer);
- /// Open the demuxer, return demuxer on success, NULL on failure
- struct demuxer *(*open)(struct demuxer *demuxer); // Optional
- /// Close the demuxer
- void (*close)(struct demuxer *demuxer); // Optional
- // Seek. Optional
+ // Open the demuxer, return 0 on success, otherwise -1
+ int (*open)(struct demuxer *demuxer);
+ // The following functions are all optional
+ int (*fill_buffer)(struct demuxer *demuxer); // 0 on EOF, otherwise 1
+ void (*close)(struct demuxer *demuxer);
void (*seek)(struct demuxer *demuxer, float rel_seek_secs,
float audio_delay, int flags);
- // Various control functions. Optional
int (*control)(struct demuxer *demuxer, int cmd, void *arg);
} demuxer_desc_t;
diff --git a/demux/demux_cue.c b/demux/demux_cue.c
index 073fa9d336..43ef910868 100644
--- a/demux/demux_cue.c
+++ b/demux/demux_cue.c
@@ -35,16 +35,16 @@ static int try_open_file(struct demuxer *demuxer)
char buf[PROBE_SIZE];
int len = stream_read(s, buf, sizeof(buf));
if (len <= 0)
- return 0;
+ return -1;
if (!mp_probe_cue((struct bstr) { buf, len }))
- return 0;
+ return -1;
stream_seek(s, 0);
demuxer->file_contents = stream_read_complete(s, demuxer, 1000000);
if (demuxer->file_contents.start == NULL)
- return 0;
+ return -1;
if (!mp_probe_cue((struct bstr) { buf, len }))
- return 0;
- return DEMUXER_TYPE_CUE;
+ return -1;
+ return 0;
}
const struct demuxer_desc demuxer_desc_cue = {
diff --git a/demux/demux_edl.c b/demux/demux_edl.c
index c35137ffb2..44fa824193 100644
--- a/demux/demux_edl.c
+++ b/demux/demux_edl.c
@@ -30,14 +30,14 @@ static int try_open_file(struct demuxer *demuxer)
const int len = sizeof(header) - 1;
char buf[len];
if (stream_read(s, buf, len) < len)
- return 0;
+ return -1;
if (strncmp(buf, header, len))
- return 0;
+ return -1;
stream_seek(s, 0);
demuxer->file_contents = stream_read_complete(s, demuxer, 1000000);
if (demuxer->file_contents.start == NULL)
- return 0;
- return DEMUXER_TYPE_EDL;
+ return -1;
+ return 0;
}
const struct demuxer_desc demuxer_desc_edl = {
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 3f330332e3..0e7690f606 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -211,7 +211,7 @@ static int lavf_check_file(demuxer_t *demuxer)
if (!sep) {
mp_msg(MSGT_DEMUX, MSGL_FATAL,
"Must specify filename in 'format:filename' form\n");
- return 0;
+ return -1;
}
avdevice_format = talloc_strndup(priv, priv->filename,
sep - priv->filename);
@@ -238,12 +238,12 @@ static int lavf_check_file(demuxer_t *demuxer)
if (format) {
if (strcmp(format, "help") == 0) {
list_formats();
- return 0;
+ return -1;
}
priv->avif = av_find_input_format(format);
if (!priv->avif) {
mp_msg(MSGT_DEMUX, MSGL_FATAL, "Unknown lavf format %s\n", format);
- return 0;
+ return -1;
}
mp_msg(MSGT_DEMUX, MSGL_INFO, "Forced lavf %s demuxer\n",
priv->avif->long_name);
@@ -297,7 +297,7 @@ static int lavf_check_file(demuxer_t *demuxer)
if (!priv->avif) {
mp_msg(MSGT_HEADER, MSGL_V,
"No format found, try lowering probescore.\n");
- return 0;
+ return -1;
}
success:
@@ -306,7 +306,7 @@ success:
if (!demuxer->filetype)
demuxer->filetype = priv->avif->name;
- return DEMUXER_TYPE_LAVF;
+ return 0;
}
static bool matches_avinputformat_name(struct lavf_priv *priv,
@@ -493,7 +493,7 @@ static void add_metadata(demuxer_t *demuxer, AVDictionary *metadata)
demux_info_add(demuxer, t->key, t->value);
}
-static demuxer_t *demux_open_lavf(demuxer_t *demuxer)
+static int demux_open_lavf(demuxer_t *demuxer)
{
struct MPOpts *opts = demuxer->opts;
struct lavfdopts *lavfdopts = &opts->lavfdopts;
@@ -505,7 +505,7 @@ static demuxer_t *demux_open_lavf(demuxer_t *demuxer)
// do not allow forcing the demuxer
if (!priv->avif)
- return NULL;
+ return -1;
stream_seek(demuxer->stream, 0);
@@ -548,7 +548,7 @@ static demuxer_t *demux_open_lavf(demuxer_t *demuxer)
mp_msg(MSGT_HEADER, MSGL_ERR,
"Your options /%s/ look like gibberish to me pal\n",
lavfdopts->avopt);
- return NULL;
+ return -1;
}
}
@@ -567,14 +567,14 @@ static demuxer_t *demux_open_lavf(demuxer_t *demuxer)
if (avformat_open_input(&avfc, priv->filename, priv->avif, NULL) < 0) {
mp_msg(MSGT_HEADER, MSGL_ERR,
"LAVF_header: avformat_open_input() failed\n");
- return NULL;
+ return -1;
}
priv->avfc = avfc;
if (avformat_find_stream_info(avfc, NULL) < 0) {
mp_msg(MSGT_HEADER, MSGL_ERR,
"LAVF_header: av_find_stream_info() failed\n");
- return NULL;
+ return -1;
}
mp_msg(MSGT_HEADER, MSGL_V, "demux_lavf: avformat_find_stream_info() "
@@ -640,7 +640,7 @@ static demuxer_t *demux_open_lavf(demuxer_t *demuxer)
#endif
demuxer->accurate_seek = !priv->seek_by_bytes;
- return demuxer;
+ return 0;
}
static int destroy_avpacket(void *pkt)
@@ -899,17 +899,17 @@ static void demux_close_lavf(demuxer_t *demuxer)
const demuxer_desc_t demuxer_desc_lavf = {
- "libavformat demuxer",
- "lavf",
- "libavformat",
- "Michael Niedermayer",
- "supports many formats, requires libavformat",
- DEMUXER_TYPE_LAVF,
- 1,
- lavf_check_file,
- demux_lavf_fill_buffer,
- demux_open_lavf,
- demux_close_lavf,
- demux_seek_lavf,
- demux_lavf_control
+ .info = "libavformat demuxer",
+ .name = "lavf",
+ .shortdesc = "libavformat",
+ .author = "Michael Niedermayer",
+ .comment = "supports many formats, requires libavformat",
+ .type = DEMUXER_TYPE_LAVF,
+ .safe_check = 1,
+ .check_file = lavf_check_file,
+ .fill_buffer = demux_lavf_fill_buffer,
+ .open = demux_open_lavf,
+ .close = demux_close_lavf,
+ .seek = demux_seek_lavf,
+ .control = demux_lavf_control,
};
diff --git a/demux/demux_libass.c b/demux/demux_libass.c
index cbc85b3abe..4dadb42b89 100644
--- a/demux/demux_libass.c
+++ b/demux/demux_libass.c
@@ -41,7 +41,7 @@ static int d_check_file(struct demuxer *demuxer)
// library handles mismatch, so make sure everything uses a global handle.
ASS_Library *lib = demuxer->params ? demuxer->params->ass_library : NULL;
if (!lib)
- return 0;
+ return -1;
// Probe by loading a part of the beginning of the file with libass.
// Incomplete scripts are usually ok, and we hope libass is not verbose
@@ -64,7 +64,7 @@ static int d_check_file(struct demuxer *demuxer)
talloc_free(cbuf.start);
talloc_free(buf.start);
if (!track)
- return 0;
+ return -1;
ass_free_track(track);
// Actually load the full thing.
@@ -73,7 +73,7 @@ static int d_check_file(struct demuxer *demuxer)
if (!buf.start) {
mp_tmsg(MSGT_ASS, MSGL_ERR, "Refusing to load subtitle file "
"larger than 100 MB: %s\n", demuxer->filename);
- return 0;
+ return -1;
}
cbuf = mp_charset_guess_and_conv_to_utf8(buf, user_cp, MP_ICONV_VERBOSE);
if (cbuf.start == NULL)
@@ -83,7 +83,7 @@ static int d_check_file(struct demuxer *demuxer)
talloc_free(cbuf.start);
talloc_free(buf.start);
if (!track)
- return 0;
+ return -1;
track->name = strdup(demuxer->filename);
@@ -96,7 +96,7 @@ static int d_check_file(struct demuxer *demuxer)
sh->sub->track = track;
sh->codec = "ass";
- return DEMUXER_TYPE_LIBASS;
+ return 0;
}
static void d_close(struct demuxer *demuxer)
diff --git a/demux/demux_mf.c b/demux/demux_mf.c
index 7465ddeae8..3a72558208 100644
--- a/demux/demux_mf.c
+++ b/demux/demux_mf.c
@@ -187,14 +187,15 @@ static mf_t *open_mf(demuxer_t *demuxer)
static int demux_check_file(demuxer_t *demuxer)
{
if (demuxer->stream->type == STREAMTYPE_MF)
- return DEMUXER_TYPE_MF;
+ return 0;
mf_t *mf = open_mf(demuxer);
bool ok = mf && probe_format(mf);
free_mf(mf);
- return ok ? DEMUXER_TYPE_MF : 0;
+ return ok ? 0 : -1;
}
-static demuxer_t* demux_open_mf(demuxer_t* demuxer){
+static int demux_open_mf(demuxer_t* demuxer)
+{
sh_video_t *sh_video = NULL;
mf_t *mf = open_mf(demuxer);
@@ -223,11 +224,11 @@ static demuxer_t* demux_open_mf(demuxer_t* demuxer){
mf->sh = sh_video;
demuxer->priv=(void*)mf;
- return demuxer;
+ return 0;
error:
free_mf(mf);
- return NULL;
+ return -1;
}
static void demux_close_mf(demuxer_t* demuxer) {
@@ -253,17 +254,17 @@ static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg) {
}
const demuxer_desc_t demuxer_desc_mf = {
- "mf demuxer",
- "mf",
- "MF",
- "?",
- "multiframe?, pictures demuxer",
- DEMUXER_TYPE_MF,
- 1,
- demux_check_file,
- demux_mf_fill_buffer,
- demux_open_mf,
- demux_close_mf,
- demux_seek_mf,
- demux_control_mf
+ .info = "mf demuxer",
+ .name = "mf",
+ .shortdesc = "MF",
+ .author = "?",
+ .comment = "multiframe?, pictures demuxer",
+ .type = DEMUXER_TYPE_MF,
+ .safe_check = 1,
+ .check_file = demux_check_file,
+ .fill_buffer = demux_mf_fill_buffer,
+ .open = demux_open_mf,
+ .close = demux_close_mf,
+ .seek = demux_seek_mf,
+ .control = demux_control_mf,
};
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 0d174639c7..a60172cce9 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1759,11 +1759,11 @@ static int demux_mkv_open(demuxer_t *demuxer)
stream_seek(s, s->start_pos);
if (!read_ebml_header(demuxer))
- return 0;
+ return -1;
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] Found the head...\n");
if (!read_mkv_segment_header(demuxer))
- return 0;
+ return -1;
mkv_d = talloc_zero(demuxer, struct mkv_demuxer);
demuxer->priv = mkv_d;
@@ -1788,7 +1788,7 @@ static int demux_mkv_open(demuxer_t *demuxer)
}
int res = read_header_element(demuxer, id, 0);
if (res <= -2)
- return 0;
+ return -1;
if (res < 0)
break;
}
@@ -1805,7 +1805,7 @@ static int demux_mkv_open(demuxer_t *demuxer)
demuxer->accurate_seek = true;
- return DEMUXER_TYPE_MATROSKA;
+ return 0;
}
static bool bstr_read_u8(bstr *buffer, uint8_t *out_u8)
@@ -2718,17 +2718,16 @@ static int demux_mkv_control(demuxer_t *demuxer, int cmd, void *arg)
}
const demuxer_desc_t demuxer_desc_matroska = {
- "Matroska demuxer",
- "mkv",
- "Matroska",
- "Aurelien Jacobs",
- "",
- DEMUXER_TYPE_MATROSKA,
- 1, // safe autodetect
- demux_mkv_open,
- demux_mkv_fill_buffer,
- NULL,
- mkv_free,
- demux_mkv_seek,
- demux_mkv_control
+ .info = "Matroska demuxer",
+ .name = "mkv",
+ .shortdesc = "Matroska",
+ .author = "Aurelien Jacobs",
+ .comment = "",
+ .type = DEMUXER_TYPE_MATROSKA,
+ .safe_check = 1, // safe autodetect
+ .check_file = demux_mkv_open,
+ .fill_buffer = demux_mkv_fill_buffer,
+ .close = mkv_free,
+ .seek = demux_mkv_seek,
+ .control = demux_mkv_control
};
diff --git a/demux/demux_mng.c b/demux/demux_mng.c
index 34fdf521b5..824a668868 100644
--- a/demux/demux_mng.c
+++ b/demux/demux_mng.c
@@ -263,10 +263,10 @@ static int demux_mng_check_file(demuxer_t *demuxer)
{
char buf[4];
if (stream_read(demuxer->stream, buf, 4) != 4)
- return 0;
+ return -1;
if (memcmp(buf, "\x8AMNG", 4))
- return 0;
- return DEMUXER_TYPE_MNG;
+ return -1;
+ return 0;
}
/**
@@ -343,12 +343,7 @@ static int demux_mng_fill_buffer(demuxer_t * demuxer)
return 1;
}
-/**
- * \brief MPlayer callback: Open MNG stream.
- * \param[in] demuxer demuxer structure
- * \return demuxer structure on success, \p NULL on error
- */
-static demuxer_t * demux_mng_open(demuxer_t * demuxer)
+static int demux_mng_open(demuxer_t * demuxer)
{
mng_priv_t * mng_priv;
mng_handle h_mng;
@@ -368,7 +363,7 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
mp_msg(MSGT_DEMUX, MSGL_ERR,
"demux_mng: could not initialize MNG image instance\n");
free(mng_priv);
- return NULL;
+ return -1;
}
// MNG image handle into private data
@@ -388,7 +383,7 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
"demux_mng: could not set MNG callbacks\n");
mng_cleanup(&h_mng);
free(mng_priv);
- return NULL;
+ return -1;
}
// start reading MNG data
@@ -399,7 +394,7 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
"mng_retcode %d\n", mng_ret);
mng_cleanup(&h_mng);
free(mng_priv);
- return NULL;
+ return -1;
}
// check that MNG header is processed now
@@ -408,7 +403,7 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
"demux_mng: internal error: header not processed\n");
mng_cleanup(&h_mng);
free(mng_priv);
- return NULL;
+ return -1;
}
// create a new video stream header
@@ -432,7 +427,7 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
// set private data in demuxer and return demuxer
demuxer->priv = mng_priv;
- return demuxer;
+ return 0;
}
/**
@@ -569,17 +564,17 @@ static int demux_mng_control(demuxer_t * demuxer, int cmd, void * arg)
}
const demuxer_desc_t demuxer_desc_mng = {
- "MNG demuxer",
- "mng",
- "MNG",
- "Stefan Schuermans <stefan@blinkenarea.org>",
- "MNG files, using libmng",
- DEMUXER_TYPE_MNG,
- 0, // unsafe autodetect (only checking magic at beginning of stream)
- demux_mng_check_file,
- demux_mng_fill_buffer,
- demux_mng_open,
- demux_mng_close,
- demux_mng_seek,
- demux_mng_control
+ .info = "MNG demuxer",
+ .name = "mng",
+ .shortdesc = "MNG",
+ .author = "Stefan Schuermans <stefan@blinkenarea.org>",
+ .comment = "MNG files, using libmng",
+ .type = DEMUXER_TYPE_MNG,
+ .safe_check = 0, // unsafe autodetect (only checking magic at beginning of stream)
+ .check_file = demux_mng_check_file,
+ .fill_buffer = demux_mng_fill_buffer,
+ .open = demux_mng_open,
+ .close = demux_mng_close,
+ .seek = demux_mng_seek,
+ .control = demux_mng_control,
};
diff --git a/demux/demux_rawaudio.c b/demux/demux_rawaudio.c
index 74134743a0..13bbbb341a 100644
--- a/demux/demux_rawaudio.c
+++ b/demux/demux_rawaudio.c
@@ -43,13 +43,13 @@ const m_option_t demux_rawaudio_opts[] = {
};
-static demuxer_t* demux_rawaudio_open(demuxer_t* demuxer) {
+static int demux_rawaudio_open(demuxer_t* demuxer) {
struct sh_stream *sh;
sh_audio_t* sh_audio;
WAVEFORMATEX* w;
if ((format & AF_FORMAT_SPECIAL_MASK) != 0)
- return NULL;
+ return -1;
sh = new_sh_stream(demuxer, STREAM_AUDIO);
sh_audio = sh->audio;
@@ -69,7 +69,7 @@ static demuxer_t* demux_rawaudio_open(demuxer_t* demuxer) {
demuxer->movi_start = demuxer->stream->start_pos;
demuxer->movi_end = demuxer->stream->end_pos;
- return demuxer;
+ return 0;
}
static int demux_rawaudio_fill_buffer(demuxer_t* demuxer)
@@ -110,16 +110,13 @@ static void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,float aud
}
const demuxer_desc_t demuxer_desc_rawaudio = {
- "Raw audio demuxer",
- "rawaudio",
- "rawaudio",
- "?",
- "",
- DEMUXER_TYPE_RAWAUDIO,
- 0, // no autodetect
- NULL,
- demux_rawaudio_fill_buffer,
- demux_rawaudio_open,
- NULL,
- demux_rawaudio_seek,
+ .info = "Raw audio demuxer",
+ .name = "rawaudio",
+ .shortdesc = "rawaudio",
+ .author = "?",
+ .comment = "",
+ .type = DEMUXER_TYPE_RAWAUDIO,
+ .fill_buffer = demux_rawaudio_fill_buffer,
+ .open = demux_rawaudio_open,
+ .seek = demux_rawaudio_seek,
};
diff --git a/demux/demux_rawvideo.c b/demux/demux_rawvideo.c
index 4340362192..488c13bdec 100644
--- a/demux/demux_rawvideo.c
+++ b/demux/demux_rawvideo.c
@@ -56,13 +56,13 @@ const m_option_t demux_rawvideo_opts[] = {
};
-static demuxer_t* demux_rawvideo_open(demuxer_t* demuxer) {
+static int demux_rawvideo_open(demuxer_t* demuxer) {
struct sh_stream *sh;
sh_video_t* sh_video;
if(!width || !height){
mp_msg(MSGT_DEMUX,MSGL_ERR,"rawvideo: width or height not specified!\n");
- return 0;
+ return -1;
}
const char *decoder = "rawvideo";
@@ -109,7 +109,7 @@ static demuxer_t* demux_rawvideo_open(demuxer_t* demuxer) {
}
if (!bpp) {
mp_msg(MSGT_DEMUX,MSGL_ERR,"rawvideo: img size not specified and unknown format!\n");
- return 0;
+ return -1;
}
imgsize = width * height * bpp / 8;
}
@@ -126,7 +126,7 @@ static demuxer_t* demux_rawvideo_open(demuxer_t* demuxer) {
demuxer->movi_start = demuxer->stream->start_pos;
demuxer->movi_end = demuxer->stream->end_pos;
- return demuxer;
+ return 0;
}
static int demux_rawvideo_fill_buffer(demuxer_t* demuxer)
@@ -166,17 +166,13 @@ static void demux_rawvideo_seek(demuxer_t *demuxer,float rel_seek_secs,float aud
const demuxer_desc_t demuxer_desc_rawvideo = {
- "Raw video demuxer",
- "rawvideo",
- "rawvideo",
- "?",
- "",
- DEMUXER_TYPE_RAWVIDEO,
- 0, // no autodetect
- NULL,
- demux_rawvideo_fill_buffer,
- demux_rawvideo_open,
- NULL,
- demux_rawvideo_seek,
- NULL
+ .info = "Raw video demuxer",
+ .name = "rawvideo",
+ .shortdesc = "rawvideo",
+ .author = "?",
+ .comment = "",
+ .type = DEMUXER_TYPE_RAWVIDEO,
+ .fill_buffer = demux_rawvideo_fill_buffer,
+ .open = demux_rawvideo_open,
+ .seek = demux_rawvideo_seek,
};
diff --git a/demux/demux_subreader.c b/demux/demux_subreader.c
index ce69218e50..7758aa968c 100644
--- a/demux/demux_subreader.c
+++ b/demux/demux_subreader.c
@@ -1336,11 +1336,11 @@ static int d_check_file(struct demuxer *demuxer)
free_stream(ps);
if (!res)
- return 0;
+ return -1;
sub_data *sd = sub_read_file(demuxer->stream, &sr);
if (!sd)
- return 0;
+ return -1;
struct priv *p = talloc_zero(demuxer, struct priv);
demuxer->priv = p;
@@ -1355,7 +1355,7 @@ static int d_check_file(struct demuxer *demuxer)
demuxer->accurate_seek = true;
- return DEMUXER_TYPE_SUBREADER;
+ return 0;
}
static int d_fill_buffer(struct demuxer *demuxer)