github ysosrs123/NuvioTV-Fork 0.8.8-beta-nt1
Nuvio-test 0.8.8-beta-nt1

3 hours ago

This release brings the fork up to date with official NuvioTV 0.8.8-beta (taking in 0.8.6 and 0.8.7 on the way) and ships everything from the unpublished 0.8.5-beta nt2 → nt20 series in one go. The headline fork items: VC-1 Blu-ray remuxes now play — and play smoothly — on Amlogic devices, colour themes work across the app again, there's a new IMDb trailer source, and high-bitrate streaming from debrid CDNs holds together far better when a server throttles or a single chunk stalls. Slow sources no longer vanish from the list, the Home screen scrolls more evenly, the app opens a touch faster from cold, and the playback stats overlay is tidier and its network readouts are now honest. From upstream: embedded subtitle styles, corrupted-character repair, Bluetooth-proof playback, a unified Sources panel, rating-visibility settings and a long list of fixes.

Fork timings were measured on an Ugoos AM9 Pro; absolute times vary with hardware and network, so treat them as indicative.


At a glance


New

VC-1 video playback on Amlogic devices

Blu-ray / HD-DVD-era VC-1 remuxes (typically Advanced-Profile .mkv) used to play audio-only with a "decoder error" and no picture. They now select the hardware VC-1 decoder and play.

The original cause was a naming mismatch: the player asked the system for a video/wvc1 decoder, but Amlogic registers its VC-1 decoders under video/vc1, so the search came up empty even though the hardware can decode the format. This build bridges the two — when the first query finds nothing, it re-asks under the name the hardware accepts and hands the decoder that.

And they now play smoothly. An interim build got VC-1 playing but left it dropping roughly one frame in three — a steady judder even on well-sourced files. The cause was in the hardware decoder: it stamped each frame with the wrong timing in a repeating pattern, so the player judged about a third of the frames "too late" and dropped them, even though every frame had decoded correctly and on time. A small repair step now detects that pattern and restores each frame's correct timing before the player decides whether to show it. Measured drops on a 1080p TrueHD VC-1 remux went from ~29% to ~0.2%.

Audio — including TrueHD/Atmos passthrough — is unaffected, and every other format is untouched: both fixes engage automatically only when they actually see the fault, and stay completely out of the way otherwise. The bridge is also safe on non-Amlogic hardware — it can't affect any other codec and can't make a device without a VC-1 decoder any worse — and it isn't Amlogic-specific: any device whose VC-1 decoder registers under the same video/vc1 name benefits too.

Scope: Advanced-Profile VC-1 in supported containers (e.g. MKV) only. Simple/Main-Profile VC-1 (WMV3) and .wmv containers are not covered. The frame-timing repair is specific to the fault seen on the Amlogic decoder's non-tunnelled path; a handful of frames may still drop in the first fraction of a second before it locks on, which isn't perceptible in normal viewing. If you have a VC-1 remux to hand, the stats-overlay "Decoder" row should read a vc1 decoder.

An IMDb trailer source (opt-in)

A new trailer source alongside the existing YouTube trailers. It runs on its own toggle, independent of the existing TMDB → YouTube path, so you can add it without changing how trailers work today.

  • Settings → Layout → "Use IMDb trailers" (in the Detail page section, with the other trailer options) — off by default. Off = unchanged behaviour. On = trailers are sourced from IMDb where available.
  • Plays the same trailer IMDb itself shows on a title's page — the studio's own encode, served as a single ad-free MP4 with no pre-roll and no adaptive stream that starts low and steps up. Where IMDb offers 1080p it's a genuine 1080p encode, not an upscale; older, alternate and TV-series trailers frequently top out at 720p. It falls back to YouTube automatically if IMDb doesn't have a suitable one — a title whose only trailer is below 720p, for example.
  • Once resolved, an IMDb trailer starts fast — under two seconds to first frame on the test box.
  • Works on the Home screen hero and the title detail page.
  • IMDb trailers take a little longer to start than YouTube ones — they're looked up live rather than coming pre-linked. The lookup starts in the background while you're browsing, so lingering on a title for a moment helps. The resolver was sped up considerably during this series (roughly 30 s+ down to ~8 s on a first resolve), and a dead page load is now abandoned after about 7 seconds instead of holding out the full 18-second ceiling so the fallback starts sooner.
  • On a small number of titles the video IMDb features is a short clip or featurette rather than a traditional trailer. That matches what you'd see visiting the title on IMDb directly.

