[FFmpeg-devel] [PATCH v1 11/19] avcodec/cbs_sei_syntax_template: add sei message sei_display_orientation
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat Apr 26 01:05:05 EEST 2025
toqsxw at gmail.com:
> From: Wu Jianhua <toqsxw at outlook.com>
>
> Signed-off-by: Wu Jianhua <toqsxw at outlook.com>
> ---
> libavcodec/cbs_h2645.c | 6 ++++++
> libavcodec/cbs_sei.h | 7 +++++++
> libavcodec/cbs_sei_syntax_template.c | 18 ++++++++++++++++++
> 3 files changed, 31 insertions(+)
>
> diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
> index 768181874c..c868770209 100644
> --- a/libavcodec/cbs_h2645.c
> +++ b/libavcodec/cbs_h2645.c
> @@ -2193,6 +2193,12 @@ static const SEIMessageTypeDescriptor cbs_sei_common_types[] = {
> sizeof(SEIRawFilmGrainCharacteristics),
> SEI_MESSAGE_RW(sei, film_grain_characteristics),
> },
> + {
> + SEI_TYPE_DISPLAY_ORIENTATION,
> + 1, 0,
> + sizeof(SEIRawDisplayOrientation),
> + SEI_MESSAGE_RW(sei, display_orientation)
> + },
> SEI_MESSAGE_TYPE_END,
> };
>
> diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h
> index a0fb004ecd..7be12e33e0 100644
> --- a/libavcodec/cbs_sei.h
> +++ b/libavcodec/cbs_sei.h
> @@ -118,6 +118,13 @@ typedef struct SEIRawFilmGrainCharacteristics {
> uint8_t fg_characteristics_persistence_flag;
> } SEIRawFilmGrainCharacteristics;
>
> +typedef struct SEIRawDisplayOrientation {
> + uint8_t display_orientation_cancel_flag;
> + uint8_t display_orientation_persistence_flag;
> + uint8_t display_orientation_transform_type;
> + uint8_t display_orientation_reserved_zero_3bits;
> +} SEIRawDisplayOrientation;
> +
> 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 b105299cd9..fb19f6ee42 100644
> --- a/libavcodec/cbs_sei_syntax_template.c
> +++ b/libavcodec/cbs_sei_syntax_template.c
> @@ -277,6 +277,24 @@ SEI_FUNC(film_grain_characteristics,
> return 0;
> }
>
> +SEI_FUNC(display_orientation, (CodedBitstreamContext *ctx, RWContext *rw,
> + SEIRawDisplayOrientation *current,
> + SEIMessageState *state))
> +{
> + int err;
> +
> + HEADER("Display Orientation");
> +
> + flag(display_orientation_cancel_flag);
> + if (!current->display_orientation_cancel_flag) {
> + flag(display_orientation_persistence_flag);
> + u(3, display_orientation_transform_type, 0, 7);
> + ub(3, display_orientation_reserved_zero_3bits);
> + }
> +
> + return 0;
> +}
> +
> static int FUNC(message)(CodedBitstreamContext *ctx, RWContext *rw,
> SEIRawMessage *current)
> {
You add this to the list of common SEI messages, yet how common is it
really? H.264 and HEVC use different structures (with different parsing).
- Andreas
More information about the ffmpeg-devel
mailing list