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