[FFmpeg-devel] [PATCH 01/27] cbs_h2645: Merge SEI messages in common between codecs

Mark Thompson sw at jkqxz.net
Wed Jan 6 20:45:02 EET 2021


On 04/01/2021 14:32, Nuo Mi wrote:
> On Sat, Jan 2, 2021 at 5:45 AM Mark Thompson <sw at jkqxz.net> wrote:
> 
>> Make a new template file for common SEI messages - this will also apply
>> to H.266.
>> ---
>>   libavcodec/cbs_h264.h                 |  37 +------
>>   libavcodec/cbs_h2645.c                |  24 +++--
>>   libavcodec/cbs_h264_syntax_template.c | 106 +-------------------
>>   libavcodec/cbs_h265.h                 |  45 ++-------
>>   libavcodec/cbs_h265_syntax_template.c | 135 ++++----------------------
>>   libavcodec/cbs_sei.h                  |  60 ++++++++++++
>>   libavcodec/cbs_sei_syntax_template.c  | 132 +++++++++++++++++++++++++
>>   libavcodec/h264_metadata_bsf.c        |   2 +-
>>   libavcodec/vaapi_encode_h264.c        |   2 +-
>>   libavcodec/vaapi_encode_h265.c        |  11 ++-
>>   10 files changed, 250 insertions(+), 304 deletions(-)
>>   create mode 100644 libavcodec/cbs_sei.h
>>   create mode 100644 libavcodec/cbs_sei_syntax_template.c
>>
>> ...
>> +
>> +static int FUNC(sei_user_data_registered)
>> +    (CodedBitstreamContext *ctx, RWContext *rw,
>> +     SEIRawUserDataRegistered *current, uint32_t *payload_size)
>> +{
>> +    int err, i, j;
>> +
>> +    HEADER("User Data Registered ITU-T T.35");
>> +
>> +    u(8, itu_t_t35_country_code, 0x00, 0xff);
>> +    if (current->itu_t_t35_country_code != 0xff)
>> +        i = 1;
>> +    else {
>> +        u(8, itu_t_t35_country_code_extension_byte, 0x00, 0xff);
>> +        i = 2;
>> +    }
>> +
>> +#ifdef READ
>> +    if (*payload_size < i) {
>> +        av_log(ctx->log_ctx, AV_LOG_ERROR,
>> +               "Invalid SEI user data registered payload.\n");
>> +        return AVERROR_INVALIDDATA;
>> +    }
>> +    current->data_length = *payload_size - i;
>> +#else
>> +    *payload_size = i + current->data_length;
>> +#endif
>> +
>> +    allocate(current->data, current->data_length);
>> +    for (j = 0; j < current->data_length; j++)
>> +        xu(8, itu_t_t35_payload_byte[i], current->data[j], 0x00, 0xff, 1,
>> i + j);
>>
> although it's just a name, change  itu_t_t35_payload_byte[i] to
> itu_t_t35_payload_byte[i+j] maybe better?

No, because there is no standard variable called j so it shouldn't be in the string.  i makes the most sense given that i is the loop index, though it's really i - (1 or 2).

Maybe it would cause less confusion to leave the brackets empty?  (After all, that element isn't actually an array, we just write it as one here because it's cleaner.)

>> +
>> +    return 0;
>> +}
>> +

- Mark


More information about the ffmpeg-devel mailing list