From: Wu Jianhua <toqsxw@outlook.com>
To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org>
Subject: [FFmpeg-devel] 回复: [PATCH v1 01/19] avcodec/cbs_sei_syntax_template: add sei message film_grain_characteristics
Date: Sat, 26 Apr 2025 11:37:49 +0000
Message-ID: <TYWPR01MB99558BCA30113BC8342948D2CA872@TYWPR01MB9955.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <GV1P250MB073752BCF14EE63232328F978F842@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Andreas Rheinhardt:
> toqsxw@gmail.com:
>> From: Wu Jianhua <toqsxw@outlook.com>
>>
>> Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
>> ---
>> libavcodec/cbs_h2645.c | 6 ++++
>> libavcodec/cbs_sei.h | 21 +++++++++++
>> libavcodec/cbs_sei_syntax_template.c | 53 ++++++++++++++++++++++++++++
>> 3 files changed, 80 insertions(+)
>>
>> +typedef struct SEIRawFilmGrainCharacteristics {
>> + uint8_t fg_characteristics_cancel_flag;
>> + uint8_t fg_model_id;
>> + uint8_t fg_separate_colour_description_present_flag;
>> + uint8_t fg_bit_depth_luma_minus8;
>> + uint8_t fg_bit_depth_chroma_minus8;
>> + uint8_t fg_full_range_flag;
>> + uint8_t fg_colour_primaries;
>> + uint8_t fg_transfer_characteristics;
>> + uint8_t fg_matrix_coeffs;
>> + uint8_t fg_blending_mode_id;
>> + uint8_t fg_log2_scale_factor;
>> + uint8_t fg_comp_model_present_flag[3];
>> + uint8_t fg_num_intensity_intervals_minus1[3];
>> + uint8_t fg_num_model_values_minus1[3];
>> + uint8_t fg_intensity_interval_lower_bound[3][256];
>> + uint8_t fg_intensity_interval_upper_bound[3][256];
>> + int16_t fg_comp_model_value[3][256][6];
>> + uint8_t fg_characteristics_persistence_flag;
>> +} SEIRawFilmGrainCharacteristics;
>> +
>> typedef struct SEIRawMessage {
>> uint32_t payload_type;
>> uint32_t payload_size;
>> diff --git a/libavcodec/cbs_sei_syntax_template.c b/libavcodec/cbs_sei_syntax_template.c
>> index 0205bb47aa..b105299cd9 100644
>> --- a/libavcodec/cbs_sei_syntax_template.c
>> +++ b/libavcodec/cbs_sei_syntax_template.c
>> @@ -224,6 +224,59 @@ SEI_FUNC(ambient_viewing_environment,
>> return 0;
>> }
>>
>> +SEI_FUNC(film_grain_characteristics,
>> + (CodedBitstreamContext *ctx, RWContext *rw,
>> + SEIRawFilmGrainCharacteristics *current,
>> + SEIMessageState *state))
>> +{
>> + int err, c, i, j;
>> +
>> + HEADER("Film Grain Characteristics");
>> +
>> + flag(fg_characteristics_cancel_flag);
>> + if (!current->fg_characteristics_cancel_flag) {
>> + int filmGrainBitDepth[3];
>> +
>> + u(2, fg_model_id, 0, 1);
>> + flag(fg_separate_colour_description_present_flag);
>> + if (current->fg_separate_colour_description_present_flag) {
>> + ub(3, fg_bit_depth_luma_minus8);
>> + ub(3, fg_bit_depth_chroma_minus8);
>> + flag(fg_full_range_flag);
>> + ub(8, fg_colour_primaries);
>> + ub(8, fg_transfer_characteristics);
>> + ub(8, fg_matrix_coeffs);
>> + }
>> +
>> + filmGrainBitDepth[0] = current->fg_bit_depth_luma_minus8 + 8;
>> + filmGrainBitDepth[1] =
>> + filmGrainBitDepth[2] = current->fg_bit_depth_chroma_minus8 + 8;
>> +
>> + u(2, fg_blending_mode_id, 0, 1);
>> + ub(4, fg_log2_scale_factor);
>> + for (c = 0; c < 3; c++)
>> + flags(fg_comp_model_present_flag[c], 1, c);
>> +
>> + for (c = 0; c < 3; c++) {
>> + if (current->fg_comp_model_present_flag[c]) {
>> + ubs(8, fg_num_intensity_intervals_minus1[c], 1, c);
>> + us(3, fg_num_model_values_minus1[c], 0, 5, 1, c);
>> + for (i = 0; i <= current->fg_num_intensity_intervals_minus1[c]; i++) {
>> + ubs(8, fg_intensity_interval_lower_bound[c][i], 2, c, i);
>> + ubs(8, fg_intensity_interval_upper_bound[c][i], 2, c, i);
>> + for (j = 0; j <= current->fg_num_model_values_minus1[c]; j++)
>> + ses(fg_comp_model_value[c][i][j], 0 - current->fg_model_id * (1 << (filmGrainBitDepth[c] - 1)),
>> + ((1 << filmGrainBitDepth[c]) - 1) - current->fg_model_id * (1 << (filmGrainBitDepth[c] - 1)),
>> + 3, c, i, j);
>> + }
>> + }
>> + }
>> + flag(fg_characteristics_persistence_flag);
>> + }
>> +
>> + return 0;
>> +}
>> +
>
> This seems to be exactly the same as the H.265 one (apart from some
> variable names), so it should be shared.
>
> - Andreas
Hi Andreas,
Yeah. They are the same but I have some concerns here.
As you can see, the RawSEI structures have the same name as the standard.
For example, the film grain in h274 spec has fg_ prefix, the SEIRawFramePackingArrangement
has fp_ prefix, the film grain in h265 spec has no prefix. I'm not sure we should follow this convention.
And, the h274 doesn't require the codec context, but the film grain in h265 depends on the sps
and vui. Also, there is one more film grain in h264 cbs. I'm not sure how to leverage a good way
to share them, so just follow the convention of cbs interface.
Thanks,
Jianhua
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
prev parent reply other threads:[~2025-04-26 11:38 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-01 17:15 [FFmpeg-devel] " toqsxw
2025-04-01 17:15 ` [FFmpeg-devel] [PATCH v1 02/19] avcodec/vvc: support decoding prefix and suffix nal units toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 03/19] avcodec/vvc/sei: add decode_film_grain_characteristics toqsxw
2025-04-25 22:11 ` Andreas Rheinhardt
2025-04-26 10:56 ` [FFmpeg-devel] 回复: " Wu Jianhua
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 04/19] avcodec/vvc/dec: export sei to the frame when the frame starts toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 05/19] avcodec/vvc/dec: support applying film grain by the decoder toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 06/19] avcodec/vvc/dec: support removing film grain params from side data toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 07/19] avcodec/h274: add H274SEIPictureHash struct toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 08/19] avcodec/vvc/sei: add decode_decoded_picture_hash toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 09/19] avcodec/h274: add ff_h274_hash functions toqsxw
2025-04-25 22:01 ` Andreas Rheinhardt
2025-05-08 18:36 ` [FFmpeg-devel] 回复: " Wu Jianhua
2025-05-24 14:02 ` Nuo Mi
2025-05-31 1:53 ` Nuo Mi
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 10/19] avcodec/vvcdec: verify picture hash toqsxw
2025-04-25 22:02 ` Andreas Rheinhardt
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 11/19] avcodec/cbs_sei_syntax_template: add sei message sei_display_orientation toqsxw
2025-04-25 22:05 ` Andreas Rheinhardt
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 12/19] avcodec/vvc/sei: add decode_display_orientation toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 13/19] avcodec/vvc/sei: add decode_content_light_level_info toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 14/19] avcodec/cbs_sei_syntax_template: add sei message frame_field_information toqsxw
2025-04-25 22:08 ` Andreas Rheinhardt
2025-04-25 22:12 ` James Almer
2025-04-25 22:55 ` Andreas Rheinhardt
2025-04-25 22:58 ` James Almer
2025-04-25 23:02 ` Andreas Rheinhardt
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 15/19] avcodec/h274: add H274SEIFrameFieldInfo struct toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 16/19] avcodec/vvc/sei: add decode_frame_field_info toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 17/19] avcodec/vvc: support fields toqsxw
2025-04-01 17:35 ` Andreas Rheinhardt
2025-04-01 18:11 ` [FFmpeg-devel] 回复: " Wu Jianhua
2025-04-23 13:54 ` Nuo Mi
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 18/19] avcodec/vvc/sei: add decode_ambient_viewing_environment toqsxw
2025-04-01 17:16 ` [FFmpeg-devel] [PATCH v1 19/19] avcodec/vvc/sei: add decode_mastering_display_colour_volume toqsxw
2025-04-25 21:37 ` [FFmpeg-devel] [PATCH v1 01/19] avcodec/cbs_sei_syntax_template: add sei message film_grain_characteristics Andreas Rheinhardt
2025-04-26 11:37 ` Wu Jianhua [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=TYWPR01MB99558BCA30113BC8342948D2CA872@TYWPR01MB9955.jpnprd01.prod.outlook.com \
--to=toqsxw@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git