[FFmpeg-devel] [PATCH v1 03/13] lavc/hevc_ps: Add SPS/PPS parse support for HEVC extension syntax

Wang, Fei W fei.w.wang at intel.com
Mon Dec 5 08:11:07 EET 2022


On Thu, 2022-12-01 at 22:52 -0300, James Almer wrote:
> On 12/1/2022 5:13 AM, Fei Wang wrote:
> > +static void colour_mapping_octants(GetBitContext *gb, HEVCPPS
> > *pps, int inp_depth,
> > +                                   int idx_y, int idx_cb, int
> > idx_cr, int inp_length)
> > +{
> > +    uint8_t split_octant_flag, coded_res_flag;
> > +    uint16_t part_num_y, res_coeff_q, res_coeff_r;
> 
> Use int or unsigned for scalar values in stack.
> 
> > +    int bit_depth_cm_input_y, bit_depth_cm_output_y, cm_res_bits;
> > +    int k, m, n, c, i, j;
> 
> You can reduce the scope of almost all the above variables.
> 
> > +
> > +    part_num_y = 1 << pps->cm_y_part_num_log2;
> > +
> > +    if (inp_depth < pps->cm_octant_depth)
> > +        split_octant_flag = get_bits1(gb);
> > +
> > +    if (split_octant_flag)
> 
> split_octant_flag may be undefined here. It should be initialized to
> 0.
> This is probably the source of the issue Michael reported.
> 
> > +        for (k = 0; k < 2; k++)
> 
> for (int k = 0...)
> 
> Same for the rest.

Fixed in V2.

Thanks
Fei

> 
> > +            for (m = 0; m < 2; m++)
> > +                for (n = 0; n < 2; n++)
> > +                    colour_mapping_octants(gb, pps, inp_depth + 1,
> > +                                           idx_y + part_num_y * k
> > * inp_length / 2,
> > +                                           idx_cb + m * inp_length
> > / 2,
> > +                                           idx_cr + n * inp_length
> > / 2,
> > +                                           inp_length / 2);
> > +    else
> > +        for (i = 0; i < part_num_y; i++) {
> > +            for (j = 0; j < 4; j++) {
> > +                coded_res_flag = get_bits1(gb);
> > +                if (coded_res_flag)
> > +                    for (c = 0; c < 3; c++) {
> > +                        res_coeff_q = get_ue_golomb_long(gb);
> > +                        bit_depth_cm_input_y = 8 + pps-
> > >luma_bit_depth_cm_input_minus8;
> > +                        bit_depth_cm_output_y = 8 + pps-
> > >luma_bit_depth_cm_output_minus8;
> > +                        cm_res_bits = FFMAX(0, 10 +
> > bit_depth_cm_input_y - bit_depth_cm_output_y -
> > +                                            pps->cm_res_quant_bits 
> > - (pps->cm_delta_flc_bits_minus1 + 1));
> > +                        res_coeff_r = get_bits(gb, cm_res_bits);
> > +                        if (res_coeff_q || res_coeff_r)
> > +                            skip_bits1(gb);
> > +                    }
> > +            }
> > +        }
> > +}
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list