diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2013-07-08 18:44:24 +0200 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2013-07-09 12:15:07 +0200 |
commit | ac9c1ae5a8ff77c3455832ae726fa6a7f7891a4d (patch) | |
tree | a620522d85281a235dd432f6cdd8bcc9a2482f85 /gst-libs/gst/codecparsers/gsth264parser.c | |
parent | 529ece338fcefd8291e09d6d3fe66357df13078f (diff) | |
download | gstreamer-plugins-bad-ac9c1ae5a8ff77c3455832ae726fa6a7f7891a4d.tar.gz |
codecparsers: h264: fix calculation of the frame cropping rectangle.
Fix calculation of the frame cropping rectangle, and more precisely
the actual cropped height. The frame_crop_top_offset subtraction
was not scaled up with SubHeightC.
Also clean-up variables to align more with (7-18) to (7-21).
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Diffstat (limited to 'gst-libs/gst/codecparsers/gsth264parser.c')
-rw-r--r-- | gst-libs/gst/codecparsers/gsth264parser.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c index eb754b5d8..7c9148eb7 100644 --- a/gst-libs/gst/codecparsers/gsth264parser.c +++ b/gst-libs/gst/codecparsers/gsth264parser.c @@ -1565,18 +1565,19 @@ gst_h264_parse_sps (GstH264NalUnit * nalu, GstH264SPS * sps, sps->height = height; if (sps->frame_cropping_flag) { + const guint crop_unit_x = subwc[sps->chroma_format_idc]; + const guint crop_unit_y = + subhc[sps->chroma_format_idc] * (2 - sps->frame_mbs_only_flag); + width -= (sps->frame_crop_left_offset + sps->frame_crop_right_offset) - * subwc[sps->chroma_format_idc]; - height -= (sps->frame_crop_top_offset + sps->frame_crop_bottom_offset - * subhc[sps->chroma_format_idc] * (2 - sps->frame_mbs_only_flag)); + * crop_unit_x; + height -= (sps->frame_crop_top_offset + sps->frame_crop_bottom_offset) + * crop_unit_y; sps->crop_rect_width = width; sps->crop_rect_height = height; - sps->crop_rect_x = - sps->frame_crop_left_offset * subwc[sps->chroma_format_idc]; - sps->crop_rect_y = - sps->frame_crop_top_offset * subhc[sps->chroma_format_idc] * (2 - - sps->frame_mbs_only_flag); + sps->crop_rect_x = sps->frame_crop_left_offset * crop_unit_x; + sps->crop_rect_y = sps->frame_crop_top_offset * crop_unit_y; GST_LOG ("crop_rectangle x=%u y=%u width=%u, height=%u", sps->crop_rect_x, sps->crop_rect_y, width, height); |