Rating visibility settings (upstream 0.8.7 / 0.8.8)

Two new rows under Settings → Layout:

  • Overall Ratings (Home section) — show or hide the standard and TMDB ratings on cards and the Home hero.
  • Episode Ratings (Detail page section) — Show, Hide for unwatched episodes, or Hide. Per-episode ratings can now also come from the add-on's own metadata.

Both default to Show. When overall ratings are off, the divider that used to sit beside them on Continue Watching goes too.

Supporter perks (upstream 0.8.7)

Upstream's first pass at perks for nuvio.tv supporters is included as-is: member tiers, five supporter-only colour palettes (Gold, Jade, Rose Gold, Arctic Blue, Graphite) with gradient focus rings, member wordmarks, profile backgrounds, and a membership panel on the Supporters screen and About. It's inert without a nuvio.tv membership signed in through the app — with no membership the theme list and everything else look exactly as before, and the default theme is still White.


Improved

Colour themes work again across the app

The app-wide monochrome look had quietly disconnected the Color Theme picker from most of the interface. All seven standard palettes now drive the app again — pick one under Settings → Appearance → Color Theme and it applies everywhere:

  • Home rows and Continue Watching (progress marks, watched badges)
  • Settings — every screen (focus rings, tinted focus fills, the top-bar glide pill, choice-dialog ticks and selections), plus the section cards, which now take a subtle tint from your accent colour (e.g. Emerald gives them a deep-green cast)
  • Sidebar (focus and selected pills)
  • Series detail — season chips, episode focus rings, episode progress and watched badges, and the Play / watched-toggle buttons

The default White theme looks essentially as before, with two small differences that bring it into line with upstream's White look: the settings section cards now render as opaque grey rather than translucent black, and settings focus fills are marginally stronger. The video player UI, dialogs and the shared player-style panels are deliberately left as a clean neutral look regardless of theme.

Steadier streaming from debrid CDNs

Two changes keep high-bitrate playback holding together when the content server misbehaves:

  • Adaptive rate-limit handling. When a CDN starts returning "too many requests" (HTTP 429/503), the app now backs off the way the server asks and probes its download speed back up as soon as it's allowed — instead of the old behaviour of clamping the whole session to a single connection and only recovering after a long quiet period. It honours the server's stated retry delay properly (previously it was capped too short, which against a strict limiter could spin into an endless retry loop), and against repeated limiting it escalates gently rather than hammering. Providers that never rate-limit pay nothing — the entire path stays dormant unless a 429/503 actually arrives.
  • Body-stall hedge. On some CDN tiers a single chunk's download can collapse mid-transfer — the response headers come back fast, then the body trickles for tens of seconds on that one connection. Because the file is read in order, that one stalled chunk drains the buffer and causes a rebuffer even though the other connections are healthy. The app now spots the stalled chunk, abandons it and re-fetches it on a fresh connection — without ever opening more connections than you've configured. It gives up after three restarts and lets the chunk finish slowly rather than failing playback. In the on-device test that motivated it, a chunk had stalled at 32 KB/s and a fresh connection fetched the same 8 MB in about a second. Honest scope: that measurement was of the fresh-connection re-fetch; the automatic restart itself hasn't yet been caught firing on a live stall, because the source behaved on the validation run.

Slow sources no longer drop out of the source list

When you pressed Play quickly, a slow add-on that hadn't finished responding yet (for example AIOStreams, or a multi-hop resolver) could vanish from the source list a moment later. It now stays: the app prepares playback from the sources that arrived in time, and the slower ones fill into the list in the background as they answer.

