diff mbox series

[FFmpeg-devel,v2,04/11] avcodec/dovi_rpu: clarify semantics of guess_profile()

Message ID 20240409125914.61149-5-ffmpeg@haasn.xyz
State New
Headers show
Series avcodec: add Dolby Vision encoding | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Niklas Haas April 9, 2024, 12:57 p.m. UTC
From: Niklas Haas <git@haasn.dev>

This is based on HEVC only, H.264/AV1 use their own (hopefully correctly
signalled) profiles.
---
 libavcodec/dovi_rpu.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Andreas Rheinhardt April 9, 2024, 3:37 p.m. UTC | #1
Niklas Haas:
> From: Niklas Haas <git@haasn.dev>
> 
> This is based on HEVC only, H.264/AV1 use their own (hopefully correctly
> signalled) profiles.
> ---
>  libavcodec/dovi_rpu.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/dovi_rpu.c b/libavcodec/dovi_rpu.c
> index 267e52ceb66..4da711d763e 100644
> --- a/libavcodec/dovi_rpu.c
> +++ b/libavcodec/dovi_rpu.c
> @@ -121,7 +121,8 @@ int ff_dovi_attach_side_data(DOVIContext *s, AVFrame *frame)
>      return 0;
>  }
>  
> -static int guess_profile(const AVDOVIRpuDataHeader *hdr)
> +/* Note: Only works for HEVC */
> +static int guess_hevc_profile(const AVDOVIRpuDataHeader *hdr)
>  {
>      switch (hdr->vdr_rpu_profile) {
>      case 0:
> @@ -510,7 +511,7 @@ int ff_dovi_rpu_parse(DOVIContext *s, const uint8_t *rpu, size_t rpu_size,
>      use_prev_vdr_rpu = get_bits1(gb);
>      use_nlq = (hdr->rpu_format & 0x700) == 0 && !hdr->disable_residual_flag;
>  
> -    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_profile(hdr);
> +    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_hevc_profile(hdr);
>      if (profile == 5 && use_nlq) {
>          av_log(s->logctx, AV_LOG_ERROR, "Profile 5 RPUs should not use NLQ\n");
>          goto fail;

Is guess_hevc_profile only called for HEVC?

- Andreas
Niklas Haas April 9, 2024, 4:01 p.m. UTC | #2
On Tue, 09 Apr 2024 17:37:32 +0200 Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote:
> Niklas Haas:
> > From: Niklas Haas <git@haasn.dev>
> > 
> > This is based on HEVC only, H.264/AV1 use their own (hopefully correctly
> > signalled) profiles.
> > ---
> >  libavcodec/dovi_rpu.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/libavcodec/dovi_rpu.c b/libavcodec/dovi_rpu.c
> > index 267e52ceb66..4da711d763e 100644
> > --- a/libavcodec/dovi_rpu.c
> > +++ b/libavcodec/dovi_rpu.c
> > @@ -121,7 +121,8 @@ int ff_dovi_attach_side_data(DOVIContext *s, AVFrame *frame)
> >      return 0;
> >  }
> >  
> > -static int guess_profile(const AVDOVIRpuDataHeader *hdr)
> > +/* Note: Only works for HEVC */
> > +static int guess_hevc_profile(const AVDOVIRpuDataHeader *hdr)
> >  {
> >      switch (hdr->vdr_rpu_profile) {
> >      case 0:
> > @@ -510,7 +511,7 @@ int ff_dovi_rpu_parse(DOVIContext *s, const uint8_t *rpu, size_t rpu_size,
> >      use_prev_vdr_rpu = get_bits1(gb);
> >      use_nlq = (hdr->rpu_format & 0x700) == 0 && !hdr->disable_residual_flag;
> >  
> > -    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_profile(hdr);
> > +    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_hevc_profile(hdr);
> >      if (profile == 5 && use_nlq) {
> >          av_log(s->logctx, AV_LOG_ERROR, "Profile 5 RPUs should not use NLQ\n");
> >          goto fail;
> 
> Is guess_hevc_profile only called for HEVC?

Yes. All non-HEVC codecs explicitly override s->cfg.dv_profile before
calling into this function.

But probably we should document that more clearly somewhere.

> 
> - Andreas
> 
> _______________________________________________
> 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".
diff mbox series

Patch

diff --git a/libavcodec/dovi_rpu.c b/libavcodec/dovi_rpu.c
index 267e52ceb66..4da711d763e 100644
--- a/libavcodec/dovi_rpu.c
+++ b/libavcodec/dovi_rpu.c
@@ -121,7 +121,8 @@  int ff_dovi_attach_side_data(DOVIContext *s, AVFrame *frame)
     return 0;
 }
 
-static int guess_profile(const AVDOVIRpuDataHeader *hdr)
+/* Note: Only works for HEVC */
+static int guess_hevc_profile(const AVDOVIRpuDataHeader *hdr)
 {
     switch (hdr->vdr_rpu_profile) {
     case 0:
@@ -510,7 +511,7 @@  int ff_dovi_rpu_parse(DOVIContext *s, const uint8_t *rpu, size_t rpu_size,
     use_prev_vdr_rpu = get_bits1(gb);
     use_nlq = (hdr->rpu_format & 0x700) == 0 && !hdr->disable_residual_flag;
 
-    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_profile(hdr);
+    profile = s->cfg.dv_profile ? s->cfg.dv_profile : guess_hevc_profile(hdr);
     if (profile == 5 && use_nlq) {
         av_log(s->logctx, AV_LOG_ERROR, "Profile 5 RPUs should not use NLQ\n");
         goto fail;