diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-17 10:12:31 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-17 10:12:31 +0200 |
| commit | a98445ce246509b0d2600df14907f72b448a6d10 (patch) | |
| tree | 023e1c09d8fa42f67f5da8ff32a22f271359d843 /packages/meshbay-common/src/meshbay_common | |
| parent | f4fd6db8faa15bf02f38a14b652cc46936f8d6bf (diff) | |
| download | meshbay-a98445ce246509b0d2600df14907f72b448a6d10.tar.gz | |
feat: let the viewer pick the audio track
The streaming path mapped 0:a:0 unconditionally, so a dubbed film played in
whichever language was muxed first and the others were unreachable. The node
now enumerates the tracks in stream_init and honours audio_track in
stream_req; switching is the seek path, since one ffmpeg carries one track.
MNP 3.2, additive: the player draws its selector from the node's own list and
never from a version number, so an older node is never asked for a track it
would ignore. MNP_MIN_SUPPORTED does not move.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-common/src/meshbay_common')
| -rw-r--r-- | packages/meshbay-common/src/meshbay_common/__init__.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/packages/meshbay-common/src/meshbay_common/__init__.py b/packages/meshbay-common/src/meshbay_common/__init__.py index 80e6d92..c4c4bf4 100644 --- a/packages/meshbay-common/src/meshbay_common/__init__.py +++ b/packages/meshbay-common/src/meshbay_common/__init__.py @@ -181,5 +181,25 @@ __version__ = "0.14.0" # next one it reaches and keeps its own copy meanwhile (§6.4). `MNP_MIN_SUPPORTED` # does not move. That is the difference from 3.0, where the requirement — not the # messages — is what made it MAJOR. -MNP_VERSION = "3.1" +# **3.2 (2026-09-17): the viewer picks the audio track.** +# +# `stream_init` carries `audio_tracks` (ordinal, language, title, codec, +# channels) and the `audio_track` actually used; `stream_req` gains an optional +# `audio_track`. Until now the streaming path mapped `0:a:0` unconditionally, +# so a dubbed film played in whichever language was muxed first — across a real +# library that is one language, and the others were unreachable. +# +# **Additive, and MINOR because nothing is required, but the reason differs +# from 3.1's.** A playlist a node cannot store is a feature a client keeps to +# itself; an `audio_track` a node ignores is the *wrong language*, served +# silently, which is a wrong answer and not a missing one. What makes this +# MINOR anyway is that the client cannot get into that position: the selector +# is drawn from `audio_tracks` in the node's own `stream_init`, so a 3.1 node +# sends no list, the client shows no selector, and no `audio_track` is ever +# sent to a peer that would ignore it. **The capability is discovered from the +# answer, never from the version number** — and that is not the opt-in +# compatibility switch 3.0 refused, because there is no second branch on the +# node: a 3.2 node always enumerates, always honours what it is asked for, and +# always says which track it used. `MNP_MIN_SUPPORTED` does not move. +MNP_VERSION = "3.2" MHP_VERSION = "0.1" |