summaryrefslogtreecommitdiffstats
path: root/libavcodec/hevc_ps.c
diff options
context:
space:
mode:
authorZhao Zhili <quinkblack@foxmail.com>2018-08-22 17:37:15 +0800
committerJames Almer <jamrial@gmail.com>2018-08-22 14:01:12 -0300
commit70d2bab80b38adf6d9a1430992c33dd2e3efa93f (patch)
tree9f178d3f468d6c326cd1a9d7a8da9b24520f6ec2 /libavcodec/hevc_ps.c
parent5ecd580953bbed48e144c364d3cdf7ea1f3e7ddf (diff)
downloadffmpeg-streaming-70d2bab80b38adf6d9a1430992c33dd2e3efa93f.zip
ffmpeg-streaming-70d2bab80b38adf6d9a1430992c33dd2e3efa93f.tar.gz
lavc/hevc_ps: fix crop info for monochrome
The values of SubWidthC and SubHeightC are 1 in the ITU-T H.265. The current code use the value of 2. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/hevc_ps.c')
-rw-r--r--libavcodec/hevc_ps.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
index fbd9fbf..ea984af 100644
--- a/libavcodec/hevc_ps.c
+++ b/libavcodec/hevc_ps.c
@@ -70,6 +70,14 @@ static const AVRational vui_sar[] = {
{ 2, 1 },
};
+static const uint8_t hevc_sub_width_c[] = {
+ 1, 2, 2, 1
+};
+
+static const uint8_t hevc_sub_height_c[] = {
+ 1, 2, 1, 1
+};
+
static void remove_pps(HEVCParamSets *s, int id)
{
if (s->pps_list[id] && s->pps == (const HEVCPPS*)s->pps_list[id]->data)
@@ -628,8 +636,8 @@ static void decode_vui(GetBitContext *gb, AVCodecContext *avctx,
vui->default_display_window_flag = get_bits1(gb);
if (vui->default_display_window_flag) {
- int vert_mult = 1 + (sps->chroma_format_idc < 2);
- int horiz_mult = 1 + (sps->chroma_format_idc < 3);
+ int vert_mult = hevc_sub_height_c[sps->chroma_format_idc];
+ int horiz_mult = hevc_sub_width_c[sps->chroma_format_idc];
vui->def_disp_win.left_offset = get_ue_golomb_long(gb) * horiz_mult;
vui->def_disp_win.right_offset = get_ue_golomb_long(gb) * horiz_mult;
vui->def_disp_win.top_offset = get_ue_golomb_long(gb) * vert_mult;
@@ -923,8 +931,8 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id,
return ret;
if (get_bits1(gb)) { // pic_conformance_flag
- int vert_mult = 1 + (sps->chroma_format_idc < 2);
- int horiz_mult = 1 + (sps->chroma_format_idc < 3);
+ int vert_mult = hevc_sub_height_c[sps->chroma_format_idc];
+ int horiz_mult = hevc_sub_width_c[sps->chroma_format_idc];
sps->pic_conf_win.left_offset = get_ue_golomb_long(gb) * horiz_mult;
sps->pic_conf_win.right_offset = get_ue_golomb_long(gb) * horiz_mult;
sps->pic_conf_win.top_offset = get_ue_golomb_long(gb) * vert_mult;
OpenPOWER on IntegriCloud