From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 71812] VDPAU: MPEG-4 ASP Garbling/Corruption Date: Mon, 21 Jul 2014 18:58:26 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1017352355==" Return-path: Received: from culpepper.freedesktop.org (unknown [131.252.210.165]) by gabe.freedesktop.org (Postfix) with ESMTP id 5AF1E6E449 for ; Mon, 21 Jul 2014 11:58:26 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============1017352355== Content-Type: multipart/alternative; boundary="1405969106.a3Ed1.28040"; charset="us-ascii" --1405969106.a3Ed1.28040 Date: Mon, 21 Jul 2014 18:58:26 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable https://bugs.freedesktop.org/show_bug.cgi?id=3D71812 --- Comment #13 from Fabrice Bellet --- About this specific bug this time :) I see a deterministic corruption in your sample too, that seems related to = the presence of sprite frames in the stream, and the result looks like these S frames are just ignored by the hardware decoder (they are correctly passed = to the mesa level).=20 For example, an effect of the corruption is the "C" of Captain, that is war= ped into something that looks like the euro symbol (=E2=82=AC), around 22.5s. I= s it similar to what you observe ? I can provide screenshot if needed. I tried with VDPAU on radeonsi/uvd, with nouveau, and also with the proprie= tary nvidia VDPAU implementation. _All_ implementations have this problem. The radeon and the nvidia driver just silently drop S frames, and the following non-S frames are corrupted. The nouveau driver replaces S frame by something that looks like the rendering of an unintialized vmem buffer. Also, I can reproduce the _same_ corruption with the ffmpeg software mpeg4 decoder, just by disabling the S-frames handling with this patch: diff -uNrp ffmpeg-2.1.5.orig/libavcodec/mpeg4videodec.c ffmpeg-2.1.5/libavcodec/mpeg4videodec.c --- ffmpeg-2.1.5.orig/libavcodec/mpeg4videodec.c 2014-07-21 20:43:58.550548835 +0200 +++ ffmpeg-2.1.5/libavcodec/mpeg4videodec.c 2014-07-21 20:43:11.632103072 +0200 @@ -2105,6 +2105,8 @@ static int decode_vop_header(MpegEncCont } if(s->pict_type =3D=3D AV_PICTURE_TYPE_S && (s->vol_sprite_usage=3D=3DSTATIC_SPRITE || s->vol_sprite_usage=3D=3DGMC_SPR= ITE)){ + printf("S frame\n"); + return AVERROR_INVALIDDATA; if (mpeg4_decode_sprite_trajectory(s, gb) < 0) return AVERROR_INVALIDDATA; if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERROR, "sprite_brightness_change not supported\n"); Are sprite frames supposed to be decoded by the hardware ? The radeon driver has a sprite-related section in its ruvd_mpeg4 struct definition in mesa/src/gallium/drivers/radeon/radeon_uvd.h. --=20 You are receiving this mail because: You are the assignee for the bug. --1405969106.a3Ed1.28040 Date: Mon, 21 Jul 2014 18:58:26 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Commen= t # 13 on bug 71812<= /a> from Fabrice Bellet
About this specific bug this time :)

I see a deterministic corruption in your sample too, that seems related to =
the
presence of sprite frames in the stream, and the result looks like these S
frames are just ignored by the hardware decoder (they are correctly passed =
to
the mesa level).=20

For example, an effect of the corruption is the "C" of Captain, t=
hat is warped
into something that looks like the euro symbol (=E2=82=AC), around 22.5s. I=
s it similar
to what you observe ? I can provide screenshot if needed.

I tried with VDPAU on radeonsi/uvd, with nouveau, and also with the proprie=
tary
nvidia VDPAU implementation. _All_ implementations have this problem. The
radeon and the nvidia driver just silently drop S frames, and the following
non-S frames are corrupted. The nouveau driver replaces S frame by something
that looks like the rendering of an unintialized vmem buffer.

Also, I can reproduce the _same_ corruption with the ffmpeg software mpeg4
decoder, just by disabling the S-frames handling with this patch:

diff -uNrp ffmpeg-2.1.5.orig/libavcodec/mpeg4videodec.c
ffmpeg-2.1.5/libavcodec/mpeg4videodec.c
--- ffmpeg-2.1.5.orig/libavcodec/mpeg4videodec.c    2014-07-21
20:43:58.550548835 +0200
+++ ffmpeg-2.1.5/libavcodec/mpeg4videodec.c    2014-07-21 20:43:11.632103072
+0200
@@ -2105,6 +2105,8 @@ static int decode_vop_header(MpegEncC=
ont
      }

      if(s->pict_type =3D=3D AV_PICTURE_TYPE_S &&
(s->vol_sprite_usage=3D=3DSTATIC_SPRITE || s->vol_sprite_usage=3D=3DG=
MC_SPRITE)){
+         printf("S frame\n");
+         return AVERROR_INVALIDDATA;
          if (mpeg4_decode_sprite_trajectory(s, gb) < 0)
              return AVERROR_INVALIDDATA;
          if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERR=
OR,
"sprite_brightness_change not supported\n");

Are sprite frames supposed to be decoded by the hardware ? The radeon driver
has a sprite-related section in its ruvd_mpeg4 struct definition in
mesa/src/gallium/drivers/radeon/radeon_uvd.h.


You are receiving this mail because: =20=20=20=20=20=20
  • You are the assignee for the bug.
--1405969106.a3Ed1.28040-- --===============1017352355== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel --===============1017352355==--