summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-06-19 17:54:02 +0200
committerwm4 <wm4@nowhere>2017-06-19 17:56:51 +0200
commitf34e1a0deea45e5ed200f1d8daa36ca92d899e92 (patch)
tree4d28e0521f83ff6771d830f60981f8570b32dea0
parente0c50289d6dc579bcf0eb8dbc9f0a68138d29aa8 (diff)
downloadmpv-f34e1a0deea45e5ed200f1d8daa36ca92d899e92.tar.bz2
mpv-f34e1a0deea45e5ed200f1d8daa36ca92d899e92.tar.xz
demux: replace custom return codes with CONTROL_ ones
This is more uniform, and potentially gets rid of some past copyrights. It might be that this subtly changes caching behavior (it seems before this, it synced to the demuxer if the length was unknown, which is not what we want.)
-rw-r--r--demux/demux.c20
-rw-r--r--demux/demux.h5
-rw-r--r--demux/demux_disc.c4
-rw-r--r--demux/demux_lavf.c22
-rw-r--r--demux/demux_mf.c4
-rw-r--r--demux/demux_mkv.c6
-rw-r--r--demux/demux_raw.c6
-rw-r--r--demux/demux_timeline.c6
-rw-r--r--demux/demux_tv.c4
-rw-r--r--player/command.c4
10 files changed, 38 insertions, 43 deletions
diff --git a/demux/demux.c b/demux/demux.c
index acccdf5363..87c9879a59 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -1647,16 +1647,16 @@ static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
switch (cmd) {
case DEMUXER_CTRL_GET_TIME_LENGTH:
if (in->time_length < 0)
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_FALSE;
*(double *)arg = in->time_length;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
case DEMUXER_CTRL_STREAM_CTRL: {
struct demux_ctrl_stream_ctrl *c = arg;
int r = cached_stream_control(in, c->ctrl, c->arg);
if (r == STREAM_ERROR)
break;
c->res = r;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_GET_BITRATE_STATS: {
double *rates = arg;
@@ -1667,7 +1667,7 @@ static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
if (ds->selected && ds->bitrate >= 0)
rates[ds->type] = MPMAX(0, rates[ds->type]) + ds->bitrate;
}
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_GET_READER_STATE: {
struct demux_ctrl_reader_state *r = arg;
@@ -1694,10 +1694,10 @@ static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
r->ts_duration = 0;
r->ts_range[0] = MP_ADD_PTS(r->ts_range[0], in->ts_offset);
r->ts_range[1] = MP_ADD_PTS(r->ts_range[1], in->ts_offset);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
}
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_UNKNOWN;
}
struct demux_control_args {
@@ -1714,7 +1714,7 @@ static void thread_demux_control(void *p)
int cmd = args->cmd;
void *arg = args->arg;
struct demux_internal *in = demuxer->in;
- int r = DEMUXER_CTRL_NOTIMPL;
+ int r = CONTROL_UNKNOWN;
if (cmd == DEMUXER_CTRL_STREAM_CTRL) {
struct demux_ctrl_stream_ctrl *c = arg;
@@ -1722,9 +1722,9 @@ static void thread_demux_control(void *p)
MP_VERBOSE(demuxer, "blocking for STREAM_CTRL %d\n", c->ctrl);
c->res = stream_control(demuxer->stream, c->ctrl, c->arg);
if (c->res != STREAM_UNSUPPORTED)
- r = DEMUXER_CTRL_OK;
+ r = CONTROL_OK;
}
- if (r != DEMUXER_CTRL_OK) {
+ if (r != CONTROL_OK) {
if (in->threading)
MP_VERBOSE(demuxer, "blocking for DEMUXER_CTRL %d\n", cmd);
if (demuxer->desc->control)
@@ -1743,7 +1743,7 @@ int demux_control(demuxer_t *demuxer, int cmd, void *arg)
pthread_mutex_lock(&in->lock);
int cr = cached_demux_control(in, cmd, arg);
pthread_mutex_unlock(&in->lock);
- if (cr != DEMUXER_CTRL_DONTKNOW)
+ if (cr != CONTROL_UNKNOWN)
return cr;
}
diff --git a/demux/demux.h b/demux/demux.h
index 8a1da4e400..b1b83b3156 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -30,11 +30,6 @@
#include "packet.h"
#include "stheader.h"
-// DEMUXER control commands/answers
-#define DEMUXER_CTRL_NOTIMPL -1
-#define DEMUXER_CTRL_DONTKNOW 0
-#define DEMUXER_CTRL_OK 1
-
enum demux_ctrl {
DEMUXER_CTRL_SWITCHED_TRACKS = 1,
DEMUXER_CTRL_GET_TIME_LENGTH,
diff --git a/demux/demux_disc.c b/demux/demux_disc.c
index ad54db8c19..f4c9c34332 100644
--- a/demux/demux_disc.c
+++ b/demux/demux_disc.c
@@ -357,14 +357,14 @@ static int d_control(demuxer_t *demuxer, int cmd, void *arg)
if (stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, &len) < 1)
break;
*(double *)arg = len;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_RESYNC:
demux_flush(p->slave);
break; // relay to slave demuxer
case DEMUXER_CTRL_SWITCHED_TRACKS:
reselect_streams(demuxer);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
return demux_control(p->slave, cmd, arg);
}
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index e7a31e3df4..e2b6ca673d 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -1061,18 +1061,18 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
}
double duration = av_duration > 0 ? av_duration : total_duration;
if (duration <= 0)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
*(double *)arg = duration;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
*((double *)arg) = (double)priv->avfc->duration / AV_TIME_BASE;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
case DEMUXER_CTRL_SWITCHED_TRACKS:
{
select_tracks(demuxer, 0);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_IDENTIFY_PROGRAM:
{
@@ -1085,7 +1085,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
prog->vid = prog->aid = prog->sid = -2;
if (priv->avfc->nb_programs < 1)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
if (prog->progid == -1) {
p = 0;
@@ -1097,7 +1097,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
if (priv->avfc->programs[i]->id == prog->progid)
break;
if (i == priv->avfc->nb_programs)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
p = i;
}
start = p;
@@ -1126,7 +1126,7 @@ redo:
if (prog->progid == -1 && prog->vid == -2 && prog->aid == -2) {
p = (p + 1) % priv->avfc->nb_programs;
if (p == start)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
goto redo;
}
priv->cur_program = prog->progid = program->id;
@@ -1136,7 +1136,7 @@ redo:
// Enforce metadata update even if no explicit METADATA_UPDATED since we switched program.
demux_changed(demuxer, DEMUX_EVENT_METADATA);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_RESYNC:
/* NOTE:
@@ -1157,15 +1157,15 @@ redo:
priv->avfc->pb->pos = stream_tell(priv->stream);
av_seek_frame(priv->avfc, 0, stream_tell(priv->stream),
AVSEEK_FLAG_BYTE);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
case DEMUXER_CTRL_REPLACE_STREAM:
if (priv->own_stream)
free_stream(priv->stream);
priv->own_stream = false;
priv->stream = demuxer->stream;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
default:
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
}
}
diff --git a/demux/demux_mf.c b/demux/demux_mf.c
index 50afd355b7..859a59925f 100644
--- a/demux/demux_mf.c
+++ b/demux/demux_mf.c
@@ -353,10 +353,10 @@ static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg)
switch (cmd) {
case DEMUXER_CTRL_GET_TIME_LENGTH:
*((double *)arg) = (double)mf->nr_of_files / mf->sh->codec->fps;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
default:
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
}
}
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index add99a9c2d..b040c45f23 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -3123,12 +3123,12 @@ static int demux_mkv_control(demuxer_t *demuxer, int cmd, void *arg)
switch (cmd) {
case DEMUXER_CTRL_GET_TIME_LENGTH:
if (mkv_d->duration == 0)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
*((double *) arg) = (double) mkv_d->duration;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
default:
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
}
}
diff --git a/demux/demux_raw.c b/demux/demux_raw.c
index 7dffa1caa7..d9e7ebb63a 100644
--- a/demux/demux_raw.c
+++ b/demux/demux_raw.c
@@ -306,13 +306,13 @@ static int raw_control(demuxer_t *demuxer, int cmd, void *arg)
stream_t *s = demuxer->stream;
int64_t end = 0;
if (stream_control(s, STREAM_CTRL_GET_SIZE, &end) != STREAM_OK)
- return DEMUXER_CTRL_DONTKNOW;
+ return CONTROL_FALSE;
*((double *) arg) = (end / p->frame_size) / p->frame_rate;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
default:
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
}
}
diff --git a/demux/demux_timeline.c b/demux/demux_timeline.c
index 3759c9ffc1..359f97f2bc 100644
--- a/demux/demux_timeline.c
+++ b/demux/demux_timeline.c
@@ -436,13 +436,13 @@ static int d_control(struct demuxer *demuxer, int cmd, void *arg)
switch (cmd) {
case DEMUXER_CTRL_GET_TIME_LENGTH: {
*(double *)arg = p->duration;
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
case DEMUXER_CTRL_SWITCHED_TRACKS:
reselect_streams(demuxer);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
}
const demuxer_desc_t demuxer_desc_timeline = {
diff --git a/demux/demux_tv.c b/demux/demux_tv.c
index 94bb71284e..612457d473 100644
--- a/demux/demux_tv.c
+++ b/demux/demux_tv.c
@@ -227,10 +227,10 @@ static int demux_tv_control(demuxer_t *demuxer, int cmd, void *arg)
{
tvi_handle_t *tvh=(tvi_handle_t*)(demuxer->priv);
if (cmd != DEMUXER_CTRL_STREAM_CTRL)
- return DEMUXER_CTRL_NOTIMPL;
+ return CONTROL_UNKNOWN;
struct demux_ctrl_stream_ctrl *ctrl = arg;
ctrl->res = tv_stream_control(tvh, ctrl->ctrl, ctrl->arg);
- return DEMUXER_CTRL_OK;
+ return CONTROL_OK;
}
const demuxer_desc_t demuxer_desc_tv = {
diff --git a/player/command.c b/player/command.c
index 742b1fa91a..3df1b3fcd1 100644
--- a/player/command.c
+++ b/player/command.c
@@ -2370,7 +2370,7 @@ static int mp_property_program(void *ctx, struct m_property *prop,
int action, void *arg)
{
MPContext *mpctx = ctx;
- demux_program_t prog;
+ demux_program_t prog = {0};
struct demuxer *demuxer = mpctx->demuxer;
if (!demuxer || !mpctx->playback_initialized)
@@ -2384,7 +2384,7 @@ static int mp_property_program(void *ctx, struct m_property *prop,
else
prog.progid = -1;
if (demux_control(demuxer, DEMUXER_CTRL_IDENTIFY_PROGRAM, &prog) ==
- DEMUXER_CTRL_NOTIMPL)
+ CONTROL_UNKNOWN)
return M_PROPERTY_ERROR;
if (prog.aid < 0 && prog.vid < 0) {