* [FFmpeg-devel] [PATCH] avfilter/vf_amf_common: implement reset_sar options
@ 2025-02-10 13:34 Timo Rothenpieler
2025-02-10 13:44 ` Gyan Doshi
0 siblings, 1 reply; 3+ messages in thread
From: Timo Rothenpieler @ 2025-02-10 13:34 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Timo Rothenpieler
Implements the new reset_sar option from a28dc06869fe1f98c07e42f9b0a411d2744ff7d7.
While at it, this also moves assigning the output sar on the outlink
from the filter frame function to config props.
---
libavfilter/vf_amf_common.c | 18 ++++++++++++------
libavfilter/vf_amf_common.h | 1 +
libavfilter/vf_vpp_amf.c | 5 +++--
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/libavfilter/vf_amf_common.c b/libavfilter/vf_amf_common.c
index fbf364eac1..75339c9f01 100644
--- a/libavfilter/vf_amf_common.c
+++ b/libavfilter/vf_amf_common.c
@@ -158,11 +158,6 @@ int amf_filter_filter_frame(AVFilterLink *inlink, AVFrame *in)
goto fail;
}
- if (inlink->sample_aspect_ratio.num) {
- outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio);
- } else
- outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
-
av_frame_free(&in);
return ff_filter_frame(outlink, out);
fail:
@@ -274,6 +269,7 @@ int amf_init_filter_config(AVFilterLink *outlink, enum AVPixelFormat *in_format)
enum AVPixelFormat out_sw_format = ctx->format;
FilterLink *inl = ff_filter_link(inlink);
FilterLink *outl = ff_filter_link(outlink);
+ double w_adj = 1.0;
if ((err = ff_scale_eval_dimensions(avctx,
ctx->w_expr, ctx->h_expr,
@@ -281,8 +277,11 @@ int amf_init_filter_config(AVFilterLink *outlink, enum AVPixelFormat *in_format)
&ctx->width, &ctx->height)) < 0)
return err;
+ if (ctx->reset_sar && inlink->sample_aspect_ratio.num)
+ w_adj = (double)inlink->sample_aspect_ratio.num / inlink->sample_aspect_ratio.den;
+
ff_scale_adjust_dimensions(inlink, &ctx->width, &ctx->height,
- ctx->force_original_aspect_ratio, ctx->force_divisible_by, 1.0);
+ ctx->force_original_aspect_ratio, ctx->force_divisible_by, w_adj);
av_buffer_unref(&ctx->amf_device_ref);
av_buffer_unref(&ctx->hwframes_in_ref);
@@ -343,6 +342,13 @@ int amf_init_filter_config(AVFilterLink *outlink, enum AVPixelFormat *in_format)
outlink->w = ctx->width;
outlink->h = ctx->height;
+ if (ctx->reset_sar)
+ outlink->sample_aspect_ratio = (AVRational){1, 1};
+ else if (inlink->sample_aspect_ratio.num)
+ outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio);
+ else
+ outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
+
hwframes_out->width = outlink->w;
hwframes_out->height = outlink->h;
diff --git a/libavfilter/vf_amf_common.h b/libavfilter/vf_amf_common.h
index c4b5ba659a..d0a0214978 100644
--- a/libavfilter/vf_amf_common.h
+++ b/libavfilter/vf_amf_common.h
@@ -48,6 +48,7 @@ typedef struct AMFFilterContext {
char *format_str;
int force_original_aspect_ratio;
int force_divisible_by;
+ int reset_sar;
AMFComponent *component;
AVBufferRef *amf_device_ref;
diff --git a/libavfilter/vf_vpp_amf.c b/libavfilter/vf_vpp_amf.c
index 87bd68074f..2d9df50632 100644
--- a/libavfilter/vf_vpp_amf.c
+++ b/libavfilter/vf_vpp_amf.c
@@ -216,11 +216,12 @@ static const AVOption vpp_amf_options[] = {
{ "smpte428", "SMPTE428", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE428 }, 0, 0, FLAGS, "trc" },
{ "arib-std-b67", "ARIB_STD_B67", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_COLOR_TRANSFER_CHARACTERISTIC_ARIB_STD_B67 }, 0, 0, FLAGS, "trc" },
- { "force_original_aspect_ratio", "decrease or increase w/h if necessary to keep the original AR", OFFSET(force_original_aspect_ratio), AV_OPT_TYPE_INT, { .i64 = 0}, 0, 2, FLAGS, "force_oar" },
+ { "force_original_aspect_ratio", "decrease or increase w/h if necessary to keep the original AR", OFFSET(force_original_aspect_ratio), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 2, FLAGS, "force_oar" },
{ "disable", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, 0, 0, FLAGS, "force_oar" },
{ "decrease", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 1 }, 0, 0, FLAGS, "force_oar" },
{ "increase", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = 2 }, 0, 0, FLAGS, "force_oar" },
- { "force_divisible_by", "enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used", OFFSET(force_divisible_by), AV_OPT_TYPE_INT, { .i64 = 1}, 1, 256, FLAGS },
+ { "force_divisible_by", "enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used", OFFSET(force_divisible_by), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, 256, FLAGS },
+ { "reset_sar", "reset SAR to 1 and scale to square pixels if scaling proportionally", OFFSET(reset_sar), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS },
{ NULL },
};
--
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] 3+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avfilter/vf_amf_common: implement reset_sar options
2025-02-10 13:34 [FFmpeg-devel] [PATCH] avfilter/vf_amf_common: implement reset_sar options Timo Rothenpieler
@ 2025-02-10 13:44 ` Gyan Doshi
2025-02-10 13:47 ` Timo Rothenpieler
0 siblings, 1 reply; 3+ messages in thread
From: Gyan Doshi @ 2025-02-10 13:44 UTC (permalink / raw)
To: ffmpeg-devel
On 2025-02-10 07:04 pm, Timo Rothenpieler wrote:
> Implements the new reset_sar option from a28dc06869fe1f98c07e42f9b0a411d2744ff7d7.
Already posted a patch. Will push soon.
Regards,
Gyan
_______________________________________________
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] 3+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avfilter/vf_amf_common: implement reset_sar options
2025-02-10 13:44 ` Gyan Doshi
@ 2025-02-10 13:47 ` Timo Rothenpieler
0 siblings, 0 replies; 3+ messages in thread
From: Timo Rothenpieler @ 2025-02-10 13:47 UTC (permalink / raw)
To: ffmpeg-devel
On 10/02/2025 14:44, Gyan Doshi wrote:
>
>
> On 2025-02-10 07:04 pm, Timo Rothenpieler wrote:
>> Implements the new reset_sar option from
>> a28dc06869fe1f98c07e42f9b0a411d2744ff7d7.
>
> Already posted a patch. Will push soon.
Ah, you might wanna look into moving the sar assignment as well then,
cause assigning it on the outlink on every frame, but not in config
props, seems wrong.
_______________________________________________
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] 3+ messages in thread
end of thread, other threads:[~2025-02-10 13:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-10 13:34 [FFmpeg-devel] [PATCH] avfilter/vf_amf_common: implement reset_sar options Timo Rothenpieler
2025-02-10 13:44 ` Gyan Doshi
2025-02-10 13:47 ` Timo Rothenpieler
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