r600 vdpau h.264 truncated/corrupt keyframes

Andrew Tonner <[email protected]>
Newsgroups gmane.comp.video.mesa3d.user
Message-ID <CAH7kSrrqdA9HrcCrtsU3m6tHom5gJ9dgEPwyk8winKhFtGdMWA@mail.gmail.com>
I'm running into an issue playing back H.264 video on my laptop with
Mobility Radeon HD 3650 (rv635) using vdpau through mpv or vlc. I'm using
debian 9 (stretch)'s included mesa 13.0.6.

The problem:

Usually I get this: The first row of macroblocks in the keyframe is fine,
and the rest is a green mess -- like the keyframe is getting
truncated/corrupted.

Sometimes I get normal video playback.  I can't tell what factor causes the
difference.

It seems like the same r600 issue reported here, based on the description
and the example garbled output:
https://bugs.freedesktop.org/show_bug.cgi?id=73457

I'm not sure how to proceed. Should I try building a different version of
mesa from source? Is there some logging I can turn on and investigate? Is
there more info I should collect?  Is there a spec for r600/uvd I can
compare against the code to look for problems?  Should I try to find
another rv635 somewhere to confirm this isn't a hardware problem?

My further investigations so far:

The problem is inconsistent from login session to login session, after a
certain amount of activity in a login session the problem sometimes goes
away, but a simple logout/login makes the problem reappear again.

Testing with Twitch streams via libmpv in Orion
https://github.com/alamminsalo/orion (/plug ;), to easily get a number of
different resolutions of h.264 stream, I found that in a given login
session, the problem affects all the resolutions from a given resolution
down, sometimes all the way from the source stream, and sometimes not.

Based on the discussion of dpb_size on that bug 73457, I rebuilt mesa from
the source package and then added output with of the selected dpb_size and
a hack to override it from an env var. Using a higher dpb_size sometimes
makes the problem go away. Bisecting dpb_size values, I have found that in
some login sessions there is a consistent boundary down to the byte between
an increased dpb_size that gives working video playback and the one lower
dpb_size that gives the green mess; however in other login sessions the
behaviour for given dpb_size values is not consistent so there is no
bisectable boundary, and even when there is a consistent boundary in a
given session it isn't consistent with other login sessions.  This seems
like a bit of a red herring in that maybe the dpb_size is actually fine in
the absence of whatever the underlying fault is (maybe a missing
initialisation somewhere?)

-AT

_______________________________________________
mesa-users mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.