[Libva] [libva][libva-intel-driver PATCH] VC1: No overlap smoothing if the overlap flag is 0

Xiang, Haihao haihao.xiang at intel.com
Mon Feb 2 00:16:56 PST 2015


Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
 src/gen6_mfd.c  | 42 +++++++++++++++++++++++-------------------
 src/gen75_mfd.c | 42 +++++++++++++++++++++++-------------------
 src/gen7_mfd.c  | 42 +++++++++++++++++++++++-------------------
 src/gen8_mfd.c  | 42 +++++++++++++++++++++++-------------------
 4 files changed, 92 insertions(+), 76 deletions(-)

diff --git a/src/gen6_mfd.c b/src/gen6_mfd.c
index ea13e4f..95a8e92 100755
--- a/src/gen6_mfd.c
+++ b/src/gen6_mfd.c
@@ -1469,25 +1469,29 @@ gen6_mfd_vc1_pic_state(VADriverContextP ctx,
             brfd = 0;
     }
 
-    overlap = 0;
-    if (profile != GEN6_VC1_ADVANCED_PROFILE){
-        if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
-            pic_param->picture_fields.bits.picture_type != GEN6_VC1_B_PICTURE) {
-            overlap = 1; 
-        }
-    }else {
-        if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_P_PICTURE &&
-             pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-              overlap = 1; 
-        }
-        if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_I_PICTURE ||
-            pic_param->picture_fields.bits.picture_type == GEN6_VC1_BI_PICTURE){
-             if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-                overlap = 1; 
-             } else if (va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
-                        va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
-                 overlap = 1;
-             }
+    overlap = pic_param->sequence_fields.bits.overlap;
+
+    if (overlap) {
+        overlap = 0;
+        if (profile != GEN6_VC1_ADVANCED_PROFILE){
+            if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
+                pic_param->picture_fields.bits.picture_type != GEN6_VC1_B_PICTURE) {
+                overlap = 1;
+            }
+        }else {
+            if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_P_PICTURE &&
+                pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                overlap = 1;
+            }
+            if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_I_PICTURE ||
+                pic_param->picture_fields.bits.picture_type == GEN6_VC1_BI_PICTURE){
+                if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                    overlap = 1;
+                } else if (va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
+                           va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
+                    overlap = 1;
+                }
+            }
         }
     } 
 
diff --git a/src/gen75_mfd.c b/src/gen75_mfd.c
index 1847d2c..971dcb0 100644
--- a/src/gen75_mfd.c
+++ b/src/gen75_mfd.c
@@ -1799,25 +1799,29 @@ gen75_mfd_vc1_pic_state(VADriverContextP ctx,
             brfd = 0;
     }
 
-    overlap = 0;
-    if (profile != GEN7_VC1_ADVANCED_PROFILE){
-        if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
-            pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
-            overlap = 1; 
-        }
-    }else {
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
-             pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-              overlap = 1; 
-        }
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
-            pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
-             if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-                overlap = 1; 
-             } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
-                        va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
-                 overlap = 1;
-             }
+    overlap = pic_param->sequence_fields.bits.overlap;
+
+    if (overlap) {
+        overlap = 0;
+        if (profile != GEN7_VC1_ADVANCED_PROFILE){
+            if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
+                pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
+                overlap = 1;
+            }
+        }else {
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
+                pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                overlap = 1;
+            }
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
+                pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
+                if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                    overlap = 1;
+                } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
+                           va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
+                    overlap = 1;
+                }
+            }
         }
     } 
 
diff --git a/src/gen7_mfd.c b/src/gen7_mfd.c
index 376eeb6..d166052 100755
--- a/src/gen7_mfd.c
+++ b/src/gen7_mfd.c
@@ -1526,25 +1526,29 @@ gen7_mfd_vc1_pic_state(VADriverContextP ctx,
             brfd = 0;
     }
 
-    overlap = 0;
-    if (profile != GEN7_VC1_ADVANCED_PROFILE){
-        if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
-            pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
-            overlap = 1; 
-        }
-    }else {
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
-             pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-              overlap = 1; 
-        }
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
-            pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
-             if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-                overlap = 1; 
-             } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
-                        va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
-                 overlap = 1;
-             }
+    overlap = pic_param->sequence_fields.bits.overlap;
+
+    if (overlap) {
+        overlap = 0;
+        if (profile != GEN7_VC1_ADVANCED_PROFILE) {
+            if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
+                pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
+                overlap = 1;
+            }
+        }else {
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
+                pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                overlap = 1;
+            }
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
+                pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
+                if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                    overlap = 1;
+                } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
+                           va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
+                    overlap = 1;
+                }
+            }
         }
     } 
 
diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c
index a5cedd6..398dd33 100644
--- a/src/gen8_mfd.c
+++ b/src/gen8_mfd.c
@@ -1562,25 +1562,29 @@ gen8_mfd_vc1_pic_state(VADriverContextP ctx,
             brfd = 0;
     }
 
-    overlap = 0;
-    if (profile != GEN7_VC1_ADVANCED_PROFILE){
-        if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
-            pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
-            overlap = 1; 
-        }
-    }else {
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
-             pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-              overlap = 1; 
-        }
-        if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
-            pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
-             if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
-                overlap = 1; 
-             } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
-                        va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
-                 overlap = 1;
-             }
+    overlap = pic_param->sequence_fields.bits.overlap;
+
+    if (overlap) {
+        overlap = 0;
+        if (profile != GEN7_VC1_ADVANCED_PROFILE){
+            if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
+                pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
+                overlap = 1;
+            }
+        }else {
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
+                pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                overlap = 1;
+            }
+            if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
+                pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
+                if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
+                    overlap = 1;
+                } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
+                           va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
+                    overlap = 1;
+                }
+            }
         }
     } 
 
-- 
1.9.1



More information about the Libva mailing list