A disc rip is offered for playback with no way to play it #41
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A DVD rip is filed with a runtime, a container, streams and a size (#38), so a
client is offered it — and a request to play one hands ffmpeg the directory.
Input::input_path_argument(crates/jellyfin-encoding/src/input.rs) specialcases the
bluray:prefix and nothing else. Upstream'sMediaEncoder.GetInputPathArgumentswitches on the video type and builds theinput from the same list of files the probe was pointed at:
and several files become one input through a concat list
(
GenerateConcatConfig).The scan already knows which files those are —
crates/jellyfin-app/src/scan/discs.rs::playable_vobsis the port ofGetPrimaryPlaylistVobFiles, so the rule does not need writing twice, onlymoving somewhere both can reach it.
Reachable only since a rip became one item rather than a folder of them.
A DVD rip is a folder, and pointing ffmpeg at a folder does nothing. It is now
read through the
.vobfiles that play it, picked the way upstream picks them(
GetPrimaryPlaylistVobFiles): the disc's menu and each title's own aredropped, what is left is grouped by the part number its name ends with, and the
groups holding a file big enough to be a title are the feature.
The listing is taken at play time rather than remembered, because a row records
where the rip is and not what is inside it.
Two things came out of the review and are worth naming.
A quote in a path was torn apart. The arg builders escape one as
\"—which is what .NET's parser takes it for, so upstream is right — but this
port's splitter toggled on every quote and kept the backslash. A film under a
directory with a quote in its name reached ffmpeg as several broken arguments.
Fixed with a test that fails without it. Pre-existing, and nothing to do with
rips; the branch only made it visible.
An attachment and a subtitle track are pulled from the source's own path,
not from the joined files, matching
AttachmentExtractorandSubtitleEncoder.There is one file carrying them, so there is nothing to join.
Not fixed here, and filed as #43: the files are joined with
-i concat:"a|b",the concat protocol, where upstream writes a config file and passes
-f concat -safe 0 -i <file>, the concat demuxer. Those differ in a way thatmatters — the demuxer re-bases timestamps per file from measured durations, and
the grouping above can select two different title sets, whose timestamps
restart at the boundary.
A Blu-ray still goes over as the folder it is: which streams play it is written
in a playlist nothing here reads.
Neither the harness nor the ffmpeg corpus can see any of this — the corpus
generator refuses a folder outright, and the reference library holds no rip. So
the ported selection is tested directly and the joined argument is not measured
against upstream at all.