summaryrefslogtreecommitdiff
path: root/community/xvba-video-open/xvba-video-h264-level51.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/xvba-video-open/xvba-video-h264-level51.patch')
-rw-r--r--community/xvba-video-open/xvba-video-h264-level51.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/community/xvba-video-open/xvba-video-h264-level51.patch b/community/xvba-video-open/xvba-video-h264-level51.patch
new file mode 100644
index 000000000..a617a90ab
--- /dev/null
+++ b/community/xvba-video-open/xvba-video-h264-level51.patch
@@ -0,0 +1,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;