Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use
@ 2024-04-27 15:30 Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 2/6] dxva2_av1: Use av1dec force_integer_mv value Mark Thompson
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

This is not the same as the syntax element value in the frame header
because the specification parsing tables override the value on intra
frames.
---
On 27/04/2024 15:58, Lynne wrote:
> This looks better to me.

HYG.

Of these, only VAAPI tested.  (And probably it never did anything anyway.)

 libavcodec/av1dec.c | 7 +++++++
 libavcodec/av1dec.h | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
index 79a30a114d..601e3f05e1 100644
--- a/libavcodec/av1dec.c
+++ b/libavcodec/av1dec.c
@@ -725,6 +725,8 @@ static void av1_frame_replace(AV1Frame *dst, const AV1Frame *src)
            sizeof(dst->ref_frame_sign_bias));
     memcpy(dst->order_hints, src->order_hints,
            sizeof(dst->order_hints));
+
+    dst->force_integer_mv = src->force_integer_mv;
 }
 
 static av_cold int av1_decode_free(AVCodecContext *avctx)
@@ -1255,6 +1257,11 @@ static int get_current_frame(AVCodecContext *avctx)
     order_hint_info(s);
     load_grain_params(s);
 
+    s->cur_frame.force_integer_mv =
+        s->raw_frame_header->force_integer_mv ||
+        s->raw_frame_header->frame_type == AV1_FRAME_KEY ||
+        s->raw_frame_header->frame_type == AV1_FRAME_INTRA_ONLY;
+
     return ret;
 }
 
diff --git a/libavcodec/av1dec.h b/libavcodec/av1dec.h
index 66a732d781..8b2a7b0896 100644
--- a/libavcodec/av1dec.h
+++ b/libavcodec/av1dec.h
@@ -67,6 +67,12 @@ typedef struct AV1Frame {
     // OrderHints[] when this is the current frame, otherwise
     // SavedOrderHints[s][] when is the reference frame in slot s.
     uint8_t order_hints[AV1_TOTAL_REFS_PER_FRAME];
+
+    // force_integer_mv value at the end of the frame header parsing.
+    // This is not the same as the syntax element value in
+    // raw_frame_header because the specification parsing tables
+    // override the value on intra frames.
+    uint8_t force_integer_mv;
 } AV1Frame;
 
 typedef struct TileGroupInfo {
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [FFmpeg-devel] [PATCH 2/6] dxva2_av1: Use av1dec force_integer_mv value
  2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
@ 2024-04-27 15:30 ` Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 3/6] vdpau_av1: " Mark Thompson
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

---
 libavcodec/dxva2_av1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/dxva2_av1.c b/libavcodec/dxva2_av1.c
index 5b95f99c9b..1b55510659 100644
--- a/libavcodec/dxva2_av1.c
+++ b/libavcodec/dxva2_av1.c
@@ -101,7 +101,7 @@ int ff_dxva2_av1_fill_picture_parameters(const AVCodecContext *avctx, AVDXVACont
     pp->coding.dual_filter                  = seq->enable_dual_filter;
     pp->coding.jnt_comp                     = seq->enable_jnt_comp;
     pp->coding.screen_content_tools         = frame_header->allow_screen_content_tools;
-    pp->coding.integer_mv                   = frame_header->force_integer_mv || !(frame_header->frame_type & 1);
+    pp->coding.integer_mv                   = h->cur_frame.force_integer_mv;
     pp->coding.cdef                         = seq->enable_cdef;
     pp->coding.restoration                  = seq->enable_restoration;
     pp->coding.film_grain                   = seq->film_grain_params_present && !(avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN);
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [FFmpeg-devel] [PATCH 3/6] vdpau_av1: Use av1dec force_integer_mv value
  2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 2/6] dxva2_av1: Use av1dec force_integer_mv value Mark Thompson
@ 2024-04-27 15:30 ` Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 4/6] nvdec_av1: " Mark Thompson
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

---
 libavcodec/vdpau_av1.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/libavcodec/vdpau_av1.c b/libavcodec/vdpau_av1.c
index b74ea6aa0c..a1aff79bb7 100644
--- a/libavcodec/vdpau_av1.c
+++ b/libavcodec/vdpau_av1.c
@@ -91,9 +91,7 @@ static int vdpau_av1_start_frame(AVCodecContext *avctx,
     info->show_frame                   = frame_header->show_frame;
     info->disable_cdf_update           = frame_header->disable_cdf_update;
     info->allow_screen_content_tools   = frame_header->allow_screen_content_tools;
-    info->force_integer_mv             = frame_header->force_integer_mv ||
-                                    frame_header->frame_type == AV1_FRAME_INTRA_ONLY ||
-                                    frame_header->frame_type == AV1_FRAME_KEY;
+    info->force_integer_mv             = s->cur_frame.force_integer_mv;
     info->coded_denom                  = frame_header->coded_denom;
     info->allow_intrabc                = frame_header->allow_intrabc;
     info->allow_high_precision_mv      = frame_header->allow_high_precision_mv;
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [FFmpeg-devel] [PATCH 4/6] nvdec_av1: Use av1dec force_integer_mv value
  2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 2/6] dxva2_av1: Use av1dec force_integer_mv value Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 3/6] vdpau_av1: " Mark Thompson
