[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