From a1f1d6374a7c519c7a8b412578c9b88d64edddd4 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 7 Jan 2016 22:51:04 +0100 Subject: [PATCH] Make current_IDR_display non-global. --- h264encode.cpp | 22 +++++++++++----------- h264encode.h | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/h264encode.cpp b/h264encode.cpp index e0083a1..2569470 100644 --- a/h264encode.cpp +++ b/h264encode.cpp @@ -131,7 +131,6 @@ static int rc_default_modes[] = { VA_RC_VCM, VA_RC_NONE, }; -static unsigned long long current_IDR_display = 0; static unsigned int current_frame_num = 0; static int misc_priv_type = 0; @@ -1365,7 +1364,7 @@ static int calc_poc(int pic_order_cnt_lsb, int frame_type) return TopFieldOrderCnt; } -static int render_picture(int frame_type, int display_frame_num) +static int render_picture(int frame_type, int display_frame_num, int gop_start_display_frame_num) { VABufferID pic_param_buf; VAStatus va_status; @@ -1374,7 +1373,7 @@ static int render_picture(int frame_type, int display_frame_num) pic_param.CurrPic.picture_id = gl_surfaces[display_frame_num % SURFACE_NUM].ref_surface; pic_param.CurrPic.frame_idx = current_frame_num; pic_param.CurrPic.flags = 0; - pic_param.CurrPic.TopFieldOrderCnt = calc_poc((display_frame_num - current_IDR_display) % MaxPicOrderCntLsb, frame_type); + pic_param.CurrPic.TopFieldOrderCnt = calc_poc((display_frame_num - gop_start_display_frame_num) % MaxPicOrderCntLsb, frame_type); pic_param.CurrPic.BottomFieldOrderCnt = pic_param.CurrPic.TopFieldOrderCnt; CurrentCurrPic = pic_param.CurrPic; @@ -1510,7 +1509,7 @@ static void render_packedslice() free(packedslice_buffer); } -static int render_slice(int encoding_frame_num, int display_frame_num, int frame_type) +static int render_slice(int encoding_frame_num, int display_frame_num, int gop_start_display_frame_num, int frame_type) { VABufferID slice_param_buf; VAStatus va_status; @@ -1553,7 +1552,7 @@ static int render_slice(int encoding_frame_num, int display_frame_num, int frame slice_param.slice_alpha_c0_offset_div2 = 0; slice_param.slice_beta_offset_div2 = 0; slice_param.direct_spatial_mv_pred_flag = 1; - slice_param.pic_order_cnt_lsb = (display_frame_num - current_IDR_display) % MaxPicOrderCntLsb; + slice_param.pic_order_cnt_lsb = (display_frame_num - gop_start_display_frame_num) % MaxPicOrderCntLsb; if (h264_packedheader && @@ -1898,6 +1897,7 @@ void H264Encoder::end_frame(RefCountedGLsync fence, int64_t pts, const vector