Fix a vc1 parser issue on ttmbf

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Fix a vc1 parser issue on ttmbf

Zhao, Halley

See bugzilla here: https://bugzilla.gnome.org/show_bug.cgi?id=684341

 

 

Patch:

 

From 89c2e93aaef107f503d40d2b545288f6cbebc9ff Mon Sep 17 00:00:00 2001

From: Zhao Halley <[hidden email]>

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
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Fix a vc1 parser issue on ttmbf

Tim-Philipp Müller-2
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 <[hidden email]>
>
> 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
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel