aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2016-03-09 23:34:04 +0100
committerGravatar wm4 <wm4@nowhere>2016-03-09 23:34:04 +0100
commit7387766445f7aae47a4e8095128ea9b688299091 (patch)
tree83e42ba5c0e647a2b3b5ba4a231435f2d55bb2be
parent95ca308d4494fc010802ed79fad5a9f85d9a5730 (diff)
command: change stream-pos semantics
Changing the byte stream position without cooperation of the demuxer seems a bit insane, and is certainly useless. A user should do factor seeks instead. For formats like ts, this will actually translate to byte seeks, while treating the rest of the playback chain a bit more gracefully. With this argument, remove write access to this property. If someone really complains, proper byte seeks could be added as seek mode (although I'm going to need a convincing argument for this). Read access changes too, but in a more subtle way.
-rw-r--r--DOCS/interface-changes.rst1
-rw-r--r--DOCS/man/input.rst5
-rw-r--r--player/command.c14
3 files changed, 6 insertions, 14 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index 1298c24d6d..377d3efbb0 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -22,6 +22,7 @@ Interface changes
--- mpv 0.17.0 ---
- deprecate "track-list/N/audio-channels" property (use
"track-list/N/demux-channel-count" instead)
+ - remove write access to "stream-pos", and change semantics for read access
--- mpv 0.16.0 ---
- change --audio-channels default to stereo (use --audio-channels=auto to
get the old default)
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index 0cdb611583..8aafadbf81 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -921,8 +921,9 @@ Property list
useless. It looks like this can be different from ``path`` only when
using e.g. ordered chapters.)
-``stream-pos`` (RW)
- Raw byte position in source stream.
+``stream-pos``
+ Raw byte position in source stream. Technically, this returns the position
+ of the most recent packet passed to a decoder.
``stream-end``
Raw end position in bytes in source stream.
diff --git a/player/command.c b/player/command.c
index 42938af140..fe2eb3eb22 100644
--- a/player/command.c
+++ b/player/command.c
@@ -458,24 +458,14 @@ static int mp_property_file_format(void *ctx, struct m_property *prop,
return m_property_strdup_ro(action, arg, name);
}
-/// Position in the stream (RW)
static int mp_property_stream_pos(void *ctx, struct m_property *prop,
int action, void *arg)
{
MPContext *mpctx = ctx;
struct demuxer *demuxer = mpctx->demuxer;
- if (!demuxer)
+ if (!demuxer || demuxer->filepos < 0)
return M_PROPERTY_UNAVAILABLE;
- demux_pause(demuxer);
- int r;
- if (action == M_PROPERTY_SET) {
- stream_seek(demuxer->stream, *(int64_t *) arg);
- r = M_PROPERTY_OK;
- } else {
- r = m_property_int64_ro(action, arg, stream_tell(demuxer->stream));
- }
- demux_unpause(demuxer);
- return r;
+ return m_property_int64_ro(action, arg, demuxer->filepos);
}
/// Stream end offset (RO)