History

lavc/hevc_ps: compactify ShortTermRPS

Do not use larger fields than needed, use size-1 bitfields for flags. Reduces sizeof(HEVCSPS) by 1280 bytes.

Anton Khirnov committed 2 years ago

Commit 63a96db1 parent 91278193 files · +15 −12Browse files

Unified · Split

3 files
  1. libavcodec/hevc_ps.c +3 −3
  2. libavcodec/hevc_ps.h +11 −8
  3. libavcodec/vulkan_hevc.c +1 −1
libavcodec/hevc_ps.c+3−3
@@ -143,11 +143,11 @@ int ff_hevc_decode_short_term_rps(GetBitContext *gb, AVCodecContext *avctx, · 142 unmodified lines
143 for (i = 0; i <= rps_ridx->num_delta_pocs; i++) {143 for (i = 0; i <= rps_ridx->num_delta_pocs; i++) {
144 used[k] = get_bits1(gb);144 used[k] = get_bits1(gb);
145 145
146 rps->use_delta_flag = 0;146 rps->use_delta = 0;
147 if (!used[k])147 if (!used[k])
148 rps->use_delta_flag = get_bits1(gb);148 rps->use_delta = get_bits1(gb);
149 149
150 if (used[k] || rps->use_delta_flag) {150 if (used[k] || rps->use_delta) {
151 if (i < rps_ridx->num_delta_pocs)151 if (i < rps_ridx->num_delta_pocs)
152 delta_poc = delta_rps + rps_ridx->delta_poc[i];152 delta_poc = delta_rps + rps_ridx->delta_poc[i];
153 else153 else
libavcodec/hevc_ps.h+11−8
@@ -70,16 +70,19 @@ typedef struct HEVCHdrParams { · 69 unmodified lines
70} HEVCHdrParams;70} HEVCHdrParams;
71 71
72typedef struct ShortTermRPS {72typedef struct ShortTermRPS {
73 uint8_t rps_predict;
74 unsigned int delta_idx;
75 uint8_t use_delta_flag;
76 uint8_t delta_rps_sign;
77 unsigned int abs_delta_rps;
78 unsigned int num_negative_pics;
79 int num_delta_pocs;
80 int rps_idx_num_delta_pocs;
81 int32_t delta_poc[32];73 int32_t delta_poc[32];
82 uint32_t used;74 uint32_t used;
75
76 uint8_t delta_idx;
77 uint8_t num_negative_pics;
78 uint8_t num_delta_pocs;
79 uint8_t rps_idx_num_delta_pocs;
80
81 uint16_t abs_delta_rps;
82 unsigned delta_rps_sign:1;
83
84 unsigned rps_predict:1;
85 unsigned use_delta:1;
83} ShortTermRPS;86} ShortTermRPS;
84 87
85typedef struct HEVCWindow {88typedef struct HEVCWindow {
libavcodec/vulkan_hevc.c+1−1
@@ -359,7 +359,7 @@ static void set_sps(const HEVCSPS *sps, int sps_idx, · 358 unmodified lines
359 .delta_rps_sign = sps->st_rps[i].delta_rps_sign,359 .delta_rps_sign = sps->st_rps[i].delta_rps_sign,
360 },360 },
361 .delta_idx_minus1 = sps->st_rps[i].delta_idx - 1,361 .delta_idx_minus1 = sps->st_rps[i].delta_idx - 1,
362 .use_delta_flag = sps->st_rps[i].use_delta_flag,362 .use_delta_flag = sps->st_rps[i].use_delta,
363 .abs_delta_rps_minus1 = sps->st_rps[i].abs_delta_rps - 1,363 .abs_delta_rps_minus1 = sps->st_rps[i].abs_delta_rps - 1,
364 .used_by_curr_pic_flag = 0x0,364 .used_by_curr_pic_flag = 0x0,
365 .used_by_curr_pic_s0_flag = 0x0,365 .used_by_curr_pic_s0_flag = 0x0,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t