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==--