Instant-play is unaffected — auto-play still fires as fast as before from whatever's ready the moment you press (measured at +149 ms to sources-ready on a fast press), and the late arrivals only populate the manual source list; they don't hold anything up or change what auto-plays. If you back out of the auto-play overlay to pick a source yourself, the full set will be there. Sources that genuinely fail to respond are still marked and cleared as before — only the ones that were merely late are kept.

This applies with Playback → Auto-play → "Ready faster on slow sources" turned on. With it off, behaviour is unchanged.

Home screen scrolling

Three changes aimed at the residual hitch when moving up and down between rows:

  • The rows one screen above and one below the viewport are now composed during idle moments rather than on the frame your D-pad press lands, in both directions of travel.
  • Each poster card no longer allocates its own off-screen render buffer — it never needed one — and the hero backdrop no longer holds two full-screen buffers during a crossfade.
  • Holding a direction key to fast-scroll now ramps up over the first ~130 ms instead of jumping to full speed on the first frame. Single presses and left/right navigation are unchanged.

No layout, colour or focus behaviour changes. These target a hitch that had been measured on earlier builds; no before/after figure was captured for this one, so judge it by feel.

Subtitles (upstream 0.8.6 → 0.8.8)

  • Embedded subtitle styles now render — italics, colour tags and the like in SRT/ASS tracks, with styling preserved when overlapping cues are merged.
  • Corrupted characters are repaired — mojibake from mis-declared encodings is sanitised, and legacy charsets are decoded properly. This applies to every ExoPlayer cue and to add-on subtitles on both engines.
  • Add-on subtitles attach without disturbing playback — on ExoPlayer they take the sidecar hot-attach path (buffer preserved); on MPV they're downloaded, sanitised and cached locally before attach.
  • SDH stripping is hardened and a subtitle response with no body no longer errors.
  • Right-to-left fixes in the Subtitle Delay overlay: sign ordering in the readout, D-pad navigation across Reset / Sync Line / the slider, and the preview lines in the Sync Line dialog are forced left-to-right so they read correctly.

Playback survives Bluetooth audio coming and going (upstream 0.8.7 / 0.8.8)

Connecting or disconnecting a Bluetooth audio device mid-playback no longer rebuilds the player. The audio path is reconfigured in place — passthrough policy, output channels and downmix on ExoPlayer; stereo and audio delay on MPV — and your play/pause state is kept across the change. Route-change handling is debounced to 700 ms so a flapping connection doesn't thrash. Nothing changes on HDMI / eARC chains, where no route change ever fires.

In-player Sources panel (upstream 0.8.8)

The panel's header now carries only Close; Reload has moved to a refresh chip at the head of the add-on chip row, unified with the stream screen. D-pad navigation between the Close button and the chips is wired properly, focus returns to the first result after a reload, add-ons with duplicate names get distinct chips, and the panel lays out correctly in right-to-left locales. The fork's monochrome player panels and row styling are retained underneath.

Add-on and metadata handling (upstream 0.8.8)

  • Deleting an add-on now asks for confirmation.
  • The tv type is canonicalised to series throughout, including on the single-add-on meta path, and the app no longer asks an add-on for a content type it doesn't support.
  • On a cold start the metadata lookup waits up to 750 ms for the installed add-on list to arrive rather than running against an empty one.
  • The TMDB ID cache is keyed by media type, so a movie and a series sharing an ID no longer collide.

These ride on top of the fork's bounded metadata cache, negative-miss cache and 20-second add-on deadlines, which are unchanged.

Image loading (upstream 0.8.6 / 0.8.8)

Artwork now loads through a dedicated HTTP client with up to 16 connections per host (up from 5 on the shared client), short timeouts with one retry, and a raised in-memory cache scaled to the device's RAM class (15 / 20 / 25 %). Up to four images decode in parallel. The fork's own settings — hardware bitmaps, the one-week cache rule for artwork that ships no cache headers, and the free-space-proportional disk cache — are kept.

Background sync does less (upstream 0.8.8)

The two- and four-minute periodic sync pulls are replaced by a single 15-minute pull; pulls triggered by foreground activity are debounced (2.5 s) and rate-limited (once per 2 minutes); add-on, plugin and progress writes are de-duplicated; avatar refreshes are throttled; and the backend's Retry-After is honoured. Fewer redundant requests, same data.

