Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Lynne via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: Lynne <dev@lynne.ee>
Subject: Re: [FFmpeg-devel] [PATCH 2/4 v2] libavcodec/h2645_sei: export raw LCEVC metadata
Date: Mon, 22 Jul 2024 02:02:09 +0200
Message-ID: <45c6995e-ad9a-4832-b5ac-10fcc01a653f@lynne.ee> (raw)
In-Reply-To: <20240721225350.298-2-jamrial@gmail.com>


[-- Attachment #1.1.1.1: Type: text/plain, Size: 4905 bytes --]

On 22/07/2024 00:53, James Almer wrote:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>   libavcodec/h2645_sei.c | 37 +++++++++++++++++++++++++++++++++++++
>   libavcodec/h2645_sei.h |  5 +++++
>   libavcodec/itut35.h    |  2 ++
>   3 files changed, 44 insertions(+)
> 
> diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c
> index 7c83747cd0..61d18e14b3 100644
> --- a/libavcodec/h2645_sei.c
> +++ b/libavcodec/h2645_sei.c
> @@ -99,6 +99,20 @@ static int decode_registered_user_data_dynamic_hdr_vivid(HEVCSEIDynamicHDRVivid
>   }
>   #endif
>   
> +static int decode_registered_user_data_lcevc(HEVCSEILCEVC *s,
> +                                             GetByteContext *gb)
> +{
> +    int size = bytestream2_get_bytes_left(gb);
> +
> +    av_buffer_unref(&s->info);
> +    s->info = av_buffer_alloc(size);
> +    if (!s->info)
> +        return AVERROR(ENOMEM);
> +
> +    bytestream2_get_bufferu(gb, s->info->data, size);
> +    return 0;
> +}
> +
>   static int decode_registered_user_data_afd(H2645SEIAFD *h, GetByteContext *gb)
>   {
>       int flag;
> @@ -142,6 +156,7 @@ static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb,
>       }
>   
>       if (country_code != ITU_T_T35_COUNTRY_CODE_US &&
> +        country_code != ITU_T_T35_COUNTRY_CODE_UK &&
>           country_code != ITU_T_T35_COUNTRY_CODE_CN) {

Unrelated change?

>           av_log(logctx, AV_LOG_VERBOSE,
>                  "Unsupported User Data Registered ITU-T T35 SEI message (country_code = %d)\n",
> @@ -173,6 +188,13 @@ static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb,
>           }
>           break;
>       }
> +    case ITU_T_T35_PROVIDER_CODE_LCEVC: {
> +        if (bytestream2_get_bytes_left(gb) < 2)
> +            return AVERROR_INVALIDDATA;
> +
> +        bytestream2_skipu(gb, 1); // user_data_type_code
> +        return decode_registered_user_data_lcevc(&h->lcevc, gb);
> +    }
>   #if CONFIG_HEVC_SEI
>       case ITU_T_T35_PROVIDER_CODE_CUVA: {
>           const uint16_t cuva_provider_oriented_code = 0x0005;
> @@ -501,6 +523,11 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src)
>           av_buffer_unref(&dst->unregistered.buf_ref[i]);
>       dst->unregistered.nb_buf_ref = 0;
>   
> +    ret = av_buffer_replace(&dst->lcevc.info,
> +                             src->lcevc.info);
> +    if (ret < 0)
> +        return ret;
> +
>       if (src->unregistered.nb_buf_ref) {
>           ret = av_reallocp_array(&dst->unregistered.buf_ref,
>                                   src->unregistered.nb_buf_ref,
> @@ -666,6 +693,15 @@ static int h2645_sei_to_side_data(AVCodecContext *avctx, H2645SEI *sei,
>           }
>       }
>   
> +    if (sei->lcevc.info) {
> +        HEVCSEILCEVC *lcevc = &sei->lcevc;
> +        AVFrameSideData *entry = av_frame_side_data_add(sd, nb_sd, AV_FRAME_DATA_LCEVC,
> +                                                        &lcevc->info, 0);
> +        if (!entry)
> +            av_buffer_unref(&lcevc->info);
> +        lcevc->info = NULL;
> +    }
> +
>       return 0;
>   }
>   
> @@ -875,6 +911,7 @@ void ff_h2645_sei_reset(H2645SEI *s)
>       av_freep(&s->unregistered.buf_ref);
>       av_buffer_unref(&s->dynamic_hdr_plus.info);
>       av_buffer_unref(&s->dynamic_hdr_vivid.info);
> +    av_buffer_unref(&s->lcevc.info);
>   
>       s->ambient_viewing_environment.present = 0;
>       s->mastering_display.present = 0;
> diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h
> index 488dbcad7e..598f78b585 100644
> --- a/libavcodec/h2645_sei.h
> +++ b/libavcodec/h2645_sei.h
> @@ -50,6 +50,10 @@ typedef struct HEVCSEIDynamicHDRVivid {
>       AVBufferRef *info;
>   } HEVCSEIDynamicHDRVivid;
>   
> +typedef struct HEVCSEILCEVC {
> +    AVBufferRef *info;
> +} HEVCSEILCEVC;
> +
>   typedef struct H2645SEIUnregistered {
>       AVBufferRef **buf_ref;
>       unsigned nb_buf_ref;
> @@ -126,6 +130,7 @@ typedef struct H2645SEI {
>       H2645SEIAFD afd;
>       HEVCSEIDynamicHDRPlus  dynamic_hdr_plus;     //< HEVC only
>       HEVCSEIDynamicHDRVivid dynamic_hdr_vivid;    //< HEVC only
> +    HEVCSEILCEVC lcevc;
>       H2645SEIUnregistered unregistered;
>       H2645SEIFramePacking frame_packing;
>       H2645SEIDisplayOrientation display_orientation;
> diff --git a/libavcodec/itut35.h b/libavcodec/itut35.h
> index ffa7024981..a75ef37929 100644
> --- a/libavcodec/itut35.h
> +++ b/libavcodec/itut35.h
> @@ -20,11 +20,13 @@
>   #define AVCODEC_ITUT35_H
>   
>   #define ITU_T_T35_COUNTRY_CODE_CN 0x26
> +#define ITU_T_T35_COUNTRY_CODE_UK 0xB4
>   #define ITU_T_T35_COUNTRY_CODE_US 0xB5
>   
>   #define ITU_T_T35_PROVIDER_CODE_ATSC  0x31
>   #define ITU_T_T35_PROVIDER_CODE_CUVA  0x04
>   #define ITU_T_T35_PROVIDER_CODE_DOLBY 0x3B
> +#define ITU_T_T35_PROVIDER_CODE_LCEVC 0x50
>   #define ITU_T_T35_PROVIDER_CODE_SMTPE 0x3C
>   
>   #endif /* AVCODEC_ITUT35_H */

[-- Attachment #1.1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 624 bytes --]

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
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".

  reply	other threads:[~2024-07-22  0:02 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-21 22:53 [FFmpeg-devel] [PATCH 1/4 v2] avutil/frame: add an LCEVC enhancement data payload side data type James Almer
2024-07-21 22:53 ` [FFmpeg-devel] [PATCH 2/4 v2] libavcodec/h2645_sei: export raw LCEVC metadata James Almer
2024-07-22  0:02   ` Lynne via ffmpeg-devel [this message]
2024-07-22  0:14     ` James Almer
2024-07-21 22:53 ` [FFmpeg-devel] [PATCH 3/4 v2] avcodec: add LCEVC decoding support via LCEVCdec James Almer
2024-07-22 11:16   ` Frank Plowman
2024-07-21 22:53 ` [FFmpeg-devel] [PATCH 4/4 v2] avcodec/h264dec: add support for LCEVC enhancement James Almer
2024-07-26  7:55   ` Anton Khirnov
2024-07-26 12:10     ` James Almer
2024-07-26 12:19       ` Anton Khirnov
2024-07-26 12:21         ` James Almer

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=45c6995e-ad9a-4832-b5ac-10fcc01a653f@lynne.ee \
    --to=ffmpeg-devel@ffmpeg.org \
    --cc=dev@lynne.ee \
    /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