Do not use larger fields than needed, use size-1 bitfields for flags. Reduces sizeof(HEVCSPS) by 1280 bytes.
Showing the changes to libavcodec (3 of 3 files). Show all
Unified · Split
| @@ -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 | else | 153 | else |
| @@ -70,16 +70,19 @@ typedef struct HEVCHdrParams { · 69 unmodified lines | |||
| 70 | } HEVCHdrParams; | 70 | } HEVCHdrParams; |
| 71 | 71 | ||
| 72 | typedef struct ShortTermRPS { | 72 | typedef 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 | ||
| 85 | typedef struct HEVCWindow { | 88 | typedef struct HEVCWindow { |
| @@ -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, |