The playback stats overlay

  • The info button now opens it. Pressing the info (ⓘ) button during playback toggles the live stats overlay directly, and the separate chart button has been removed — one fewer icon in the control row.

  • Its network rows are now honest. The overlay's NETWORK group was re-worked so each row measures what its label claims:

    • Rebuffers replaces the old "Stalls" row, which counted only rare renderer freezes and read zero through genuine rebuffering. It now shows the real rebuffer count and total stalled time.
    • Pos. freeze is the old freeze detector, correctly renamed — it catches renderer/clock wedges that aren't network starvation.
    • Speed now tracks the actual bottleneck and drops as a slowdown happens, rather than clinging to a high estimate through a stall.
    • Ping now targets the real serving host (the same one shown on the "Server" row), not the address written in the original stream URL before any CDN redirect.
    • The rate-limit indicator is clearer (labelled Rate limit, showing the back-off while active and a recovery summary afterward), and a new Hedge row appears if the body-stall hedge above ever fires.

    Rows that report a problem stay hidden on a clean stream — so their appearance is itself the signal that something happened.

The app opens a little faster from cold

An under-the-hood packaging change reorders the compiled code inside the APK so the classes needed at launch sit together, which means fewer disk reads while the app is starting. Nothing looks or behaves differently — you should just reach the home screen a touch sooner on a cold start (the first launch after a reboot, or after the app's been cleared from memory). Warm launches, playback and everything else are unchanged, and it applies automatically on install.

Honest scope: this is a real but modest gain, and it currently optimises the shared startup path rather than the fork's own screens.

Smaller improvements

  • Watch Next on the Android TV home screen (upstream 0.8.8) — a Continue Watching card on the launcher's Watch Next row now opens the stream directly instead of landing on the detail page first, and cards for items synced from a tracking service show progress even when only a percentage is known.
  • Library (upstream 0.8.7) — the type filter you chose is remembered, and the tab order no longer shuffles.
  • Trailer audio language (upstream 0.8.8) — the trailer's default audio track is ranked properly, fixing previews that played in the wrong language. TMDB trailer candidates now also rank by your TMDB language setting.
  • Translated genres (upstream 0.8.8) — genre labels are translated in the detail, stream and expanded-card views, including Trakt's genre labels.
  • Plugin search in the player (upstream 0.8.6) — paused and resumed with the player's stream lifecycle.
  • Simkl (upstream 0.8.8) — anime movies are handled correctly.
  • Localisation — Albanian added; Arabic, Latin American Spanish, Hebrew, Hungarian, Polish, Portuguese (Brazil), Turkish and Vietnamese updated.

Changed

Home row headings

Catalogue row headings changed from the small uppercase letterspaced label to a plain, larger title, matching the standard heading style used elsewhere (and upstream's current look).

TMDB rating on the detail page hides whenever MDBList is active (upstream 0.8.7)

Previously the TMDB rating on the detail hero showed if MDBList had returned nothing for that title. It now hides whenever MDBList ratings are active at all, and whenever Overall Ratings is off. Upstream's semantic change, taken as-is.

Chunk size capped at 16 MB on low-memory devices (upstream 0.8.8)

On devices where the app's heap limit is below 512 MB, the parallel-download chunk-size picker now stops at 16 MB. The 32 MB cap from the last release still applies everywhere else. This is the fork's own change returning from upstream, and it is strictly more conservative.

Housekeeping

A debug-only test activity used during the IMDb trailer investigation had been left registered in the app manifest through the nt2–nt20 builds. It was never reachable from the UI; it has been removed.


Fixed

Trailer playback on the detail page and Home hero

Three visual bugs in trailer playback, present in official Nuvio as well as this fork — not new, but fixed here:

  • Detail page: the episode list and cast row no longer sit on top of a playing trailer, blocking the view. They fade out while the trailer plays and fade back in afterwards.
  • Home hero: the trailer that autoplays on the Home screen was noticeably softer and less vivid than the same trailer played from a title's detail page — it was being pushed through an extra overscan upscale, crop-filled, and played under the hero's scrim and logo. All three are gone: the extra upscale pass is removed, the trailer is fitted rather than crop-filled, and the scrim and logo fade out while it plays. Home hero trailers now look as sharp and rich as the detail page.
  • Minor: on titles with a non-16:9 trailer, the Home hero may now show slight letterboxing rather than cropping to fill — a trade for the sharper picture.

The Dolby Vision line in the stats overlay fits one row

On titles with high (four-digit) MaxCLL, MaxFALL or peak values, the Dolby Vision HDR line was spilling onto a second row. It now stays on a single line — e.g. MaxCLL 4000 · MaxFALL 1716 · MDL ~4000 nits. Same figures; the ~ on the peak is kept, since that value is derived rather than measured. (A rare five-digit, 10,000-nit master can still wrap.)

The title no longer overlaps the controls on smaller screens

When you open the stats overlay, the title/logo now fades out as the control buttons slide across, so they no longer collide. This showed up on lower-density screens (some Fire TV sticks, for example) where the controls slide further relative to the screen; it's now clear at every screen size, for both artwork-logo and plain-text titles, and the title fades back in when you close the overlay.

Home synopsis shows four lines at default scale

The featured title's description on the Home screen now shows four lines at 100% interface scale (previously three). Smaller scales are unchanged, and larger scales still condense the text to fit.

Smaller fixes (upstream 0.8.6 → 0.8.8)

  • Next Up no longer offers episodes that aren't available when "Show unaired next up episodes" is off.
  • An external player's "Start From Beginning" is honoured.
  • Upcoming-episodes rows no longer get stuck, and focus on the TMDB browse screen behaves.
  • Genre metadata no longer overflows the detail layout.
  • Right-to-left layouts: general UI fixes, focus landing on the first episode rather than the last, and the add-on URL field is forced left-to-right.
  • The pause overlay no longer appears while the subtitle-delay overlay is open; "Persist between sessions" is reachable by D-pad up; pressing left from Search reaches the sidebar; the Indonesian language code is no longer labelled as Malay; the loading overlay's backdrop is aligned consistently with the stream screen; unwatched episode thumbnails blur consistently.
  • Profile backgrounds no longer band (16-bit decode disabled for them).

Not included from upstream

For the record, these upstream changes are deliberately not in this build:

  • Stale-while-revalidate poster caching (0.8.7). As read, the background revalidation discards the fresh image it downloads and the visible card reloads the stale copy anyway, then re-fetches every ten minutes while visible. The fork keeps its existing conditional-GET path. Will be adopted if upstream closes that gap.
  • The redesigned full-screen episode options overlay and its episode-still backdrop (0.8.7 / 0.8.8). The fork keeps its own episode long-press dialog; the watched-marker styling and the marquee pause from upstream's version were taken.
  • The reuse-last-link "wrong episode key" reorder (0.8.8). Tracing the code, the previous ordering already stored the link under the episode being switched to; the reorder would store it under the episode you were leaving. Kept the previous order — if reuse-last-link ever misbehaves on an episode switch, this is the first place to look, and it's a one-line change either way.
  • Three upstream changes to the parallel download path (prefetch hold, playhead-window pinning, next-chunk pipelining). This fork's version of that code is heavily tuned and measured; they'll be ported in a dedicated measured session rather than merged blind.
  • Classic home layout improvements (immersive backdrop, row jank, focus restore, colour space) don't apply — this fork is Modern-layout only. The AnimeSkip settings screen, Play Store flavour and Sentry remain removed.
  • Two 0.8.8 items are this fork's own earlier contributions (non-faststart MP4 playback, full-resolution trailers) and were already in the last release.

Install

Sideload via ADB or a file manager. This is a personal test build with the application ID com.nuvio.tv.test, so it installs alongside official NuvioTV rather than replacing it.


Licence and attribution

GPL v3.0. All upstream copyright headers, licence text and developer attributions are preserved; no licence text was removed.

Don't miss a new NuvioTV-Fork release

NewReleases is sending notifications on new releases.