From 6ee08d6a9217906f2ef84f70923d3d362d4b40ad Mon Sep 17 00:00:00 2001 From: root Date: Sun, 10 Mar 2013 00:51:34 -0800 Subject: Sun Mar 10 00:50:57 PST 2013 --- .../xvba-video-open/xvba-video-h264-level51.patch | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 community/xvba-video-open/xvba-video-h264-level51.patch (limited to 'community/xvba-video-open/xvba-video-h264-level51.patch') 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; -- cgit v1.2.3-54-g00ecf