summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/interface-changes.rst1
-rw-r--r--DOCS/man/input.rst3
-rw-r--r--demux/demux.h5
-rw-r--r--demux/demux_lavf.c67
-rw-r--r--player/command.c58
5 files changed, 1 insertions, 133 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index c849a8f499..8ed88c1204 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -84,6 +84,7 @@ Interface changes
properties. dvd:// does not support title ranges anymore.
- Remove all "tv-..." options and properties, along with the classic Linux
analog TV support.
+ - remove "program" property (no replacement)
--- mpv 0.29.0 ---
- drop --opensles-sample-rate, as --audio-samplerate should be used if desired
- drop deprecated --videotoolbox-format, --ff-aid, --ff-vid, --ff-sid,
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index 5065a90283..9181b78487 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -1811,9 +1811,6 @@ Property list
``osd-par``
Last known OSD display pixel aspect (can be 0).
-``program`` (W)
- Switch TS program (write-only).
-
``sub-text``
Return the current subtitle text. Formatting is stripped. If a subtitle
is selected, but no text is currently visible, or the subtitle is not
diff --git a/demux/demux.h b/demux/demux.h
index 838314bd4b..3a4b7dd331 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -244,11 +244,6 @@ typedef struct demuxer {
struct stream *stream;
} demuxer_t;
-typedef struct {
- int progid; //program id
- int aid, vid, sid; //audio, video and subtitle id
-} demux_program_t;
-
void demux_free(struct demuxer *demuxer);
void demux_cancel_and_free(struct demuxer *demuxer);
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);
diff --git a/player/command.c b/player/command.c
index 19b78e27c3..d787242d48 100644
--- a/player/command.c
+++ b/player/command.c
@@ -2113,63 +2113,6 @@ static int mp_property_video(void *ctx, struct m_property *prop,
return property_switch_track(prop, action, arg, ctx, 0, STREAM_VIDEO);
}
-static struct track *find_track_by_demuxer_id(MPContext *mpctx,
- enum stream_type type,
- int demuxer_id)
-{
- for (int n = 0; n < mpctx->num_tracks; n++) {
- struct track *track = mpctx->tracks[n];
- if (track->type == type && track->demuxer_id == demuxer_id)
- return track;
- }
- return NULL;
-}
-
-static int mp_property_program(void *ctx, struct m_property *prop,
- int action, void *arg)
-{
- MPContext *mpctx = ctx;
- demux_program_t prog = {0};
-
- struct demuxer *demuxer = mpctx->demuxer;
- if (!demuxer || !mpctx->playback_initialized)
- return M_PROPERTY_UNAVAILABLE;
-
- switch (action) {
- case M_PROPERTY_SWITCH:
- case M_PROPERTY_SET:
- if (action == M_PROPERTY_SET && arg)
- prog.progid = *((int *) arg);
- else
- prog.progid = -1;
- if (demux_control(demuxer, DEMUXER_CTRL_IDENTIFY_PROGRAM, &prog) ==
- CONTROL_UNKNOWN)
- return M_PROPERTY_ERROR;
-
- if (prog.aid < 0 && prog.vid < 0) {
- MP_ERR(mpctx, "Selected program contains no audio or video streams!\n");
- return M_PROPERTY_ERROR;
- }
- mp_switch_track(mpctx, STREAM_VIDEO,
- find_track_by_demuxer_id(mpctx, STREAM_VIDEO, prog.vid), 0);
- mp_switch_track(mpctx, STREAM_AUDIO,
- find_track_by_demuxer_id(mpctx, STREAM_AUDIO, prog.aid), 0);
- mp_switch_track(mpctx, STREAM_SUB,
- find_track_by_demuxer_id(mpctx, STREAM_VIDEO, prog.sid), 0);
- print_track_list(mpctx, "Program switched:");
- return M_PROPERTY_OK;
- case M_PROPERTY_GET_TYPE:
- *(struct m_option *)arg = (struct m_option){
- .type = CONF_TYPE_INT,
- .flags = CONF_RANGE,
- .min = -1,
- .max = (1 << 16) - 1,
- };
- return M_PROPERTY_OK;
- }
- return M_PROPERTY_NOT_IMPLEMENTED;
-}
-
static int mp_property_hwdec(void *ctx, struct m_property *prop,
int action, void *arg)
{
@@ -3553,7 +3496,6 @@ static const struct m_property mp_properties_base[] = {
{"estimated-vf-fps", mp_property_vf_fps},
{"video-aspect", mp_property_aspect},
{"vid", mp_property_video},
- {"program", mp_property_program},
{"hwdec", mp_property_hwdec},
{"hwdec-current", mp_property_hwdec_current},
{"hwdec-interop", mp_property_hwdec_interop},