gshORTON / webm

Automatically exported from code.google.com/p/webm
0 stars 0 forks source link

Playback corruption of VP9 content with AVX2 #867

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Unless libvpx is compiled with --disable-avx2, playback of any VP9 content gets 
corrupted with green bars "smeared" according to video movement.

Screenshot of random downloaded VP9 YouTube video attached, played with "vpxdec 
Die_Dubstep_Zaubertaube_hd1080.webm - | mpv -". Same if Chromium is compiled to 
use the system's libvpx.

No issues with playback of VP8 content (tested "vpxdec big_buck_bunny_480p.webm 
- | mpv -").

Arch Linux x64
Haswell 4770
libvpx-git (e9f90513)
gcc 4.9.1 (snapshot 20140903)
yasm 1.3.0

Original issue reported on code.google.com by andreas....@gmail.com on 2 Oct 2014 at 1:31

Attachments:

GoogleCodeExporter commented 9 years ago

Original comment by ya...@google.com on 3 Oct 2014 at 3:26

GoogleCodeExporter commented 9 years ago
Thank you for reporting this bug. It really looks bad. Have you seen the 
problem with most video clips or only this one? Could you attach the webm file?

Original comment by yunqingw...@google.com on 3 Oct 2014 at 3:55

GoogleCodeExporter commented 9 years ago
I see it with every single VP9 video on YouTube (my only source of VP9 
videos…). The issue occurs both on my desktop (Haswell 4770) and laptop 
(Haswell 4200U), which have pretty much exactly the same software configuration 
(also, neither has a dedicated GPU).

Unsurprisingly, YT videos that don't have vp9 listed as Mime Type in the "Stats 
for nerds" context menu play fine regardless of libvpx being compiled with or 
without AVX2.

The screenshot is from this video: https://www.youtube.com/watch?v=ArZEDC3fTOI

I used Firefox's FlashGot to download the hd1080.webm version of it.

Original comment by andreas....@gmail.com on 3 Oct 2014 at 4:41

Attachments:

GoogleCodeExporter commented 9 years ago
I built libvpx with avx2 enabled from libvpx-git (e9f90513).

64-bit Windows laptop (i5-4350U)
Visual studio

Decoded the attached webm file to y4m file, and played it. But, no visual 
artifact was seen. The md5 matched the one with avx2 disabled.

Original comment by yunqingw...@google.com on 8 Oct 2014 at 11:45

GoogleCodeExporter commented 9 years ago
Can you provide the git# for which you were able to see the issue? 
Thanks,

Original comment by ya...@google.com on 9 Oct 2014 at 4:35

GoogleCodeExporter commented 9 years ago
It looks like it's in the original post:
libvpx-git (e9f90513)

Original comment by jz...@google.com on 9 Oct 2014 at 7:19

GoogleCodeExporter commented 9 years ago
I just found the commit that introduced the corruption (assuming that this 
isn't actually a yasm/gcc bug):

Author: Tamar Levy <tamar.levy@intel.com>  2013-10-30 16:04:31
mb_lpf_horizontal_edge AVX2 optimization
Git#: 54f9205653491d5087f63bd15ee05cd1e4ff0d73

Attached is the diff used to revert / disable the particular optimization. With 
it the videos play fine.

Original comment by andreas....@gmail.com on 9 Oct 2014 at 7:56

Attachments:

GoogleCodeExporter commented 9 years ago
Hi Yunqing,

I didnt see the artifact either but I see that the md5 are different when the 
gcc version is 4.9.1 
So in gcc 4.8 there isn't any change between avx2 disabled and not disabled.
I will check what is the cause.

Thanks,
Tamar

Original comment by levytama...@gmail.com on 9 Oct 2014 at 8:28

GoogleCodeExporter commented 9 years ago
Tamar, you can do this. Build libvpx using gcc 4.9.1 and avx2 enabled, decode 
the webm file and save the result to a file(.y4m file). Play the y4m file, and 
look for the artifacts.

Original comment by yunqingw...@google.com on 9 Oct 2014 at 9:56

GoogleCodeExporter commented 9 years ago
Tamar, any update? I'm considering turning avx2 on again in Chromium, but need 
for this to be fixed or worked around.

Original comment by johannkoenig@google.com on 27 Oct 2014 at 5:17

GoogleCodeExporter commented 9 years ago

Original comment by johannko...@chromium.org on 27 Oct 2014 at 5:19

GoogleCodeExporter commented 9 years ago
Hi Johann,

I fixed the problem.
Someone need to merge it to the repository:
https://gerrit.chromium.org/gerrit/#/c/71929/

Thanks,
Tamar

Original comment by levytama...@gmail.com on 27 Oct 2014 at 5:28

GoogleCodeExporter commented 9 years ago
Andreas: the workaround is merged. Does it fix the issue for you?

Original comment by johannkoenig@google.com on 6 Nov 2014 at 12:54

GoogleCodeExporter commented 9 years ago
No more corruption with vpxdec, looks good. Did switch to gcc 4.9.2 in the 
meantime, though.

Original comment by andreas....@gmail.com on 6 Nov 2014 at 4:14