Skip to content

VC-1 software decoder fails with "Picture size 0x0 is invalid" on some post-seek landings, dropping frames #490

Description

@classicjazz

What happened?

After a subset of programmatic seeks, a freshly-opened VC-1 decoder context logs a hard decode error instead of the routine "first frame is no keyframe" warning that every other seek produces:

[vc1 @ 0x...] [IMGUTILS @ 0x...] [error] Picture size 0x0 is invalid
[vc1 @ 0x...] [error] Failed to set dimensions 0 0

Each occurrence coincides with a layerDrop jump in the next diagnostic sample (frames are lost, not just delayed). Observed 4 times across 3 sessions: once on progressive 23.976fps content (FileD, after seek to 1237.56s) and 3 times on interlaced 29.97i content (FileF, after seeks to 2125.91s and 1973.56s across two separate sessions of the same episode). It is not specific to the deinterlace path, but occurs more often on interlaced content in this sample.

Steps to reproduce

  1. Open a VC-1 (software path) file — reproduces on both a progressive file (FileD) and an interlaced file (FileF).
  2. Perform several programmatic seeks to arbitrary timestamps in succession.
  3. Watch for [IMGUTILS] Picture size 0x0 is invalid in the log — it doesn't fire on every seek, only some.

AetherEngine version or commit SHA

6.68.0

Host app

AetherPlayer

Platform

macOS

OS version

macOS 27

Device / chip

Mac M1 Studio Max

Playback path

Software (dav1d) host

Source media (for playback bugs)

No response

Error codes / log lines


Anything else

This looks like a more severe version of the same landing condition that produces the ubiquitous "first frame is no keyframe" warning (seeking mid-GOP, before a full reference chain is available) — but here the decoder fails hard enough to report zero dimensions for that frame instead of just warning and continuing. Sample diagnostic context (FileF, second occurrence):

18:05:40.325Z  [vc1 @ 0x7ca2661880] [IMGUTILS @ 0x16dd0db68] [error] Picture size 0x0 is invalid
18:05:40.325Z  [vc1 @ 0x7ca2661880] [error] Failed to set dimensions 0 0

No corresponding corrupt counter increment and no crash — the frame is simply dropped and playback continues. Given it reproduces on both a progressive and an interlaced file, this is likely a general VC-1 reference-picture-buffer edge case on seek landing rather than something deinterlace-specific, but the sample size on interlaced content (3 of 4 occurrences) suggests it's more easily triggered there — possibly because interlaced GOPs land the software decoder on a bad reference frame more often.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions