summaryrefslogtreecommitdiffstats
path: root/demux/demux_lavf.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-09-13 17:22:17 +0200
committerwm4 <wm4@nowhere>2019-09-13 17:33:58 +0200
commita75b249b0b116b6ddc5c430f0a9974696361ebf9 (patch)
treeb294862c47eb50afef03f1638724103f1dc2f799 /demux/demux_lavf.c
parentddcbe66768a8a29f6e6538939c57046e9efe48fc (diff)
downloadmpv-a75b249b0b116b6ddc5c430f0a9974696361ebf9.tar.bz2
mpv-a75b249b0b116b6ddc5c430f0a9974696361ebf9.tar.xz
command, demux: remove program property
The "program" property could switch between TS programs. It was rather complex and rather obscure (even if you deal with TS captures, you usually don't need it). If anyone actually needs it (did anyone ever attempt to even use it?), it should be rewritten. The demuxer should export a program list, and the frontend should handle the "cycling" logic.
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r--demux/demux_lavf.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 5d6c2725dc..bccc0c53a1 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -210,7 +210,6 @@ typedef struct lavf_priv {
AVIOContext *pb;
struct sh_stream **streams; // NULL for unknown streams
int num_streams;
- int cur_program;
char *mime_type;
double seek_delay;
bool optical_crap_hack;
@@ -1181,74 +1180,8 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
switch (cmd) {
case DEMUXER_CTRL_SWITCHED_TRACKS:
- {
select_tracks(demuxer, 0);
return CONTROL_OK;
- }
- case DEMUXER_CTRL_IDENTIFY_PROGRAM:
- {
- demux_program_t *prog = arg;
- AVProgram *program;
- int p, i;
- int start;
-
- add_new_streams(demuxer);
-
- prog->vid = prog->aid = prog->sid = -2;
- if (priv->avfc->nb_programs < 1)
- return CONTROL_FALSE;
-
- if (prog->progid == -1) {
- p = 0;
- while (p < priv->avfc->nb_programs && priv->avfc->programs[p]->id != priv->cur_program)
- p++;
- p = (p + 1) % priv->avfc->nb_programs;
- } else {
- for (i = 0; i < priv->avfc->nb_programs; i++)
- if (priv->avfc->programs[i]->id == prog->progid)
- break;
- if (i == priv->avfc->nb_programs)
- return CONTROL_FALSE;
- p = i;
- }
- start = p;
-redo:
- prog->vid = prog->aid = prog->sid = -2;
- program = priv->avfc->programs[p];
- for (i = 0; i < program->nb_stream_indexes; i++) {
- struct sh_stream *stream = priv->streams[program->stream_index[i]];
- if (stream) {
- switch (stream->type) {
- case STREAM_VIDEO:
- if (prog->vid == -2)
- prog->vid = stream->demuxer_id;
- break;
- case STREAM_AUDIO:
- if (prog->aid == -2)
- prog->aid = stream->demuxer_id;
- break;
- case STREAM_SUB:
- if (prog->sid == -2)
- prog->sid = stream->demuxer_id;
- break;
- }
- }
- }
- if (prog->progid == -1 && prog->vid == -2 && prog->aid == -2) {
- p = (p + 1) % priv->avfc->nb_programs;
- if (p == start)
- return CONTROL_FALSE;
- goto redo;
- }
- priv->cur_program = prog->progid = program->id;
-
- mp_tags_copy_from_av_dictionary(demuxer->metadata, priv->avfc->programs[p]->metadata);
- update_metadata(demuxer);
- // Enforce metadata update even if no explicit METADATA_UPDATED since we switched program.
- demux_metadata_changed(demuxer);
-
- return CONTROL_OK;
- }
case DEMUXER_CTRL_REPLACE_STREAM:
if (priv->own_stream)
free_stream(priv->stream);