[FFmpeg-devel] [PATCH 2/5] avcodec/cbs_h2645: add helper macros for signed values

James Almer jamrial at gmail.com
Wed Apr 17 02:01:23 EEST 2019


On 4/16/2019 7:57 PM, Mark Thompson wrote:
> On 15/04/2019 22:17, James Almer wrote:
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>>  libavcodec/cbs_h2645.c | 20 ++++++++++++++++++++
>>  1 file changed, 20 insertions(+)
>>
>> diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
>> index e74f8dce81..a205293b3c 100644
>> --- a/libavcodec/cbs_h2645.c
>> +++ b/libavcodec/cbs_h2645.c
>> @@ -255,6 +255,8 @@ static int cbs_write_se_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc,
>>  #define flag(name) u(1, name, 0, 1)
>>  #define ue(name, range_min, range_max) \
>>          xue(name, current->name, range_min, range_max, 0)
>> +#define i(width, name, range_min, range_max) \
>> +        xi(width, name, current->name, range_min, range_max, 0)
> 
> I know it's right, but defining "i" as a macro feels like a pretty terrible idea in C :P

Eh, i guess :p. It at least didn't blow up here.

What would be best? s? su like in cbs_av1? Something else?

> 
>>  #define se(name, range_min, range_max) \
>>          xse(name, current->name, range_min, range_max, 0)
>>  
>> @@ -264,6 +266,8 @@ static int cbs_write_se_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc,
>>          xu(1, name, current->name, 0, 1, subs, __VA_ARGS__)
>>  #define ues(name, range_min, range_max, subs, ...) \
>>          xue(name, current->name, range_min, range_max, subs, __VA_ARGS__)
>> +#define is(width, name, range_min, range_max, subs, ...) \
>> +        xi(width, name, current->name, range_min, range_max, subs, __VA_ARGS__)
>>  #define ses(name, range_min, range_max, subs, ...) \
>>          xse(name, current->name, range_min, range_max, subs, __VA_ARGS__)
>>  
>> @@ -291,6 +295,13 @@ static int cbs_write_se_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc,
>>                                   &value, range_min, range_max)); \
>>          var = value; \
>>      } while (0)
>> +#define xi(width, name, var, range_min, range_max, subs, ...) do { \
>> +        int32_t value = range_min; \
>> +        CHECK(ff_cbs_read_signed(ctx, rw, width, #name, \
>> +                                 SUBSCRIPTS(subs, __VA_ARGS__), \
>> +                                 &value, range_min, range_max)); \
>> +        var = value; \
>> +    } while (0)
>>  #define xse(name, var, range_min, range_max, subs, ...) do { \
>>          int32_t value = range_min; \
>>          CHECK(cbs_read_se_golomb(ctx, rw, #name, \
>> @@ -338,6 +349,7 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc)
>>  #undef READWRITE
>>  #undef RWContext
>>  #undef xu
>> +#undef xi
>>  #undef xue
>>  #undef xse
>>  #undef infer
>> @@ -362,6 +374,12 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc)
>>                                    SUBSCRIPTS(subs, __VA_ARGS__), \
>>                                    value, range_min, range_max)); \
>>      } while (0)
>> +#define xi(width, name, var, range_min, range_max, subs, ...) do { \
>> +        int32_t value = var; \
>> +        CHECK(ff_cbs_write_signed(ctx, rw, width, #name, \
>> +                                  SUBSCRIPTS(subs, __VA_ARGS__), \
>> +                                  value, range_min, range_max)); \
>> +    } while (0)
>>  #define xse(name, var, range_min, range_max, subs, ...) do { \
>>          int32_t value = var; \
>>          CHECK(cbs_write_se_golomb(ctx, rw, #name, \
>> @@ -402,9 +420,11 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc)
>>  #undef READWRITE
>>  #undef RWContext
>>  #undef xu
>> +#undef xi
>>  #undef xue
>>  #undef xse
>>  #undef u
>> +#undef i
>>  #undef flag
>>  #undef ue
>>  #undef se
>>
> 
> LGTM.
> 
> Thanks,
> 
> - Mark
> _______________________________________________
> 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