@ 2024-04-27 15:30 ` Mark Thompson
  2024-05-06 17:19   ` Timo Rothenpieler
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix " Mark Thompson
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 6/6] vulkan_av1: " Mark Thompson
  4 siblings, 1 reply; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

---
 libavcodec/nvdec_av1.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c
index 4efa420e66..8a46db1ed5 100644
--- a/libavcodec/nvdec_av1.c
+++ b/libavcodec/nvdec_av1.c
@@ -106,9 +106,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
             .show_frame                   = frame_header->show_frame,
             .disable_cdf_update           = frame_header->disable_cdf_update,
             .allow_screen_content_tools   = frame_header->allow_screen_content_tools,
-            .force_integer_mv             = frame_header->force_integer_mv ||
-                                            frame_header->frame_type == AV1_FRAME_INTRA_ONLY ||
-                                            frame_header->frame_type == AV1_FRAME_KEY,
+            .force_integer_mv             = s->cur_frame.force_integer_mv;
             .coded_denom                  = frame_header->coded_denom,
             .allow_intrabc                = frame_header->allow_intrabc,
             .allow_high_precision_mv      = frame_header->allow_high_precision_mv,
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix force_integer_mv value
  2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
                   ` (2 preceding siblings ...)
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 4/6] nvdec_av1: " Mark Thompson
@ 2024-04-27 15:30 ` Mark Thompson
  2024-04-30  6:03   ` Xiang, Haihao
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 6/6] vulkan_av1: " Mark Thompson
  4 siblings, 1 reply; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

---
 libavcodec/vaapi_av1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c
index 1f563483b9..f61bf63098 100644
--- a/libavcodec/vaapi_av1.c
+++ b/libavcodec/vaapi_av1.c
@@ -220,7 +220,7 @@ static int vaapi_av1_start_frame(AVCodecContext *avctx,
             .error_resilient_mode         = frame_header->error_resilient_mode,
             .disable_cdf_update           = frame_header->disable_cdf_update,
             .allow_screen_content_tools   = frame_header->allow_screen_content_tools,
-            .force_integer_mv             = frame_header->force_integer_mv,
+            .force_integer_mv             = s->cur_frame.force_integer_mv,
             .allow_intrabc                = frame_header->allow_intrabc,
             .use_superres                 = frame_header->use_superres,
             .allow_high_precision_mv      = frame_header->allow_high_precision_mv,
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [FFmpeg-devel] [PATCH 6/6] vulkan_av1: Fix force_integer_mv value
  2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
                   ` (3 preceding siblings ...)
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix " Mark Thompson
@ 2024-04-27 15:30 ` Mark Thompson
  4 siblings, 0 replies; 9+ messages in thread
From: Mark Thompson @ 2024-04-27 15:30 UTC (permalink / raw)
  To: ffmpeg-devel

---
 libavcodec/vulkan_av1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/vulkan_av1.c b/libavcodec/vulkan_av1.c
index 25ab4ecc70..a550215e32 100644
--- a/libavcodec/vulkan_av1.c
+++ b/libavcodec/vulkan_av1.c
@@ -435,7 +435,7 @@ static int vk_av1_start_frame(AVCodecContext          *avctx,
             .render_and_frame_size_different = frame_header->render_and_frame_size_different,
             .allow_screen_content_tools = frame_header->allow_screen_content_tools,
             .is_filter_switchable = frame_header->is_filter_switchable,
-            .force_integer_mv = frame_header->force_integer_mv,
+            .force_integer_mv = pic->force_integer_mv,
             .frame_size_override_flag = frame_header->frame_size_override_flag,
             .buffer_removal_time_present_flag = frame_header->buffer_removal_time_present_flag,
             .allow_intrabc = frame_header->allow_intrabc,
-- 
2.43.0

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix force_integer_mv value
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix " Mark Thompson
@ 2024-04-30  6:03   ` Xiang, Haihao
  0 siblings, 0 replies; 9+ messages in thread
From: Xiang, Haihao @ 2024-04-30  6:03 UTC (permalink / raw)
  To: ffmpeg-devel

