mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 01:22:30 +00:00
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.
This commit is contained in:
parent
95ca308d44
commit
7387766445
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user