summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-09-07 21:58:46 +0200
committerwm4 <wm4@nowhere>2019-09-19 20:37:04 +0200
commitb298140b07842bd3573866564ad30ddfef65638c (patch)
tree0239561d157e4c8e5fd62c73bfde6eb46bdf2047 /demux/demux.c
parentf77515ebafb9fdfd177671b848211824e654206f (diff)
downloadmpv-b298140b07842bd3573866564ad30ddfef65638c.tar.bz2
mpv-b298140b07842bd3573866564ad30ddfef65638c.tar.xz
demux: return stream file size differently, rip out stream ctrls
The stream size return was the only thing that still required doing STREAM_CTRLs from frontend through the demuxer layer. This can be done much easier, so rip it out. Also rip out the now unused infrastructure for STREAM_CTRLs via demuxer layer.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c37
1 files changed, 1 insertions, 36 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 6c4f9542f8..3aade0f200 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -1878,6 +1878,7 @@ static struct demux_packet *dequeue_packet(struct demux_stream *ds)
// This implies this function is actually called from "the" user thread.
if (pkt->pos >= ds->in->d_user->filepos)
ds->in->d_user->filepos = pkt->pos;
+ ds->in->d_user->filesize = ds->in->stream_size;
pkt->pts = MP_ADD_PTS(pkt->pts, ds->in->ts_offset);
pkt->dts = MP_ADD_PTS(pkt->dts, ds->in->ts_offset);
@@ -3115,30 +3116,9 @@ static void update_cache(struct demux_internal *in)
}
// must be called locked
-static int cached_stream_control(struct demux_internal *in, int cmd, void *arg)
-{
- switch (cmd) {
- case STREAM_CTRL_GET_SIZE:
- if (in->stream_size < 0)
- return STREAM_UNSUPPORTED;
- *(int64_t *)arg = in->stream_size;
- return STREAM_OK;
- }
- return STREAM_ERROR;
-}
-
-// must be called locked
static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
{
switch (cmd) {
- 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 CONTROL_OK;
- }
case DEMUXER_CTRL_GET_BITRATE_STATS: {
double *rates = arg;
for (int n = 0; n < STREAM_TYPE_COUNT; n++)
@@ -3217,14 +3197,6 @@ static void thread_demux_control(void *p)
pthread_mutex_unlock(&in->lock);
- if (cmd == DEMUXER_CTRL_STREAM_CTRL) {
- struct demux_ctrl_stream_ctrl *c = arg;
- if (in->threading)
- 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 = CONTROL_OK;
- }
if (r != CONTROL_OK) {
if (in->threading)
MP_VERBOSE(demuxer, "blocking for DEMUXER_CTRL %d\n", cmd);
@@ -3272,13 +3244,6 @@ int demux_control(demuxer_t *demuxer, int cmd, void *arg)
return r;
}
-int demux_stream_control(demuxer_t *demuxer, int ctrl, void *arg)
-{
- struct demux_ctrl_stream_ctrl c = {ctrl, arg, STREAM_UNSUPPORTED};
- demux_control(demuxer, DEMUXER_CTRL_STREAM_CTRL, &c);
- return c.res;
-}
-
bool demux_cancel_test(struct demuxer *demuxer)
{
return mp_cancel_test(demuxer->cancel);