On Sa, 2024-04-27 at 16:30 +0100, Mark Thompson wrote:
> ---
>  libavcodec/vaapi_av1.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c
> index 1f563483b9..f61bf63098 100644
> --- a/libavcodec/vaapi_av1.c
> +++ b/libavcodec/vaapi_av1.c
> @@ -220,7 +220,7 @@ static int vaapi_av1_start_frame(AVCodecContext *avctx,
>              .error_resilient_mode         = frame_header-
> >error_resilient_mode,
>              .disable_cdf_update           = frame_header->disable_cdf_update,
>              .allow_screen_content_tools   = frame_header-
> >allow_screen_content_tools,
> -            .force_integer_mv             = frame_header->force_integer_mv,
> +            .force_integer_mv             = s->cur_frame.force_integer_mv,
>              .allow_intrabc                = frame_header->allow_intrabc,
>              .use_superres                 = frame_header->use_superres,
>              .allow_high_precision_mv      = frame_header-
> >allow_high_precision_mv,

LGTM, vaapi av1 also requires this value instead of the syntax element value.

Thanks
Haihao


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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/6] nvdec_av1: Use av1dec force_integer_mv value
  2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 4/6] nvdec_av1: " Mark Thompson
@ 2024-05-06 17:19   ` Timo Rothenpieler
  2024-05-06 19:30     ` Mark Thompson
  0 siblings, 1 reply; 9+ messages in thread
From: Timo Rothenpieler @ 2024-05-06 17:19 UTC (permalink / raw)
  To: ffmpeg-devel

On 27.04.2024 17:30, Mark Thompson wrote:
> ---
>   libavcodec/nvdec_av1.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c
> index 4efa420e66..8a46db1ed5 100644
> --- a/libavcodec/nvdec_av1.c
> +++ b/libavcodec/nvdec_av1.c
> @@ -106,9 +106,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
>               .show_frame                   = frame_header->show_frame,
>               .disable_cdf_update           = frame_header->disable_cdf_update,
>               .allow_screen_content_tools   = frame_header->allow_screen_content_tools,
> -            .force_integer_mv             = frame_header->force_integer_mv ||
> -                                            frame_header->frame_type == AV1_FRAME_INTRA_ONLY ||
> -                                            frame_header->frame_type == AV1_FRAME_KEY,
> +            .force_integer_mv             = s->cur_frame.force_integer_mv;

that ";" should be a ","

Works fine with that fixed.

>               .coded_denom                  = frame_header->coded_denom,
>               .allow_intrabc                = frame_header->allow_intrabc,
>               .allow_high_precision_mv      = frame_header->allow_high_precision_mv,

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/6] nvdec_av1: Use av1dec force_integer_mv value
  2024-05-06 17:19   ` Timo Rothenpieler
@ 2024-05-06 19:30     ` Mark Thompson
  0 siblings, 0 replies; 9+ messages in thread
From: Mark Thompson @ 2024-05-06 19:30 UTC (permalink / raw)
  To: ffmpeg-devel

On 06/05/2024 18:19, Timo Rothenpieler wrote:
> On 27.04.2024 17:30, Mark Thompson wrote:
>> ---
>>   libavcodec/nvdec_av1.c | 4 +---
>>   1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c
>> index 4efa420e66..8a46db1ed5 100644
>> --- a/libavcodec/nvdec_av1.c
>> +++ b/libavcodec/nvdec_av1.c
>> @@ -106,9 +106,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
>>               .show_frame                   = frame_header->show_frame,
>>               .disable_cdf_update           = frame_header->disable_cdf_update,
>>               .allow_screen_content_tools   = frame_header->allow_screen_content_tools,
>> -            .force_integer_mv             = frame_header->force_integer_mv ||
>> -                                            frame_header->frame_type == AV1_FRAME_INTRA_ONLY ||
>> -                                            frame_header->frame_type == AV1_FRAME_KEY,
>> +            .force_integer_mv             = s->cur_frame.force_integer_mv;
> 
> that ";" should be a ","
> 
> Works fine with that fixed.

Urgh, thank you for testing and catching that.

Fixed and pushed the set (with approval from Lynne).

Thanks,

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-05-06 19:30 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-27 15:30 [FFmpeg-devel] [PATCH 1/6] av1dec: Add force_integer_mv derived field for decoder use Mark Thompson
2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 2/6] dxva2_av1: Use av1dec force_integer_mv value Mark Thompson
2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 3/6] vdpau_av1: " Mark Thompson
2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 4/6] nvdec_av1: " Mark Thompson
2024-05-06 17:19   ` Timo Rothenpieler
2024-05-06 19:30     ` Mark Thompson
2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 5/6] vaapi_av1: Fix " Mark Thompson
2024-04-30  6:03   ` Xiang, Haihao
2024-04-27 15:30 ` [FFmpeg-devel] [PATCH 6/6] vulkan_av1: " Mark Thompson

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