summaryrefslogtreecommitdiff
path: root/community/xvba-video-open/xvba-video-h264-level51.patch
blob: a617a90aba1775148b487e86761b5bd93a39e622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff -rup xvba-video.orig/src/xvba_buffer.c xvba-video/src/xvba_buffer.c
--- xvba-video.orig/src/xvba_buffer.c	2011-09-08 03:17:28.000000000 +0200
+++ xvba-video/src/xvba_buffer.c	2012-07-03 21:38:04.851465348 +0200
@@ -368,23 +368,18 @@ translate_VAPictureParameterBufferH264(
         obj_context->picture_height
     );
 
-    /* Check for H.264 content over HP@L4.1 */
+    /* Check for wrongly coded H264 Level 41
+       adjust profile to Level 51 when reframes are too many
+    */
     unsigned int num_ref_frames = pic_param->num_ref_frames;
-    if (profile == XVBA_H264_HIGH && level > 41) {
-        if (!driver_data->warn_h264_over_hp_l41) {
-            driver_data->warn_h264_over_hp_l41 = 1;
-            xvba_information_message(
-                "driver does not support H.264 content over HP@L4.1. "
-                "Please upgrade.\n"
-            );
-        }
+    if (profile == XVBA_H264_HIGH && level == 41) {
 
-        /* Use fail-safe values (lower ref frames) */
+        /* Increase Level to decode pseudo Level 41 as Level 51 */
         const unsigned int mbw = pic_param->picture_width_in_mbs_minus1 + 1;
         const unsigned int mbh = (obj_context->picture_height + 15) / 16;
         const unsigned int max_ref_frames = 12288 * 1024 / (mbw * mbh * 384);
         if (max_ref_frames < num_ref_frames)
-            num_ref_frames = max_ref_frames;
+            level = 51;
     }
 
     XVBABufferDescriptor * const xvba_buffer = obj_surface->pic_desc_buffer;