0.108.2: GT picture fix on the installed 0.108.1 (VfW H.264 in MKV); lint opt-in for the copied reader
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
Claude
co-authored by
Claude Opus 5.5
parent
6a262dac19
commit
80d315481b
@@ -31,6 +31,7 @@ import java.lang.annotation.Target;
|
||||
import java.util.ArrayDeque;
|
||||
|
||||
/** Default implementation of {@link EbmlReader}. */
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
/* package */ final class DefaultEbmlReader implements EbmlReader {
|
||||
|
||||
@Documented
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.lang.annotation.Target;
|
||||
|
||||
/** Defines EBML element IDs/types and processes events. */
|
||||
@UnstableApi
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
public interface EbmlProcessor {
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,6 +26,7 @@ import java.io.IOException;
|
||||
* originally designed for the Matroska container format. More information about EBML and Matroska
|
||||
* is available <a href="http://www.matroska.org/technical/specs/index.html">here</a>.
|
||||
*/
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
/* package */ interface EbmlReader {
|
||||
|
||||
/**
|
||||
|
||||
@@ -83,6 +83,7 @@ import java.util.UUID;
|
||||
|
||||
/** Extracts data from the Matroska and WebM container formats. */
|
||||
@UnstableApi
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
public class MatroskaExtractor implements Extractor {
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.io.IOException;
|
||||
* Utility class that peeks from the input stream in order to determine whether it appears to be
|
||||
* compatible input for this extractor.
|
||||
*/
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
/* package */ final class Sniffer {
|
||||
|
||||
/** The number of bytes to search for a valid header in {@link #sniff(ExtractorInput)}. */
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
|
||||
/** Reads EBML variable-length integers (varints) from an {@link ExtractorInput}. */
|
||||
@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class)
|
||||
/* package */ final class VarintReader {
|
||||
|
||||
private static final int STATE_BEGIN_READING = 0;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# 0.108.2: Dragon Ball GT's picture, built on the installed 0.108.1
|
||||
|
||||
**Paul's report (4 November 2026, 21:58):** Dragon Ball GT on Vortex "won't play on this device".
|
||||
|
||||
**What the box showed:**
|
||||
- S1 E4 (item 228430) failed with `noVideoDecoder=video/x-unknown`.
|
||||
- A 3-minute test of S1 E5 (228431) played sound and English subtitles with **no video track** (`video=none`).
|
||||
- Emby reports every GT episode as H.264 640x480 in MKV with Vorbis audio. The library has only one copy, 64 episodes.
|
||||
- **The cause:** the files carry their H.264 in the old Video for Windows wrapper (Matroska CodecID V_MS/VFW/FOURCC). Media3's Matroska reader recognises that wrapper only for DivX/Xvid, H.263 and VC-1, and labels anything else video/x-unknown.
|
||||
- Paul doesn't own the Emby server, so remuxing the files there isn't an option. He asked for the fix in the app.
|
||||
|
||||
**The fix:**
|
||||
- `tv/orbit/classic/mkv/` is a copy of Media3 1.8.0's Matroska reader (Apache 2.0). It's unchanged apart from its package and one addition: `parseFourCcPrivate` also maps H.264 FourCCs (H264, X264, AVC1, DAVC, VSSH, either case) to video/avc. The stream is passed as it is, with its parameter sets in band, which the decoder reads.
|
||||
- `OrbitExtractorsFactory` is Media3's DefaultExtractorsFactory with only the Matroska reader swapped. The programme, picture and ident players use it.
|
||||
- Every other format and subtitle path is Media3's own.
|
||||
- It's built on 0.108.1, the version on the box, so Advent and The Naughty List aren't in it. The same change is on main for later releases.
|
||||
|
||||
## Checks
|
||||
|
||||
- 482 unit tests run, 0 failures. `OrbitMatroskaTest` adds 3: the H.264 FourCCs map, other FourCCs stay Media3's, and only the Matroska reader is swapped. Lint shows the same warnings as before and no errors.
|
||||
- **Not provable off the box:** that GT now shows its picture. After the install, a 3-minute test of S1 E5 must show `video=video/avc` with a first frame.
|
||||
- **Episode 4:** item 228430 stays on the failed list from 21:56. It can be cleared, so it's booked again, once the picture is confirmed.
|
||||
|
||||
APK: `outputs/revision-0.108.2`, signed, versionCode 162. **Not installed.**
|
||||
Reference in New Issue
Block a user