Fix a vc1 parser issue on ttmbf
Tim-Philipp Müller
t.i.m at zen.co.uk
Thu Sep 20 02:41:14 PDT 2012
On Thu, 2012-09-20 at 07:59 +0000, Zhao, Halley wrote:
> See bugzilla here: https://bugzilla.gnome.org/show_bug.cgi?id=684341
Thanks, people get bugmail and will look at it when they get around to
it. No need to re-post it here :)
Cheers
- Tim
>
>
>
>
> Patch:
>
>
>
> From 89c2e93aaef107f503d40d2b545288f6cbebc9ff Mon Sep 17 00:00:00 2001
>
> From: Zhao Halley <halley.zhao at intel.com>
>
> Date: Wed, 19 Sep 2012 09:24:58 +0800
>
> Subject: [PATCH] codecparsers: vc1: fix ttmbf when vstransform is not
> set
>
>
>
> spec 8.3.6.2.1 Transform Type Selection
>
> If variable-sized transform coding is not enabled,
>
> then the 8x8 transform shall be used for all blocks.
>
>
>
> I have to say the above spec isn't expressed clearly:
>
> ttfrm is mentioned clearly, but not ttmbf.
>
> anyway, since ttfrm is only specified when ttmbs is set,
>
> we can deduce that ttmbf should set to 1.
>
> it is also consistent with ffmpeg vc1 decoder and
>
> hw behaviour (Intel GEN gfx)
>
>
>
> https://bugzilla.gnome.org/show_bug.cgi?id=684341
>
> ---
>
> gst-libs/gst/codecparsers/gstvc1parser.c | 16 ++++++++++++++++
>
> 1 file changed, 16 insertions(+)
>
> mode change 100644 => 100755 gst-libs/gst/codecparsers/gstvc1parser.c
>
>
>
> diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c
> b/gst-libs/gst/codecparsers/gstvc1parser.c
>
> old mode 100644
>
> new mode 100755
>
> index bc94823..aa8cb4a
>
> --- a/gst-libs/gst/codecparsers/gstvc1parser.c
>
> +++ b/gst-libs/gst/codecparsers/gstvc1parser.c
>
> @@ -1166,6 +1166,10 @@ parse_frame_header_advanced (GstBitReader * br,
> GstVC1FrameHdr * framehdr,
>
> READ_UINT8 (br, pic->ttfrm, 2);
>
> }
>
> }
>
> + else { // 8.3.6.2.1
>
> + pic->ttmbf = 1;
>
> + pic->ttfrm = 0;
>
> + }
>
> framehdr->transacfrm = get_unary (br, 0, 2);
>
> READ_UINT8 (br, framehdr->transdctab, 1);
>
> @@ -1278,6 +1282,10 @@ parse_frame_header_advanced (GstBitReader * br,
> GstVC1FrameHdr * framehdr,
>
> READ_UINT8 (br, pic->ttfrm, 2);
>
> }
>
> }
>
> + else { // 8.3.6.2.1
>
> + pic->ttmbf = 1;
>
> + pic->ttfrm = 0;
>
> + }
>
> framehdr->transacfrm = get_unary (br, 0, 2);
>
> READ_UINT8 (br, framehdr->transdctab, 1);
>
> @@ -1462,6 +1470,10 @@ parse_frame_header (GstBitReader * br,
> GstVC1FrameHdr * framehdr,
>
> GST_DEBUG ("ttfrm %u", pic->ttfrm);
>
> }
>
> }
>
> + else { // 8.3.6.2.1
>
> + pic->ttmbf = 1;
>
> + pic->ttfrm = 0;
>
> + }
>
> framehdr->transacfrm = get_unary (br, 0, 2);
>
> READ_UINT8 (br, framehdr->transdctab, 1);
>
> @@ -1494,6 +1506,10 @@ parse_frame_header (GstBitReader * br,
> GstVC1FrameHdr * framehdr,
>
> READ_UINT8 (br, pic->ttfrm, 2);
>
> }
>
> }
>
> + else { // 8.3.6.2.1
>
> + pic->ttmbf = 1;
>
> + pic->ttfrm = 0;
>
> + }
>
> framehdr->transacfrm = get_unary (br, 0, 2);
>
> READ_UINT8 (br, framehdr->transdctab, 1);
>
> --
>
> 1.7.9.5
>
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list