Re: [FFmpeg-devel] [PATCH] avformat/mov: Add support for still image AVIF parsing

2022-04-23 Thread Gyan Doshi
Removed some trailing whitespace, edited commit msg and pushed as 
499e245b856733c3bbcd3ba23b406729343ed5fe


Consider adding avif to extensions in the AVInputFormat

Regards,
Gyan

On 2022-04-23 12:29 am, Vignesh Venkatasubramanian wrote:

Add support for parsing AVIF still images. This patches supports
AVIF still images that have exactly 1 item (i.e.) no alpha channel.
Essentially, we will have to parse the "iloc" box and populate
the mov index.

With this patch, we can decode still AVIF images like so:
ffmpeg -i image.avif image.png

Partially fixes trac ticket #7621

Signed-off-by: Vignesh Venkatasubramanian 
---
  libavformat/isom.h |   1 +
  libavformat/mov.c  | 141 +
  2 files changed, 142 insertions(+)

diff --git a/libavformat/isom.h b/libavformat/isom.h
index 5caf42b15d..02d681e3ae 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -315,6 +315,7 @@ typedef struct MOVContext {
  int have_read_mfra_size;
  uint32_t mfra_size;
  uint32_t max_stts_delta;
+int is_still_picture_avif;
  } MOVContext;
  
  int ff_mp4_read_descr_len(AVIOContext *pb);

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 6c847de164..39feb9fba6 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1136,6 +1136,7 @@ static int mov_read_ftyp(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
  c->isom = 1;
  av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char 
*)&type);
  av_dict_set(&c->fc->metadata, "major_brand", type, 0);
+c->is_still_picture_avif = !strncmp(type, "avif", 4);
  minor_ver = avio_rb32(pb); /* minor version */
  av_dict_set_int(&c->fc->metadata, "minor_version", minor_ver, 0);
  
@@ -7430,6 +7431,145 @@ static int mov_read_SAND(MOVContext *c, AVIOContext *pb, MOVAtom atom)

  return 0;
  }
  
+static int rb_size(AVIOContext *pb, uint64_t* value, int size)

+{
+if (size == 0)
+*value = 0;
+else if (size == 1)
+*value = avio_r8(pb);
+else if (size == 2)
+*value = avio_rb16(pb);
+else if (size == 4)
+*value = avio_rb32(pb);
+else if (size == 8)
+*value = avio_rb64(pb);
+else
+return -1;
+return size;
+}
+
+static int mov_read_iloc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
+{
+int version, offset_size, length_size, base_offset_size, index_size;
+int item_count, extent_count;
+uint64_t base_offset, extent_offset, extent_length;
+uint8_t value;
+AVStream *st;
+MOVStreamContext *sc;
+
+if (!c->is_still_picture_avif) {
+// * For non-avif, we simply ignore the iloc box.
+// * For animated avif, we don't care about the iloc box as all the
+//   necessary information can be found in the moov box.
+return 0;
+}
+
+if (c->fc->nb_streams) {
+av_log(c->fc, AV_LOG_INFO, "Duplicate iloc box found\n");
+return 0;
+}
+
+st = avformat_new_stream(c->fc, NULL);
+if (!st)
+return AVERROR(ENOMEM);
+st->id = c->fc->nb_streams;
+sc = av_mallocz(sizeof(MOVStreamContext));
+if (!sc)
+return AVERROR(ENOMEM);
+
+st->priv_data = sc;
+st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+st->codecpar->codec_id = AV_CODEC_ID_AV1;
+sc->ffindex = st->index;
+c->trak_index = st->index;
+st->avg_frame_rate.num = st->avg_frame_rate.den = 1;
+st->time_base.num = st->time_base.den = 1;
+st->nb_frames = 1;
+sc->time_scale = 1;
+sc = st->priv_data;
+sc->pb = c->fc->pb;
+sc->pb_is_copied = 1;
+
+version = avio_r8(pb);
+avio_rb24(pb);  // flags.
+
+value = avio_r8(pb);
+offset_size = (value >> 4) & 0xF;
+length_size = value & 0xF;
+value = avio_r8(pb);
+base_offset_size = (value >> 4) & 0xF;
+index_size = !version ? 0 : (value & 0xF);
+if (index_size) {
+av_log(c->fc, AV_LOG_ERROR, "iloc: index_size != 0 not supported.\n");
+return AVERROR_PATCHWELCOME;
+}
+item_count = (version < 2) ? avio_rb16(pb) : avio_rb32(pb);
+if (item_count > 1) {
+// For still AVIF images, we only support one item. Second item will
+// generally be found for AVIF images with alpha channel. We don't
+// support them as of now.
+av_log(c->fc, AV_LOG_ERROR, "iloc: item_count > 1 not supported.\n");
+return AVERROR_PATCHWELCOME;
+}
+
+// Populate the necessary fields used by mov_build_index.
+sc->stsc_count = item_count;
+sc->stsc_data = av_malloc_array(item_count, sizeof(*sc->stsc_data));
+if (!sc->stsc_data)
+return AVERROR(ENOMEM);
+sc->stsc_data[0].first = 1;
+sc->stsc_data[0].count = 1;
+sc->stsc_data[0].id = 1;
+sc->chunk_count = item_count;
+sc->chunk_offsets =
+av_malloc_array(item_count, sizeof(*sc->chunk_offsets));
+if (!sc->chunk_offsets)
+return AVERROR(ENOMEM);
+sc->sample_count = item_count;
+sc->sample_sizes =
+av_ma

Re: [FFmpeg-devel] [PATCH] libavformat/mov.c: Added configuration flag to skip cover art atom while opening mov parser

2022-04-23 Thread Hendrik Leppkes
On Fri, Apr 22, 2022 at 4:30 PM Malviya, Janpriya
 wrote:
>
> Hi Derek,
>
> We require to add this configuration for the following reasons :
> - We have our own pipeline mechanism to download & fetch audio data from 
> source.
> - We are using ffmpeg with custom IO callbacks for parsing & decoding 
> fragmentedMP4 streams.
> - Inside the custom IO read operation we are asking to download data from 
> upstream elements.
> - If any stream contains a cover page ( e.g. image file ) then the custom io 
> read call-back issues a read request with large buffer size ( which is 
> obvious ) . On the other side , our source downloader is unable to handle a 
> data request of  that size because of buffer constraints.
> - To integrate FFmpeg with our architecture , we added this flag to issue 
> skip for cover page from parsing
>
> Let me know what you think.

This sounds like you are solving a very specific problem in your
environment, coming from your software stack and setup, in a generic
library.
I fail to see the use for anyone else.

- Hendrik
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] libavcodec/videotoolboxenc.c: add option to hevc encoder to prioritize speed.

2022-04-23 Thread Simone Karin Lehmann


> Am 22.04.2022 um 18:52 schrieb Thilo Borgmann :
> 
> 

> For that version I get:
> 
> libavcodec/videotoolboxenc.c:1153:39: error: use of undeclared identifier 
> 'kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality'
>  
> kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
>  ^
> 
> Should require some OSX version dependency via #if'ery somewhere sane. Like
> #if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
> 
> or similar.

If I understand the code correctly, it seems to me to be bettter to add 
kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality to the compat_keys 
struct. 

And digging through the SDK headers I’ve found that this property is available 
for h264 and ProRes encoders too. But since the SDK states that this property 
defaults to FALSE for h264 and hevc and to TRUE for ProRes I didn’t add it to 
the COMMON_OPTIONS but to each encoder options, because I didn’t want to make a 
regression to the ProRes or enabling it by default for h264 and hevc. Hope 
that’s ok.

Here’s the resulting patch

Regards
Simone


Signed-off-by: Simone Karin Lehmann mailto:sim...@lisanet.de>>
---
libavcodec/videotoolboxenc.c | 18 ++
1 file changed, 18 insertions(+)

diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 270496b7a7..462d2a8fb6 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -100,6 +100,7 @@ static struct{

CFStringRef kVTCompressionPropertyKey_RealTime;
CFStringRef kVTCompressionPropertyKey_TargetQualityForAlpha;
+CFStringRef kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality;

CFStringRef 
kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder;
CFStringRef 
kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder;
@@ -161,6 +162,8 @@ static void loadVTEncSymbols(){
GET_SYM(kVTCompressionPropertyKey_RealTime, "RealTime");
GET_SYM(kVTCompressionPropertyKey_TargetQualityForAlpha,
"TargetQualityForAlpha");
+GET_SYM(kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
+"PrioritizeEncodingSpeedOverQuality");

GET_SYM(kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder,
"EnableHardwareAcceleratedVideoEncoder");
@@ -237,6 +240,7 @@ typedef struct VTEncContext {
int allow_sw;
int require_sw;
double alpha_quality;
+int prio_speed;

bool flushing;
int has_b_frames;
@@ -1146,6 +1150,16 @@ static int vtenc_create_encoder(AVCodecContext   *avctx,
return AVERROR_EXTERNAL;
}

+// prioritize speed over quality
+if (vtctx->prio_speed) {
+status = VTSessionSetProperty(vtctx->session,
+  
compat_keys.kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
+  kCFBooleanTrue);
+if (status) {
+av_log(avctx, AV_LOG_WARNING, "PrioritizeEncodingSpeedOverQuality 
property is not supported on this device. Ignoring.\n");
+}
+}
+
if ((vtctx->codec_id == AV_CODEC_ID_H264 || vtctx->codec_id == 
AV_CODEC_ID_HEVC)
&& max_rate > 0) {
bytes_per_second_value = max_rate >> 3;
@@ -2711,6 +2725,7 @@ static const AVOption h264_options[] = {
{ "ac","CABAC entropy coding", 0, AV_OPT_TYPE_CONST, { .i64 = VT_CABAC 
}, INT_MIN, INT_MAX, VE, "coder" },

{ "a53cc", "Use A53 Closed Captions (if available)", OFFSET(a53_cc), 
AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, VE },
+{ "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },

COMMON_OPTIONS
{ NULL },
@@ -2745,6 +2760,7 @@ static const AVOption hevc_options[] = {
{ "main10",   "Main10 Profile",   0, AV_OPT_TYPE_CONST, { .i64 = 
HEVC_PROF_MAIN10 }, INT_MIN, INT_MAX, VE, "profile" },

{ "alpha_quality", "Compression quality for the alpha channel", 
OFFSET(alpha_quality), AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0.0, 1.0, VE },
+{ "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },

COMMON_OPTIONS
{ NULL },
@@ -2785,6 +2801,8 @@ static const AVOption prores_options[] = {
{ "", "ProRes ",   0, 
AV_OPT_TYPE_CONST, { .i64 = FF_PROFILE_PRORES_ },INT_MIN, INT_MAX, 
VE, "profile" },
{ "xq",   "ProRes  XQ",0, 
AV_OPT_TYPE_CONST, { .i64 = FF_PROFILE_PRORES_XQ },  INT_MIN, INT_MAX, 
VE, "profile" },

+  { "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, VE },
+
COMMON_OPTIONS
{ NULL },
};
-- 
2.32.0 (Apple Git-132)



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or e

Re: [FFmpeg-devel] [PATCH 2/2] lavfi: Add blurriness filter

2022-04-23 Thread Thilo Borgmann

Hi,


v3 updated to current HEAD.

Named blurdetect filter now.
Minor fixes on allocation and removed -f option.



Please make this per plane filtering, with default to measure only first
plane.


done in v4.

(Will add Changelog, version.h and fate test once the filter itself looks ok)


Ping.


v5 according to IRC comments.

-ThiloFrom be0bed07d36d957caf328f91a6cd0402c27fb6b4 Mon Sep 17 00:00:00 2001
From: Thilo Borgmann 
Date: Sat, 23 Apr 2022 15:29:36 +0200
Subject: [PATCH v5 2/2] lavfi: Add blurdetect filter

---
 doc/filters.texi|  52 +
 libavfilter/Makefile|   1 +
 libavfilter/allfilters.c|   1 +
 libavfilter/vf_blurdetect.c | 395 
 4 files changed, 449 insertions(+)
 create mode 100644 libavfilter/vf_blurdetect.c

diff --git a/doc/filters.texi b/doc/filters.texi
index 636c80dbff..c6d4537804 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -7990,6 +7990,58 @@ tblend=all_mode=grainextract
 @subsection Commands
 This filter supports same @ref{commands} as options.
 
+@anchor{blurdetect}
+@section blurdetect
+
+Determines blurriness of frames without altering the input frames.
+
+Based on Marziliano, Pina, et al. "A no-reference perceptual blur metric."
+Allows for a block-based abbreviation.
+
+The filter accepts the following options:
+
+@table @option
+@item low
+@item high
+Set low and high threshold values used by the Canny thresholding
+algorithm.
+
+The high threshold selects the "strong" edge pixels, which are then
+connected through 8-connectivity with the "weak" edge pixels selected
+by the low threshold.
+
+@var{low} and @var{high} threshold values must be chosen in the range
+[0,1], and @var{low} should be lesser or equal to @var{high}.
+
+Default value for @var{low} is @code{20/255}, and default value for @var{high}
+is @code{50/255}.
+
+@item radius
+Define the radius to search around an edge pixel for local maxima.
+
+@item block_pct
+Determine blurriness only for the most significant blocks, given in percentage.
+
+@item block_width
+Determine blurriness for blocks of width @var{block_width}. If set to any 
value smaller 1, no blocks are used and the whole image is processed as one no 
matter of @var{block_height}.
+
+@item block_height
+Determine blurriness for blocks of height @var{block_height}. If set to any 
value smaller 1, no blocks are used and the whole image is processed as one no 
matter of @var{block_width}.
+
+@item planes
+Set planes to filter. Default is first only.
+@end table
+
+@subsection Examples
+
+@itemize
+@item
+Determine blur for 80% of most significant 32x32 blocks:
+@example
+blurdetect=block_width=32:block_height=32:block_pct=80
+@end example
+@end itemize
+
 @section bm3d
 
 Denoise frames using Block-Matching 3D algorithm.
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 006e59b2bd..6332a6f799 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -195,6 +195,7 @@ OBJS-$(CONFIG_BLACKDETECT_FILTER)+= 
vf_blackdetect.o
 OBJS-$(CONFIG_BLACKFRAME_FILTER) += vf_blackframe.o
 OBJS-$(CONFIG_BLEND_FILTER)  += vf_blend.o framesync.o
 OBJS-$(CONFIG_BLEND_VULKAN_FILTER)   += vf_blend_vulkan.o framesync.o 
vulkan.o vulkan_filter.o
+OBJS-$(CONFIG_BLURDETECT_FILTER) += vf_blurdetect.o edge_common.o
 OBJS-$(CONFIG_BM3D_FILTER)   += vf_bm3d.o framesync.o
 OBJS-$(CONFIG_BOXBLUR_FILTER)+= vf_boxblur.o boxblur.o
 OBJS-$(CONFIG_BOXBLUR_OPENCL_FILTER) += vf_avgblur_opencl.o opencl.o \
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
index 9fbaaacf47..2667d153ad 100644
--- a/libavfilter/allfilters.c
+++ b/libavfilter/allfilters.c
@@ -183,6 +183,7 @@ extern const AVFilter ff_vf_blackdetect;
 extern const AVFilter ff_vf_blackframe;
 extern const AVFilter ff_vf_blend;
 extern const AVFilter ff_vf_blend_vulkan;
+extern const AVFilter ff_vf_blurdetect;
 extern const AVFilter ff_vf_bm3d;
 extern const AVFilter ff_vf_boxblur;
 extern const AVFilter ff_vf_boxblur_opencl;
diff --git a/libavfilter/vf_blurdetect.c b/libavfilter/vf_blurdetect.c
new file mode 100644
index 00..c74f45ccb8
--- /dev/null
+++ b/libavfilter/vf_blurdetect.c
@@ -0,0 +1,395 @@
+/*
+ * Copyright (c) 2021 Thilo Borgmann 
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+

Re: [FFmpeg-devel] [PATCH] libavcodec/videotoolboxenc.c: add option to hevc encoder to prioritize speed.

2022-04-23 Thread Thilo Borgmann

Am 23.04.22 um 14:31 schrieb Simone Karin Lehmann:




Am 22.04.2022 um 18:52 schrieb Thilo Borgmann :





For that version I get:

libavcodec/videotoolboxenc.c:1153:39: error: use of undeclared identifier 
'kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality'
  
kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
  ^

Should require some OSX version dependency via #if'ery somewhere sane. Like
#if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070

or similar.


If I understand the code correctly, it seems to me to be bettter to add 
kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality to the compat_keys 
struct.

And digging through the SDK headers I’ve found that this property is available 
for h264 and ProRes encoders too. But since the SDK states that this property 
defaults to FALSE for h264 and hevc and to TRUE for ProRes I didn’t add it to 
the COMMON_OPTIONS but to each encoder options, because I didn’t want to make a 
regression to the ProRes or enabling it by default for h264 and hevc. Hope 
that’s ok.

Here’s the resulting patch

Regards
Simone


Signed-off-by: Simone Karin Lehmann mailto:sim...@lisanet.de>>
---
libavcodec/videotoolboxenc.c | 18 ++
1 file changed, 18 insertions(+)

diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 270496b7a7..462d2a8fb6 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -100,6 +100,7 @@ static struct{

 CFStringRef kVTCompressionPropertyKey_RealTime;
 CFStringRef kVTCompressionPropertyKey_TargetQualityForAlpha;
+CFStringRef kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality;

 CFStringRef 
kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder;
 CFStringRef 
kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder;
@@ -161,6 +162,8 @@ static void loadVTEncSymbols(){
 GET_SYM(kVTCompressionPropertyKey_RealTime, "RealTime");
 GET_SYM(kVTCompressionPropertyKey_TargetQualityForAlpha,
 "TargetQualityForAlpha");
+GET_SYM(kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
+"PrioritizeEncodingSpeedOverQuality");

 GET_SYM(kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder,
 "EnableHardwareAcceleratedVideoEncoder");


If that works I'd be happy. Does not apply for me anymore (on HEAD), though?

-Thilo



@@ -237,6 +240,7 @@ typedef struct VTEncContext {
 int allow_sw;
 int require_sw;
 double alpha_quality;
+int prio_speed;

 bool flushing;
 int has_b_frames;
@@ -1146,6 +1150,16 @@ static int vtenc_create_encoder(AVCodecContext   *avctx,
 return AVERROR_EXTERNAL;
 }

+// prioritize speed over quality
+if (vtctx->prio_speed) {
+status = VTSessionSetProperty(vtctx->session,
+  
compat_keys.kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
+  kCFBooleanTrue);
+if (status) {
+av_log(avctx, AV_LOG_WARNING, "PrioritizeEncodingSpeedOverQuality 
property is not supported on this device. Ignoring.\n");
+}
+}
+
 if ((vtctx->codec_id == AV_CODEC_ID_H264 || vtctx->codec_id == 
AV_CODEC_ID_HEVC)
 && max_rate > 0) {
 bytes_per_second_value = max_rate >> 3;
@@ -2711,6 +2725,7 @@ static const AVOption h264_options[] = {
 { "ac","CABAC entropy coding", 0, AV_OPT_TYPE_CONST, { .i64 = VT_CABAC }, 
INT_MIN, INT_MAX, VE, "coder" },

 { "a53cc", "Use A53 Closed Captions (if available)", OFFSET(a53_cc), 
AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, VE },
+{ "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },

 COMMON_OPTIONS
 { NULL },
@@ -2745,6 +2760,7 @@ static const AVOption hevc_options[] = {
 { "main10",   "Main10 Profile",   0, AV_OPT_TYPE_CONST, { .i64 = HEVC_PROF_MAIN10 }, 
INT_MIN, INT_MAX, VE, "profile" },

 { "alpha_quality", "Compression quality for the alpha channel", 
OFFSET(alpha_quality), AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0.0, 1.0, VE },
+{ "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },

 COMMON_OPTIONS
 { NULL },
@@ -2785,6 +2801,8 @@ static const AVOption prores_options[] = {
 { "", "ProRes ",   0, AV_OPT_TYPE_CONST, 
{ .i64 = FF_PROFILE_PRORES_ },INT_MIN, INT_MAX, VE, "profile" },
 { "xq",   "ProRes  XQ",0, AV_OPT_TYPE_CONST, 
{ .i64 = FF_PROFILE_PRORES_XQ },  INT_MIN, INT_MAX, VE, "profile" },

+  { "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, VE },
+
 COMMON_OPTIONS
 { NULL },
};


___
ffmpeg-devel mailin

Re: [FFmpeg-devel] [PATCH] libavcodec/videotoolboxenc.c: add option to hevc encoder to prioritize speed.

2022-04-23 Thread Simone Karin Lehmann


> Am 23.04.2022 um 17:07 schrieb Thilo Borgmann :
> 
> 
> If that works I'd be happy. Does not apply for me anymore (on HEAD), though?
> 
> 

hhmm, the patch applies for me on current HEAD. I’ve tested it a few moments 
ago on a fresh downloaded git snapshot.

Maybe a former patch from me still there in your source tree? 

Simone
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] FFmpeg 5.0 LTS vs 5.1 LTS

2022-04-23 Thread Michael Niedermayer
Hi all

Do people prefer that 5.0 becomes LTS or the next (5.1) ?
Or something else ?

Thanks

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Nations do behave wisely once they have exhausted all other alternatives. 
-- Abba Eban


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] FFmpeg 5.0 LTS vs 5.1 LTS

2022-04-23 Thread James Almer

On 4/23/2022 1:36 PM, Michael Niedermayer wrote:

Hi all

Do people prefer that 5.0 becomes LTS or the next (5.1) ?
Or something else ?

Thanks


5.0 lacks the new channel layout API, and making that an LTS will give 
projects less incentive to migrate, so IMO, 5.1 (or a newer one) should 
be the LTS.

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v15 4/4] avformat/image2: add Jpeg XL as image2 format

2022-04-23 Thread Lynne
17 Apr 2022, 15:22 by leo.i...@gmail.com:

> This commit adds support to libavformat for muxing
> and demuxing Jpeg XL images as image2 streams.
> ---
>  MAINTAINERS|   1 +
>  libavformat/Makefile   |   1 +
>  libavformat/allformats.c   |   1 +
>  libavformat/img2.c |   1 +
>  libavformat/img2dec.c  |  20 ++
>  libavformat/img2enc.c  |   6 +-
>  libavformat/jpegxl_probe.c | 393 +
>  libavformat/jpegxl_probe.h |  32 +++
>  libavformat/mov.c  |   1 +
>  9 files changed, 453 insertions(+), 3 deletions(-)
>  create mode 100644 libavformat/jpegxl_probe.c
>  create mode 100644 libavformat/jpegxl_probe.h
>

Patchset pushed, thanks!
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] FFmpeg 5.0 LTS vs 5.1 LTS

2022-04-23 Thread Neal Gompa
On Sat, Apr 23, 2022 at 12:40 PM James Almer  wrote:
>
> On 4/23/2022 1:36 PM, Michael Niedermayer wrote:
> > Hi all
> >
> > Do people prefer that 5.0 becomes LTS or the next (5.1) ?
> > Or something else ?
> >
> > Thanks
>
> 5.0 lacks the new channel layout API, and making that an LTS will give
> projects less incentive to migrate, so IMO, 5.1 (or a newer one) should
> be the LTS.

I thought 5.x was the LTS series already. Maybe I misunderstood, but I
expected that the 5.x series does not break API/ABI, so minor versions
of the 5.0 major series would be part of the same LTS and supported
for that timeframe.

At least, that was my impression when I started bringing ffmpeg into Fedora...




--
真実はいつも一つ!/ Always, there's only one truth!
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] FFmpeg 5.0 LTS vs 5.1 LTS

2022-04-23 Thread James Almer



On 4/23/2022 3:08 PM, Neal Gompa wrote:

On Sat, Apr 23, 2022 at 12:40 PM James Almer  wrote:


On 4/23/2022 1:36 PM, Michael Niedermayer wrote:

Hi all

Do people prefer that 5.0 becomes LTS or the next (5.1) ?
Or something else ?

Thanks


5.0 lacks the new channel layout API, and making that an LTS will give
projects less incentive to migrate, so IMO, 5.1 (or a newer one) should
be the LTS.


I thought 5.x was the LTS series already. Maybe I misunderstood, but I
expected that the 5.x series does not break API/ABI, so minor versions
of the 5.0 major series would be part of the same LTS and supported
for that timeframe.


No 5.x release will break existing API/ABI, but all can and most likely 
will introduce new API. So if you target 5.0, you can use 5.x just fine.


As an example, 5.1 will be the first with a new channel layout API in 
lavu, which will of course live alongside the old (now marked as 
deprecated) until a major bump takes place in a couple years.




At least, that was my impression when I started bringing ffmpeg into Fedora...




--
真実はいつも一つ!/ Always, there's only one truth!
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] FFmpeg 5.0 LTS vs 5.1 LTS

2022-04-23 Thread Neal Gompa
On Sat, Apr 23, 2022 at 2:15 PM James Almer  wrote:
>
>
>
> On 4/23/2022 3:08 PM, Neal Gompa wrote:
> > On Sat, Apr 23, 2022 at 12:40 PM James Almer  wrote:
> >>
> >> On 4/23/2022 1:36 PM, Michael Niedermayer wrote:
> >>> Hi all
> >>>
> >>> Do people prefer that 5.0 becomes LTS or the next (5.1) ?
> >>> Or something else ?
> >>>
> >>> Thanks
> >>
> >> 5.0 lacks the new channel layout API, and making that an LTS will give
> >> projects less incentive to migrate, so IMO, 5.1 (or a newer one) should
> >> be the LTS.
> >
> > I thought 5.x was the LTS series already. Maybe I misunderstood, but I
> > expected that the 5.x series does not break API/ABI, so minor versions
> > of the 5.0 major series would be part of the same LTS and supported
> > for that timeframe.
>
> No 5.x release will break existing API/ABI, but all can and most likely
> will introduce new API. So if you target 5.0, you can use 5.x just fine.
>

So, that aligns with my expectations.

> As an example, 5.1 will be the first with a new channel layout API in
> lavu, which will of course live alongside the old (now marked as
> deprecated) until a major bump takes place in a couple years.
>

So then, to me, it makes sense to shift the LTS to 5.1 as part of the
LTS 5.x cycle. It gets people upgrading and satisfies people's general
expectation here (including mine).



-- 
真実はいつも一つ!/ Always, there's only one truth!
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 0/2] Jpeg XL version.h bump

2022-04-23 Thread Leo Izen
I missed the version.h bump when rebasing the Jpeg XL
patchset onto master. This should properly bump the minor
library versions.

Leo Izen (2):
  avcodec/version.h: bump version for Jpeg XL
  avformat/version.h: bump version for Jpeg XL

 libavcodec/version.h  | 2 +-
 libavformat/version.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

-- 
2.36.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 1/2] avcodec/version.h: bump version for Jpeg XL

2022-04-23 Thread Leo Izen
The version.h bump got missed with the Jpeg XL patchset. This should
bump the minor version in accordance with the contributing guidelines.
---
 libavcodec/version.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/version.h b/libavcodec/version.h
index 26ee41eb1f..735c8b813c 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 
 #include "version_major.h"
 
-#define LIBAVCODEC_VERSION_MINOR  26
+#define LIBAVCODEC_VERSION_MINOR  27
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
-- 
2.36.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 2/2] avformat/version.h: bump version for Jpeg XL

2022-04-23 Thread Leo Izen
The version.h bump got missed with the Jpeg XL patchset. This should
bump the minor version in accordance with the contributing guidelines.
---
 libavformat/version.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/version.h b/libavformat/version.h
index d8fc959f19..a8385d1a7b 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,7 +31,7 @@
 
 #include "version_major.h"
 
-#define LIBAVFORMAT_VERSION_MINOR  22
+#define LIBAVFORMAT_VERSION_MINOR  23
 #define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
-- 
2.36.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-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH 0/2] Jpeg XL version.h bump

2022-04-23 Thread Jan Ekström
On Sat, Apr 23, 2022 at 10:39 PM Leo Izen  wrote:
>
> I missed the version.h bump when rebasing the Jpeg XL
> patchset onto master. This should properly bump the minor
> library versions.
>
> Leo Izen (2):
>   avcodec/version.h: bump version for Jpeg XL
>   avformat/version.h: bump version for Jpeg XL
>
>  libavcodec/version.h  | 2 +-
>  libavformat/version.h | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>

LGTM.

Will apply with the dot-h removed and modifying the wording to "bump
minor version".

Jan
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v2 1/5] lavfi: generalize colorspace coefficent helpers

2022-04-23 Thread Niklas Haas
Merged in 2cb0cebd11eb90dfcccac5c258af1003bd4f17d2

On Tue, 19 Apr 2022 14:48:06 +0200 Niklas Haas  wrote:
> Merging this series at the end of the week if I don't get any additional
> feedback.
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] libavcodec/videotoolboxenc.c: add option to hevc encoder to prioritize speed.

2022-04-23 Thread Thilo Borgmann

Am 23.04.22 um 17:42 schrieb Simone Karin Lehmann:




Am 23.04.2022 um 17:07 schrieb Thilo Borgmann :


If that works I'd be happy. Does not apply for me anymore (on HEAD), though?




hhmm, the patch applies for me on current HEAD. I’ve tested it a few moments 
ago on a fresh downloaded git snapshot.

Maybe a former patch from me still there in your source tree?


Also cloned into a new one, but corrupt @75:


Thilos-Mac-mini:github borgmann$ git clone git://source.ffmpeg.org/ffmpeg.git 
FFmpegNew
Cloning into 'FFmpegNew'...
remote: Enumerating objects: 662389, done.
remote: Counting objects: 100% (662389/662389), done.
remote: Compressing objects: 100% (132367/132367), done.
remote: Total 662389 (delta 536006), reused 653667 (delta 528727)
Receiving objects: 100% (662389/662389), 130.66 MiB | 6.20 MiB/s, done.
Resolving deltas: 100% (536006/536006), done.
Checking out files: 100% (7728/7728), done.
Thilos-Mac-mini:github borgmann$ cd FFmpegNew/
Thilos-Mac-mini:FFmpegNew borgmann$ git am ../patches/vte/
0001-selfmade.patch
Re_ [FFmpeg-devel] [PATCH] libavcodec_videotoolboxenc.c_ add option to hevc encoder 
to prioritize speed. - Simone Karin Lehmann  - 2022-04-21 
1742.eml
Re_ [FFmpeg-devel] [PATCH] libavcodec_videotoolboxenc.c_ add option to hevc encoder 
to prioritize speed. - Simone Karin Lehmann  - 2022-04-23 
1431.eml
Re_ [FFmpeg-devel] [PATCH] libavcodec_videotoolboxenc.c_ add option to hevc encoder 
to prioritize speed. - Simone Karin Lehmann  - 2022-04-23 
1431.patch
Thilos-Mac-mini:FFmpegNew borgmann$ git am ../patches/vte/Re_\ \[FFmpeg-devel\]\ 
\[PATCH\]\ libavcodec_videotoolboxenc.c_\ add\ option\ to\ hevc\ encoder\ to\ 
prioritize\ speed.\ -\ Simone\ Karin\ Lehmann\ \\ -\ 
2022-04-23\ 1431.eml
Applying: libavcodec/videotoolboxenc.c: add option to hevc encoder to 
prioritize speed.
error: corrupt patch at line 75
Patch failed at 0001 libavcodec/videotoolboxenc.c: add option to hevc encoder 
to prioritize speed.
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Thilos-Mac-mini:FFmpegNew borgmann$ git log -1
commit ce23794b91031162da365a0d389fd0330cdb9486 (HEAD -> master, origin/master, 
origin/HEAD)
Author: Paul B Mahol 
Date:   Sat Apr 23 19:09:30 2022 +0200

avfilter/avf_showspectrum: filter support all channel counts



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 1/6] libavutil/wchar_filename.h: Add whcartoutf8, wchartoansi and utf8toansi

2022-04-23 Thread Nil Admirari
These functions are going to be used in libavformat/avisynth.c
and fftools/cmdutils.c remove MAX_PATH limit.
---
 libavutil/wchar_filename.h | 52 ++
 1 file changed, 52 insertions(+)

diff --git a/libavutil/wchar_filename.h b/libavutil/wchar_filename.h
index 90f08245..5fdd2ff0 100644
--- a/libavutil/wchar_filename.h
+++ b/libavutil/wchar_filename.h
@@ -1,3 +1,4 @@
+
 /*
  * This file is part of FFmpeg.
  *
@@ -40,6 +41,57 @@ static inline int utf8towchar(const char *filename_utf8, 
wchar_t **filename_w)
 MultiByteToWideChar(CP_UTF8, 0, filename_utf8, -1, *filename_w, num_chars);
 return 0;
 }
+
+av_warn_unused_result
+static inline int wchartocp(unsigned int code_page, const wchar_t *filename_w,
+char **filename)
+{
+DWORD flags = code_page == CP_UTF8 ? MB_ERR_INVALID_CHARS : 0;
+int num_chars = WideCharToMultiByte(code_page, flags, filename_w, -1,
+NULL, 0, NULL, NULL);
+if (num_chars <= 0) {
+*filename = NULL;
+return 0;
+}
+*filename = av_calloc(num_chars, sizeof(char));
+if (!*filename) {
+errno = ENOMEM;
+return -1;
+}
+WideCharToMultiByte(code_page, flags, filename_w, -1,
+*filename, num_chars, NULL, NULL);
+return 0;
+}
+
+av_warn_unused_result
+static inline int wchartoutf8(const wchar_t *filename_w, char **filename)
+{
+return wchartocp(CP_UTF8, filename_w, filename);
+}
+
+av_warn_unused_result
+static inline int wchartoansi(const wchar_t *filename_w, char **filename)
+{
+return wchartocp(CP_ACP, filename_w, filename);
+}
+
+av_warn_unused_result
+static inline int utf8toansi(const char *filename_utf8, char **filename)
+{
+wchar_t *filename_w = NULL;
+int ret = -1;
+if (utf8towchar(filename_utf8, &filename_w))
+return -1;
+
+if (!filename_w) {
+*filename = NULL;
+return 0;
+}
+
+ret = wchartoansi(filename_w, filename);
+av_free(filename_w);
+return ret;
+}
 #endif
 
 #endif /* AVUTIL_WCHAR_FILENAME_H */
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 5/6] fftools: Enable long path support on Windows (fixes #8885)

2022-04-23 Thread Nil Admirari
Newer versions of Windows (Windows 10 1607 and newer) can support path
names longer than MAX_PATH (260 characters). To take advantage of that, an
application needs to opt in, by including a small manifest as a resource.

Application must be prepared to handle filenames greater than MAX_PATH.
Additionally, the path length limitation is only lifted for file APIs that
pass paths as wchar_t. Therefore, the preceding patches have refactored a
few remaining cases where:
1. filename length was restricted to MAX_PATH
2. files were opened using ANSI functions.

On older versions of Windows, the newly added manifest has no effect.
---
 fftools/Makefile |  5 +
 fftools/fftools.manifest | 10 ++
 fftools/manifest.rc  |  3 +++
 3 files changed, 18 insertions(+)
 create mode 100644 fftools/fftools.manifest
 create mode 100644 fftools/manifest.rc

diff --git a/fftools/Makefile b/fftools/Makefile
index 81ad6c4f..105ae5cc 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -15,6 +15,11 @@ OBJS-ffmpeg +=  \
 fftools/ffmpeg_mux.o\
 fftools/ffmpeg_opt.o\
 
+# Windows resource files
+OBJS-ffmpeg-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+OBJS-ffplay-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+OBJS-ffprobe-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+
 define DOFFTOOL
 OBJS-$(1) += fftools/cmdutils.o fftools/opt_common.o fftools/$(1).o 
$(OBJS-$(1)-yes)
 $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1))
diff --git a/fftools/fftools.manifest b/fftools/fftools.manifest
new file mode 100644
index ..30b7d8fe
--- /dev/null
+++ b/fftools/fftools.manifest
@@ -0,0 +1,10 @@
+
+
+
+  
+  
+http://schemas.microsoft.com/SMI/2016/WindowsSettings";>
+  true
+
+  
+
diff --git a/fftools/manifest.rc b/fftools/manifest.rc
new file mode 100644
index ..e436fa73
--- /dev/null
+++ b/fftools/manifest.rc
@@ -0,0 +1,3 @@
+#include 
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "fftools.manifest"
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 2/6] libavformat/avisynth.c: Remove MAX_PATH limit

2022-04-23 Thread Nil Admirari
---
 libavformat/avisynth.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
index 8ba2bdea..f7bea8c3 100644
--- a/libavformat/avisynth.c
+++ b/libavformat/avisynth.c
@@ -34,6 +34,7 @@
 /* Platform-specific directives. */
 #ifdef _WIN32
   #include "compat/w32dlfcn.h"
+  #include "libavutil/wchar_filename.h"
   #undef EXTERN_C
   #define AVISYNTH_LIB "avisynth"
 #else
@@ -810,8 +811,7 @@ static int avisynth_open_file(AVFormatContext *s)
 AVS_Value arg, val;
 int ret;
 #ifdef _WIN32
-char filename_ansi[MAX_PATH * 4];
-wchar_t filename_wc[MAX_PATH * 4];
+char *filename_ansi = NULL;
 #endif
 
 if (ret = avisynth_context_create(s))
@@ -819,10 +819,12 @@ static int avisynth_open_file(AVFormatContext *s)
 
 #ifdef _WIN32
 /* Convert UTF-8 to ANSI code page */
-MultiByteToWideChar(CP_UTF8, 0, s->url, -1, filename_wc, MAX_PATH * 4);
-WideCharToMultiByte(CP_THREAD_ACP, 0, filename_wc, -1, filename_ansi,
-MAX_PATH * 4, NULL, NULL);
+if (utf8toansi(s->url, &filename_ansi)) {
+ret = AVERROR_UNKNOWN;
+goto fail;
+}
 arg = avs_new_value_string(filename_ansi);
+av_free(filename_ansi);
 #else
 arg = avs_new_value_string(s->url);
 #endif
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 3/6] compat/w32dlfcn.h: Remove MAX_PATH limit and replace LoadLibraryExA with LoadLibraryExW

2022-04-23 Thread Nil Admirari
---
 compat/w32dlfcn.h | 78 ++-
 1 file changed, 64 insertions(+), 14 deletions(-)

diff --git a/compat/w32dlfcn.h b/compat/w32dlfcn.h
index 52a94efa..2284ac7a 100644
--- a/compat/w32dlfcn.h
+++ b/compat/w32dlfcn.h
@@ -25,6 +25,30 @@
 #if (_WIN32_WINNT < 0x0602) || HAVE_WINRT
 #include "libavutil/wchar_filename.h"
 #endif
+
+static inline wchar_t *get_module_filename(HMODULE module)
+{
+wchar_t *path = NULL, *new_path = NULL;
+DWORD path_size = 0, path_len = 0;
+
+do {
+path_size = path_size ? 2 * path_size : MAX_PATH;
+new_path = av_realloc_array(path, path_size, sizeof *path);
+if (!new_path) {
+av_free(path);
+return NULL;
+}
+path = new_path;
+path_len = GetModuleFileNameW(module, path, path_size);
+} while (path_len && path_size <= 32768 && path_size <= path_len);
+
+if (!path_len) {
+av_free(path);
+return NULL;
+}
+return path;
+}
+
 /**
  * Safe function used to open dynamic libs. This attempts to improve program 
security
  * by removing the current directory from the dll search path. Only dll's 
found in the
@@ -34,29 +58,53 @@
  */
 static inline HMODULE win32_dlopen(const char *name)
 {
+wchar_t *name_w = NULL;
+if (utf8towchar(name, &name_w))
+name_w = NULL;
 #if _WIN32_WINNT < 0x0602
 // Need to check if KB2533623 is available
 if (!GetProcAddress(GetModuleHandleW(L"kernel32.dll"), 
"SetDefaultDllDirectories")) {
 HMODULE module = NULL;
-wchar_t *path = NULL, *name_w = NULL;
-DWORD pathlen;
-if (utf8towchar(name, &name_w))
+wchar_t *path = NULL, *new_path = NULL;
+DWORD pathlen, pathsize, namelen;
+if (!name_w)
 goto exit;
-path = (wchar_t *)av_calloc(MAX_PATH, sizeof(wchar_t));
+namelen = wcslen(name_w);
 // Try local directory first
-pathlen = GetModuleFileNameW(NULL, path, MAX_PATH);
-pathlen = wcsrchr(path, '\\') - path;
-if (pathlen == 0 || pathlen + wcslen(name_w) + 2 > MAX_PATH)
+path = get_module_filename(NULL);
+if (!path)
 goto exit;
-path[pathlen] = '\\';
+new_path = wcsrchr(path, '\\');
+if (!new_path)
+goto exit;
+pathlen = new_path - path;
+pathsize = pathlen + namelen + 2;
+new_path = av_realloc_array(path, pathsize, sizeof *path);
+if (!new_path)
+goto exit;
+path = new_path;
 wcscpy(path + pathlen + 1, name_w);
 module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
 if (module == NULL) {
 // Next try System32 directory
-pathlen = GetSystemDirectoryW(path, MAX_PATH);
-if (pathlen == 0 || pathlen + wcslen(name_w) + 2 > MAX_PATH)
+pathlen = GetSystemDirectoryW(path, pathsize);
+if (!pathlen)
 goto exit;
-path[pathlen] = '\\';
+// Buffer is not enough in two cases:
+// 1. system directory + \ + module name
+// 2. system directory even without module name.
+if (pathlen + namelen + 2 > pathsize) {
+pathsize = pathlen + namelen + 2;
+new_path = av_realloc_array(path, pathsize, sizeof *path);
+if (!new_path)
+goto exit;
+path = new_path;
+// Query again to handle case #2.
+pathlen = GetSystemDirectoryW(path, pathsize);
+if (!pathlen)
+goto exit;
+}
+path[pathlen] = L'\\';
 wcscpy(path + pathlen + 1, name_w);
 module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
 }
@@ -73,15 +121,17 @@ exit:
 #   define LOAD_LIBRARY_SEARCH_SYSTEM320x0800
 #endif
 #if HAVE_WINRT
-wchar_t *name_w = NULL;
 int ret;
-if (utf8towchar(name, &name_w))
+if (!name_w)
 return NULL;
 ret = LoadPackagedLibrary(name_w, 0);
 av_free(name_w);
 return ret;
 #else
-return LoadLibraryExA(name, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | 
LOAD_LIBRARY_SEARCH_SYSTEM32);
+/* filename may be be in CP_ACP */
+if (!name_w)
+return LoadLibraryExA(name, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR 
| LOAD_LIBRARY_SEARCH_SYSTEM32);
+return LoadLibraryExW(name_w, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | 
LOAD_LIBRARY_SEARCH_SYSTEM32);
 #endif
 }
 #define dlopen(name, flags) win32_dlopen(name)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 6/6] fftools: Set active code page to UTF-8 on Windows

2022-04-23 Thread Nil Admirari
Starting with Windows 1903 applications can set active code page to UTF-8
with the application manifest. It improves path name compatibility
with dependencies that use char* pathnames internally, but whose code page
has already been changed to UTF-8 via a manifest (e.g. AviSynth).

On older versions of Windows, changes in the manifest have no effect.
---
 fftools/fftools.manifest | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fftools/fftools.manifest b/fftools/fftools.manifest
index 30b7d8fe..d1ac1e4e 100644
--- a/fftools/fftools.manifest
+++ b/fftools/fftools.manifest
@@ -3,8 +3,10 @@
 
   
   
-http://schemas.microsoft.com/SMI/2016/WindowsSettings";>
+http://schemas.microsoft.com/SMI/2016/WindowsSettings";
+ 
xmlns:ws2019="http://schemas.microsoft.com/SMI/2019/WindowsSettings";>
   true
+  UTF-8
 
   
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v10 4/6] fftools/cmdutils.c: Remove MAX_PATH limit

2022-04-23 Thread Nil Admirari
---
 fftools/cmdutils.c | 32 ++--
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
index 5d7cdc3e..af070c19 100644
--- a/fftools/cmdutils.c
+++ b/fftools/cmdutils.c
@@ -37,6 +37,7 @@
 #include "libswresample/swresample.h"
 #include "libavutil/avassert.h"
 #include "libavutil/avstring.h"
+#include "libavutil/avutil.h"
 #include "libavutil/channel_layout.h"
 #include "libavutil/display.h"
 #include "libavutil/mathematics.h"
@@ -50,6 +51,7 @@
 #include "opt_common.h"
 #ifdef _WIN32
 #include 
+#include "compat/w32dlfcn.h"
 #endif
 
 AVDictionary *sws_dict;
@@ -812,6 +814,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
 {
 FILE *f = NULL;
 int i;
+#if HAVE_GETMODULEHANDLE && defined(_WIN32)
+char *datadir = NULL;
+#endif
 const char *base[3] = { getenv("FFMPEG_DATADIR"),
 getenv("HOME"),
 FFMPEG_DATADIR, };
@@ -821,19 +826,31 @@ FILE *get_preset_file(char *filename, size_t 
filename_size,
 f = fopen(filename, "r");
 } else {
 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
-char datadir[MAX_PATH], *ls;
+wchar_t *datadir_w = get_module_filename(NULL);
 base[2] = NULL;
 
-if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, 
sizeof(datadir) - 1))
+if (wchartoutf8(datadir_w, &datadir))
+datadir = NULL;
+av_free(datadir_w);
+
+if (datadir)
 {
-for (ls = datadir; ls < datadir + strlen(datadir); ls++)
+char *ls;
+for (ls = datadir; *ls; ls++)
 if (*ls == '\\') *ls = '/';
 
 if (ls = strrchr(datadir, '/'))
 {
-*ls = 0;
-strncat(datadir, "/ffpresets",  sizeof(datadir) - 1 - 
strlen(datadir));
-base[2] = datadir;
+ptrdiff_t datadir_len = ls - datadir;
+size_t desired_size = datadir_len + strlen("/ffpresets") + 1;
+char *new_datadir = av_realloc_array(
+datadir, desired_size, sizeof *datadir);
+if (new_datadir) {
+datadir = new_datadir;
+datadir[datadir_len] = 0;
+strncat(datadir, "/ffpresets",  desired_size - 1 - 
datadir_len);
+base[2] = datadir;
+}
 }
 }
 #endif
@@ -853,6 +870,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
 }
 }
 
+#if HAVE_GETMODULEHANDLE && defined(_WIN32)
+av_free(datadir);
+#endif
 return f;
 }
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH] libavfilter/version: bump minor version for icc{gen, detect}

2022-04-23 Thread Jan Ekström
Missed during that patch set's life time.
---
 libavfilter/version.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavfilter/version.h b/libavfilter/version.h
index 547b3b4e7d..9add1658e5 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -31,7 +31,7 @@
 
 #include "version_major.h"
 
-#define LIBAVFILTER_VERSION_MINOR  35
+#define LIBAVFILTER_VERSION_MINOR  36
 #define LIBAVFILTER_VERSION_MICRO 100
 
 
-- 
2.36.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-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] libavfilter/version: bump minor version for icc{gen, detect}

2022-04-23 Thread Niklas Haas
LGTM

On Sat, 23 Apr 2022 23:10:51 +0300 Jan Ekström  wrote:
> Missed during that patch set's life time.
> ---
>  libavfilter/version.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavfilter/version.h b/libavfilter/version.h
> index 547b3b4e7d..9add1658e5 100644
> --- a/libavfilter/version.h
> +++ b/libavfilter/version.h
> @@ -31,7 +31,7 @@
>  
>  #include "version_major.h"
>  
> -#define LIBAVFILTER_VERSION_MINOR  35
> +#define LIBAVFILTER_VERSION_MINOR  36
>  #define LIBAVFILTER_VERSION_MICRO 100
>  
>  
> -- 
> 2.36.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-requ...@ffmpeg.org with subject "unsubscribe".
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] libavcodec/videotoolboxenc.c: add option to hevc encoder to prioritize speed.

2022-04-23 Thread Simone Karin Lehmann


> Am 23.04.2022 um 21:56 schrieb Thilo Borgmann :
> 
> Am 23.04.22 um 17:42 schrieb Simone Karin Lehmann:
>>> Am 23.04.2022 um 17:07 schrieb Thilo Borgmann :
>>> 
>>> 
>>> If that works I'd be happy. Does not apply for me anymore (on HEAD), though?
>>> 
>>> 
>> hhmm, the patch applies for me on current HEAD. I’ve tested it a few moments 
>> ago on a fresh downloaded git snapshot.
>> Maybe a former patch from me still there in your source tree?
> 
> Also cloned into a new one, but corrupt @75:
> 

Weird. Apple Mail seems to somehow change the encoding of the mail and I 
couldn’t get the *.eml to apply correctly too. Never encountered that before. 

I've attached the patch as a file. Hope that’s ok on this mailing list.
Sorry for the inconvenience.

Simone



0001-add-options-to-h264-hevc-and-prores-encoders-to-prio.patch
Description: Binary data
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 2/6] libavformat/avisynth.c: Remove MAX_PATH limit

2022-04-23 Thread Nil Admirari
---
 libavformat/avisynth.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c
index 8ba2bdea..f7bea8c3 100644
--- a/libavformat/avisynth.c
+++ b/libavformat/avisynth.c
@@ -34,6 +34,7 @@
 /* Platform-specific directives. */
 #ifdef _WIN32
   #include "compat/w32dlfcn.h"
+  #include "libavutil/wchar_filename.h"
   #undef EXTERN_C
   #define AVISYNTH_LIB "avisynth"
 #else
@@ -810,8 +811,7 @@ static int avisynth_open_file(AVFormatContext *s)
 AVS_Value arg, val;
 int ret;
 #ifdef _WIN32
-char filename_ansi[MAX_PATH * 4];
-wchar_t filename_wc[MAX_PATH * 4];
+char *filename_ansi = NULL;
 #endif
 
 if (ret = avisynth_context_create(s))
@@ -819,10 +819,12 @@ static int avisynth_open_file(AVFormatContext *s)
 
 #ifdef _WIN32
 /* Convert UTF-8 to ANSI code page */
-MultiByteToWideChar(CP_UTF8, 0, s->url, -1, filename_wc, MAX_PATH * 4);
-WideCharToMultiByte(CP_THREAD_ACP, 0, filename_wc, -1, filename_ansi,
-MAX_PATH * 4, NULL, NULL);
+if (utf8toansi(s->url, &filename_ansi)) {
+ret = AVERROR_UNKNOWN;
+goto fail;
+}
 arg = avs_new_value_string(filename_ansi);
+av_free(filename_ansi);
 #else
 arg = avs_new_value_string(s->url);
 #endif
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 4/6] fftools/cmdutils.c: Remove MAX_PATH limit

2022-04-23 Thread Nil Admirari
---
 fftools/cmdutils.c | 31 +--
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
index 5d7cdc3e..d42bb04e 100644
--- a/fftools/cmdutils.c
+++ b/fftools/cmdutils.c
@@ -50,6 +50,7 @@
 #include "opt_common.h"
 #ifdef _WIN32
 #include 
+#include "compat/w32dlfcn.h"
 #endif
 
 AVDictionary *sws_dict;
@@ -812,6 +813,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
 {
 FILE *f = NULL;
 int i;
+#if HAVE_GETMODULEHANDLE && defined(_WIN32)
+char *datadir = NULL;
+#endif
 const char *base[3] = { getenv("FFMPEG_DATADIR"),
 getenv("HOME"),
 FFMPEG_DATADIR, };
@@ -821,19 +825,31 @@ FILE *get_preset_file(char *filename, size_t 
filename_size,
 f = fopen(filename, "r");
 } else {
 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
-char datadir[MAX_PATH], *ls;
+wchar_t *datadir_w = get_module_filename(NULL);
 base[2] = NULL;
 
-if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, 
sizeof(datadir) - 1))
+if (wchartoansi(datadir_w, &datadir))
+datadir = NULL;
+av_free(datadir_w);
+
+if (datadir)
 {
-for (ls = datadir; ls < datadir + strlen(datadir); ls++)
+char *ls;
+for (ls = datadir; *ls; ls++)
 if (*ls == '\\') *ls = '/';
 
 if (ls = strrchr(datadir, '/'))
 {
-*ls = 0;
-strncat(datadir, "/ffpresets",  sizeof(datadir) - 1 - 
strlen(datadir));
-base[2] = datadir;
+ptrdiff_t datadir_len = ls - datadir;
+size_t desired_size = datadir_len + strlen("/ffpresets") + 1;
+char *new_datadir = av_realloc_array(
+datadir, desired_size, sizeof *datadir);
+if (new_datadir) {
+datadir = new_datadir;
+datadir[datadir_len] = 0;
+strncat(datadir, "/ffpresets",  desired_size - 1 - 
datadir_len);
+base[2] = datadir;
+}
 }
 }
 #endif
@@ -853,6 +869,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
 }
 }
 
+#if HAVE_GETMODULEHANDLE && defined(_WIN32)
+av_free(datadir);
+#endif
 return f;
 }
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 1/6] libavutil/wchar_filename.h: Add whcartoutf8, wchartoansi and utf8toansi

2022-04-23 Thread Nil Admirari
These functions are going to be used in libavformat/avisynth.c
and fftools/cmdutils.c to remove MAX_PATH limit.
---
 libavutil/wchar_filename.h | 51 ++
 1 file changed, 51 insertions(+)

diff --git a/libavutil/wchar_filename.h b/libavutil/wchar_filename.h
index 90f08245..c0e5d47e 100644
--- a/libavutil/wchar_filename.h
+++ b/libavutil/wchar_filename.h
@@ -40,6 +40,57 @@ static inline int utf8towchar(const char *filename_utf8, 
wchar_t **filename_w)
 MultiByteToWideChar(CP_UTF8, 0, filename_utf8, -1, *filename_w, num_chars);
 return 0;
 }
+
+av_warn_unused_result
+static inline int wchartocp(unsigned int code_page, const wchar_t *filename_w,
+char **filename)
+{
+DWORD flags = code_page == CP_UTF8 ? MB_ERR_INVALID_CHARS : 0;
+int num_chars = WideCharToMultiByte(code_page, flags, filename_w, -1,
+NULL, 0, NULL, NULL);
+if (num_chars <= 0) {
+*filename = NULL;
+return 0;
+}
+*filename = av_calloc(num_chars, sizeof(char));
+if (!*filename) {
+errno = ENOMEM;
+return -1;
+}
+WideCharToMultiByte(code_page, flags, filename_w, -1,
+*filename, num_chars, NULL, NULL);
+return 0;
+}
+
+av_warn_unused_result
+static inline int wchartoutf8(const wchar_t *filename_w, char **filename)
+{
+return wchartocp(CP_UTF8, filename_w, filename);
+}
+
+av_warn_unused_result
+static inline int wchartoansi(const wchar_t *filename_w, char **filename)
+{
+return wchartocp(CP_ACP, filename_w, filename);
+}
+
+av_warn_unused_result
+static inline int utf8toansi(const char *filename_utf8, char **filename)
+{
+wchar_t *filename_w = NULL;
+int ret = -1;
+if (utf8towchar(filename_utf8, &filename_w))
+return -1;
+
+if (!filename_w) {
+*filename = NULL;
+return 0;
+}
+
+ret = wchartoansi(filename_w, filename);
+av_free(filename_w);
+return ret;
+}
 #endif
 
 #endif /* AVUTIL_WCHAR_FILENAME_H */
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 3/6] compat/w32dlfcn.h: Remove MAX_PATH limit and replace LoadLibraryExA with LoadLibraryExW

2022-04-23 Thread Nil Admirari
---
 compat/w32dlfcn.h | 78 ++-
 1 file changed, 64 insertions(+), 14 deletions(-)

diff --git a/compat/w32dlfcn.h b/compat/w32dlfcn.h
index 52a94efa..2284ac7a 100644
--- a/compat/w32dlfcn.h
+++ b/compat/w32dlfcn.h
@@ -25,6 +25,30 @@
 #if (_WIN32_WINNT < 0x0602) || HAVE_WINRT
 #include "libavutil/wchar_filename.h"
 #endif
+
+static inline wchar_t *get_module_filename(HMODULE module)
+{
+wchar_t *path = NULL, *new_path = NULL;
+DWORD path_size = 0, path_len = 0;
+
+do {
+path_size = path_size ? 2 * path_size : MAX_PATH;
+new_path = av_realloc_array(path, path_size, sizeof *path);
+if (!new_path) {
+av_free(path);
+return NULL;
+}
+path = new_path;
+path_len = GetModuleFileNameW(module, path, path_size);
+} while (path_len && path_size <= 32768 && path_size <= path_len);
+
+if (!path_len) {
+av_free(path);
+return NULL;
+}
+return path;
+}
+
 /**
  * Safe function used to open dynamic libs. This attempts to improve program 
security
  * by removing the current directory from the dll search path. Only dll's 
found in the
@@ -34,29 +58,53 @@
  */
 static inline HMODULE win32_dlopen(const char *name)
 {
+wchar_t *name_w = NULL;
+if (utf8towchar(name, &name_w))
+name_w = NULL;
 #if _WIN32_WINNT < 0x0602
 // Need to check if KB2533623 is available
 if (!GetProcAddress(GetModuleHandleW(L"kernel32.dll"), 
"SetDefaultDllDirectories")) {
 HMODULE module = NULL;
-wchar_t *path = NULL, *name_w = NULL;
-DWORD pathlen;
-if (utf8towchar(name, &name_w))
+wchar_t *path = NULL, *new_path = NULL;
+DWORD pathlen, pathsize, namelen;
+if (!name_w)
 goto exit;
-path = (wchar_t *)av_calloc(MAX_PATH, sizeof(wchar_t));
+namelen = wcslen(name_w);
 // Try local directory first
-pathlen = GetModuleFileNameW(NULL, path, MAX_PATH);
-pathlen = wcsrchr(path, '\\') - path;
-if (pathlen == 0 || pathlen + wcslen(name_w) + 2 > MAX_PATH)
+path = get_module_filename(NULL);
+if (!path)
 goto exit;
-path[pathlen] = '\\';
+new_path = wcsrchr(path, '\\');
+if (!new_path)
+goto exit;
+pathlen = new_path - path;
+pathsize = pathlen + namelen + 2;
+new_path = av_realloc_array(path, pathsize, sizeof *path);
+if (!new_path)
+goto exit;
+path = new_path;
 wcscpy(path + pathlen + 1, name_w);
 module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
 if (module == NULL) {
 // Next try System32 directory
-pathlen = GetSystemDirectoryW(path, MAX_PATH);
-if (pathlen == 0 || pathlen + wcslen(name_w) + 2 > MAX_PATH)
+pathlen = GetSystemDirectoryW(path, pathsize);
+if (!pathlen)
 goto exit;
-path[pathlen] = '\\';
+// Buffer is not enough in two cases:
+// 1. system directory + \ + module name
+// 2. system directory even without module name.
+if (pathlen + namelen + 2 > pathsize) {
+pathsize = pathlen + namelen + 2;
+new_path = av_realloc_array(path, pathsize, sizeof *path);
+if (!new_path)
+goto exit;
+path = new_path;
+// Query again to handle case #2.
+pathlen = GetSystemDirectoryW(path, pathsize);
+if (!pathlen)
+goto exit;
+}
+path[pathlen] = L'\\';
 wcscpy(path + pathlen + 1, name_w);
 module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
 }
@@ -73,15 +121,17 @@ exit:
 #   define LOAD_LIBRARY_SEARCH_SYSTEM320x0800
 #endif
 #if HAVE_WINRT
-wchar_t *name_w = NULL;
 int ret;
-if (utf8towchar(name, &name_w))
+if (!name_w)
 return NULL;
 ret = LoadPackagedLibrary(name_w, 0);
 av_free(name_w);
 return ret;
 #else
-return LoadLibraryExA(name, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | 
LOAD_LIBRARY_SEARCH_SYSTEM32);
+/* filename may be be in CP_ACP */
+if (!name_w)
+return LoadLibraryExA(name, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR 
| LOAD_LIBRARY_SEARCH_SYSTEM32);
+return LoadLibraryExW(name_w, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | 
LOAD_LIBRARY_SEARCH_SYSTEM32);
 #endif
 }
 #define dlopen(name, flags) win32_dlopen(name)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 5/6] fftools: Enable long path support on Windows (fixes #8885)

2022-04-23 Thread Nil Admirari
Newer versions of Windows (Windows 10 1607 and newer) can support path
names longer than MAX_PATH (260 characters). To take advantage of that, an
application needs to opt in, by including a small manifest as a resource.

Application must be prepared to handle filenames greater than MAX_PATH.
Additionally, the path length limitation is only lifted for file APIs that
pass paths as wchar_t. Therefore, the preceding patches have refactored a
few remaining cases where:
1. filename length was restricted to MAX_PATH
2. files were opened using ANSI functions.

On older versions of Windows, the newly added manifest has no effect.
---
 fftools/Makefile |  5 +
 fftools/fftools.manifest | 10 ++
 fftools/manifest.rc  |  3 +++
 3 files changed, 18 insertions(+)
 create mode 100644 fftools/fftools.manifest
 create mode 100644 fftools/manifest.rc

diff --git a/fftools/Makefile b/fftools/Makefile
index 81ad6c4f..105ae5cc 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -15,6 +15,11 @@ OBJS-ffmpeg +=  \
 fftools/ffmpeg_mux.o\
 fftools/ffmpeg_opt.o\
 
+# Windows resource files
+OBJS-ffmpeg-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+OBJS-ffplay-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+OBJS-ffprobe-$(HAVE_GNU_WINDRES) += fftools/manifest.o
+
 define DOFFTOOL
 OBJS-$(1) += fftools/cmdutils.o fftools/opt_common.o fftools/$(1).o 
$(OBJS-$(1)-yes)
 $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1))
diff --git a/fftools/fftools.manifest b/fftools/fftools.manifest
new file mode 100644
index ..30b7d8fe
--- /dev/null
+++ b/fftools/fftools.manifest
@@ -0,0 +1,10 @@
+
+
+
+  
+  
+http://schemas.microsoft.com/SMI/2016/WindowsSettings";>
+  true
+
+  
+
diff --git a/fftools/manifest.rc b/fftools/manifest.rc
new file mode 100644
index ..e436fa73
--- /dev/null
+++ b/fftools/manifest.rc
@@ -0,0 +1,3 @@
+#include 
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "fftools.manifest"
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v11 6/6] fftools: Set active code page to UTF-8 on Windows

2022-04-23 Thread Nil Admirari
Starting with Windows 1903, applications can set active code page to UTF-8
in the application manifest. It improves path name compatibility
with dependencies that use char* pathnames internally, but whose code page
has already been changed to UTF-8 with a manifest (e.g. AviSynth).

On older versions of Windows, changes in the manifest have no effect.
---
 fftools/fftools.manifest | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fftools/fftools.manifest b/fftools/fftools.manifest
index 30b7d8fe..d1ac1e4e 100644
--- a/fftools/fftools.manifest
+++ b/fftools/fftools.manifest
@@ -3,8 +3,10 @@
 
   
   
-http://schemas.microsoft.com/SMI/2016/WindowsSettings";>
+http://schemas.microsoft.com/SMI/2016/WindowsSettings";
+ 
xmlns:ws2019="http://schemas.microsoft.com/SMI/2019/WindowsSettings";>
   true
+  UTF-8
 
   
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v9 1/6] libavutil/wchar_filename.h: Add whcartoutf8, wchartoansi and utf8toansi

2022-04-23 Thread nil-admirari
> However while reviewing this, I noticed a preexisting issue regarding the 
> av_fopen_utf8 function. This patchset extends the use of that function 
> into fftools, which isn't great given the issue...

Reverted back to fopen().

> The other question is whether it's tolerable to use more non-installed 
> headers (like libavutil/wchar_filename.h) in fftools. (I'd like to have 
> this point confirmed with Anton before landing the patchset.)

Currently the header consist entirely of static inline functions. If it's not 
OK to use it here,
please suggest a better place for these functions.

> We don't generally use 'const' like this in ffmpeg; we use 'const' where 
> it makes a functional difference (i.e. on the type that pointers point 
> at), but not for plain scalar values (neither parameters nor local 
> variables).

Removed const from everywhere except pointer arguments.

> I think this actually would be more correct to use CP_ACP, not 
> CP_THREAD_ACP.

Changed to CP_ACP.

New version of the patch: 
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-April/295569.html.



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v9 2/6] libavformat/avisynth.c: Remove MAX_PATH limit

2022-04-23 Thread nil-admirari
> This looks ok to me, but as mentioned in the other patch, I think CP_ACP 
> actually would be more correct than the current CP_THREAD_ACP 

utf8toansi was changed to use CP_ACP in 
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-April/295569.html, so avisynth.c 
now uses CP_ACP as well.



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v9 4/6] fftools/cmdutils.c: Remove MAX_PATH limit and replace fopen with av_fopen_utf8

2022-04-23 Thread nil-admirari
> > +#include "compat/w32dlfcn.h"

> This adds a dependency on nonpublic headers - which I think can be 
> tolerated as it's only a build-time issue, and fftools are currently built 
> as part of the rest of the ffmpeg build anyway.

Currently the header consist entirely of static inline functions and macros.
If it's not OK to use it here, please suggest a better place for 
get_module_filename().

> > const char *base[3] = { getenv("FFMPEG_DATADIR"),
> > getenv("HOME"),
>
> Hmm, I guess neither of these are commonly set on Windows - otherwise this 
> would suddenly change to interpret generic environment variables as UTF8.
>
> ...
>
> As mentioned elsewhere, I realized that av_fopen_utf8 is problematic, but 
> that's an orthogonal issue, and the issue is already preexisting, and it's 
> used for a fairly marginal feature here, so I guess that can be tolerated 
> too (and if the root cause is fixed, this gets taken care of at the same 
> time too).

Reverted back to fopen().



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v9 5/6] fftools: Enable long path support on Windows (fixes #8885)

2022-04-23 Thread nil-admirari
> Does that sound like the correct explanation of the situation?

Yes, thanks. I altered the suggested message a bit.

New version of the patch: 
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-April/295571.html.



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v9 6/6] fftools: Use UTF-8 on Windows

2022-04-23 Thread nil-admirari
> This needs a similar commit message as what I suggested for the previous 
> commit, explaining what it does, when, why, and clarifying that this is a 
> noop for older versions.

Done: https://ffmpeg.org/pipermail/ffmpeg-devel/2022-April/295572.html.

> In particular, it'd be interesting to know why we actually need this; we 
> normally should be doing all the conversions between wchar_t and utf8 
> everywhere anyway, so the exact codepage used shouldn't really matter 
> much? I presume the main noticable benefit is that it improves the path 
> name compatibility with avisynth which is stuck on using CP_ACP pathnames?

Yes, it is primarily due to AviSynth. From 
https://github.com/staxrip/staxrip/wiki/AviSynth-Unicode-support-on-Windows-10-1903:

> All AviSynth apps used by StaxRip have a UTF-8 manifest to enable full 
> Unicode support for AviSynth on Windows 10 1903 or higher:
> ...
> ffmpeg.exe (Patman Mod)
> ...
> On Windows 10 1903 or higher all these apps expect AviSynth scripts to be 
> UTF-8 encoded, ANSI encoded scripts don't work.



___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH] lavf/tls_mbedtls: add support for mbedtls version 3

2022-04-23 Thread Timo Rothenpieler
- certs.h is gone. Only contains test data, and was not used at all.
- config.h is renamed. Was seemingly not used, so can be removed.
- MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE is gone, instead
  MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE will be thrown.
- mbedtls_pk_parse_keyfile now needs to be passed a properly seeded
  RNG. Hence, move the call to after RNG seeding.

Signed-off-by: Timo Rothenpieler 
---
 libavformat/tls_mbedtls.c | 34 ++
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/libavformat/tls_mbedtls.c b/libavformat/tls_mbedtls.c
index 5754d0d018..8503523b6d 100644
--- a/libavformat/tls_mbedtls.c
+++ b/libavformat/tls_mbedtls.c
@@ -19,8 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -130,9 +129,15 @@ static void handle_pk_parse_error(URLContext *h, int ret)
 static void handle_handshake_error(URLContext *h, int ret)
 {
 switch (ret) {
+#if MBEDTLS_VERSION_MAJOR < 3
 case MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE:
 av_log(h, AV_LOG_ERROR, "None of the common ciphersuites is usable. 
Was the local certificate correctly set?\n");
 break;
+#else
+case MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE:
+av_log(h, AV_LOG_ERROR, "TLS handshake failed.\n");
+break;
+#endif
 case MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE:
 av_log(h, AV_LOG_ERROR, "A fatal alert message was received from the 
peer, has the peer a correct certificate?\n");
 break;
@@ -195,16 +200,6 @@ static int tls_open(URLContext *h, const char *uri, int 
flags, AVDictionary **op
 }
 }
 
-// load key file
-if (shr->key_file) {
-if ((ret = mbedtls_pk_parse_keyfile(&tls_ctx->priv_key,
-shr->key_file,
-tls_ctx->priv_key_pw)) != 0) {
-handle_pk_parse_error(h, ret);
-goto fail;
-}
-}
-
 // seed the random number generator
 if ((ret = mbedtls_ctr_drbg_seed(&tls_ctx->ctr_drbg_context,
  mbedtls_entropy_func,
@@ -214,6 +209,21 @@ static int tls_open(URLContext *h, const char *uri, int 
flags, AVDictionary **op
 goto fail;
 }
 
+// load key file
+if (shr->key_file) {
+if ((ret = mbedtls_pk_parse_keyfile(&tls_ctx->priv_key,
+shr->key_file,
+tls_ctx->priv_key_pw
+#if MBEDTLS_VERSION_MAJOR >= 3
+, mbedtls_ctr_drbg_random,
+&tls_ctx->ctr_drbg_context
+#endif
+)) != 0) {
+handle_pk_parse_error(h, ret);
+goto fail;
+}
+}
+
 if ((ret = mbedtls_ssl_config_defaults(&tls_ctx->ssl_config,
shr->listen ? MBEDTLS_SSL_IS_SERVER 
: MBEDTLS_SSL_IS_CLIENT,
MBEDTLS_SSL_TRANSPORT_STREAM,
-- 
2.25.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 01/32] fate/matroska: Use REMUX and TRANSCODE where appropriate

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/matroska.mak | 70 ++---
 1 file changed, 23 insertions(+), 47 deletions(-)

diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak
index 3073b0a061..c9d88975ca 100644
--- a/tests/fate/matroska.mak
+++ b/tests/fate/matroska.mak
@@ -74,26 +74,19 @@ fate-matroska-zero-length-block: CMD = transcode matroska 
$(TARGET_SAMPLES)/mkv/
 # It also tests writing PCM audio in both endiannesses and putting
 # Cues with the same timestamp in the same CuePoint as well as
 # omitting CRC-32 elements when writing Matroska.
-FATE_MATROSKA-$(call ALLYES, FILE_PROTOCOL WAV_DEMUXER PCM_S24LE_DECODER\
- PCM_S24BE_ENCODER MATROSKA_MUXER   \
- MATROSKA_DEMUXER FRAMECRC_MUXER PIPE_PROTOCOL) \
+FATE_MATROSKA-$(call TRANSCODE, PCM_S24BE PCM_S24LE, MATROSKA, WAV_DEMUXER) \
 += fate-matroska-move-cues-to-front
 fate-matroska-move-cues-to-front: CMD = transcode wav 
$(TARGET_SAMPLES)/audio-reference/divertimenti_2ch_96kHz_s24.wav matroska "-map 
0 -map 0 -c:a:0 pcm_s24be -c:a:1 copy -cluster_time_limit 5 -cues_to_front yes 
-metadata_header_padding 7840 -write_crc32 0" "-map 0 -c copy -t 0.1"
 
 # This tests DOVI (reading from MP4 and Matroska and writing to Matroska)
 # as well as writing the Cues at the front (by shifting data) if
 # the initially reserved amount of space turns out to be insufficient.
-FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MOV_DEMUXER   \
-HEVC_DECODER MATROSKA_MUXER \
-MATROSKA_DEMUXER FRAMECRC_MUXER \
-PIPE_PROTOCOL)  \
+FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, MOV_DEMUXER HEVC_DECODER) 
\
+= fate-matroska-dovi-write-config7
 fate-matroska-dovi-write-config7: CMD = transcode mov 
$(TARGET_SAMPLES)/mov/dovi-p7.mp4 matroska "-map 0 -c copy -cues_to_front yes 
-reserve_index_space 40  -metadata_header_padding 64339" "-map 0 -c copy" "" 
"-show_entries stream_side_data_list"
 
-FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL PIPE_PROTOCOL \
-MOV_DEMUXER MATROSKA_DEMUXER \
-HEVC_DECODER AAC_DECODER  \
-MATROSKA_MUXER FRAMECRC_MUXER) \
+FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, MOV_DEMUXER \
+   HEVC_DECODER AAC_DECODER) \
+= fate-matroska-dovi-write-config8
 fate-matroska-dovi-write-config8: CMD = transcode mov 
$(TARGET_SAMPLES)/hevc/dv84.mov matroska "-c copy" "-map 0 -c copy -t 0.4" "" 
"-show_entries stream_side_data_list -select_streams v"
 
@@ -105,10 +98,9 @@ fate-matroska-dovi-write-config8: CMD = transcode mov 
$(TARGET_SAMPLES)/hevc/dv8
 # yet there is an audio packet with the overall lowest pts. output_ts_offset
 # makes the pts of the audio packet, but not the leading video packet negative
 # so that we run into the above issue.)
-FATE_MATROSKA-$(call ALLYES, FILE_PROTOCOL MPEGTS_DEMUXER MPEGVIDEO_PARSER  \
- MPEG2VIDEO_DECODER EXTRACT_EXTRADATA_BSF   \
- MP3FLOAT_DECODER MATROSKA_MUXER\
- MATROSKA_DEMUXER FRAMECRC_MUXER PIPE_PROTOCOL) \
+FATE_MATROSKA-$(call REMUX, MATROSKA, MPEGTS_DEMUXER MPEGVIDEO_PARSER \
+MPEG2VIDEO_DECODER EXTRACT_EXTRADATA_BSF  \
+MP3FLOAT_DECODER) \
 += fate-matroska-avoid-negative-ts
 fate-matroska-avoid-negative-ts: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpeg2/t.mpg matroska "-c copy -ss 1.09 -output_ts_offset 
-60ms" "-c copy -t 0.4"
 
@@ -116,22 +108,17 @@ fate-matroska-avoid-negative-ts: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpeg2/
 # It furthermore tests writing the Cues at the front if the cues_to_front
 # option is set and more than enough space has been reserved in advance.
 # (Btw: The keyframe flags of the input video stream seem wrong.)
-FATE_MATROSKA-$(call ALLYES, FILE_PROTOCOL AVI_DEMUXER MATROSKA_MUXER \
- MATROSKA_DEMUXER FRAMECRC_MUXER  \
- PIPE_PROTOCOL) += fate-matroska-ms-mode
+FATE_MATROSKA-$(call REMUX, MATROSKA, AVI_DEMUXER) += fate-matroska-ms-mode
 fate-matroska-ms-mode: CMD = transcode avi 
$(TARGET_SAMPLES)/vp5/potter512-400-partial.avi matroska "-map 0 -c copy 
-cues_to_front yes -reserve_index_space 5000" "-map 0 -c copy -t 1"
 
 # This tests Matroska's QT-compatibility mode.
-FATE_MATROSKA-$(call ALLYES, FILE_PROTOCOL MOV_DEMUXER MATROSKA_MUXER   \
- MATROSKA_DEMUXER FRAMECRC_MUXER PIPE_PROTOCOL) \
-+= fate-matroska-qt-mode
+FATE_MATROSKA-$

[FFmpeg-devel] [PATCH 02/32] fate/id3v2: Use REMUX where appropriate

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/id3v2.mak | 8 ++--
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/tests/fate/id3v2.mak b/tests/fate/id3v2.mak
index fea7545270..fc574e4487 100644
--- a/tests/fate/id3v2.mak
+++ b/tests/fate/id3v2.mak
@@ -1,14 +1,10 @@
 FATE_ID3V2_FFPROBE-$(CONFIG_MP3_DEMUXER) += fate-id3v2-priv
 fate-id3v2-priv: CMD = probetags $(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3
 
-FATE_ID3V2_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MP3_DEMUXER MP3_MUXER \
- FRAMECRC_MUXER PIPE_PROTOCOL)   \
-+= fate-id3v2-priv-remux
+FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, MP3) += fate-id3v2-priv-remux
 fate-id3v2-priv-remux: CMD = transcode mp3 
$(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3 mp3 "-c copy" "-c copy -t 0.1" "" 
"-show_entries format_tags"
 
-FATE_ID3V2_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL WAV_DEMUXER AIFF_MUXER \
- AIFF_DEMUXER FRAMECRC_MUXER 
PIPE_PROTOCOL) \
-+= fate-id3v2-chapters
+FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, AIFF, WAV_DEMUXER) += 
fate-id3v2-chapters
 fate-id3v2-chapters: CMD = transcode wav $(TARGET_SAMPLES)/wav/200828-005.wav 
aiff "-c copy -metadata:c:0 description=foo -metadata:c:0 date=2021 -metadata:c 
copyright=none -metadata:c:1 genre=nonsense -write_id3v2 1" "-c copy -t 0.05" 
"" "-show_entries format_tags:chapters"
 
 FATE_SAMPLES_FFPROBE+= $(FATE_ID3V2_FFPROBE-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 03/32] fate/amr[nw]b: Use REMUX where appropriate

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/amrnb.mak | 4 +---
 tests/fate/amrwb.mak | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/tests/fate/amrnb.mak b/tests/fate/amrnb.mak
index f4f74f14d9..6f5ed413e3 100644
--- a/tests/fate/amrnb.mak
+++ b/tests/fate/amrnb.mak
@@ -30,9 +30,7 @@ FATE_AMRNB += fate-amrnb-12k2
 fate-amrnb-12k2: CMD = pcm -i $(TARGET_SAMPLES)/amrnb/12.2k.amr
 fate-amrnb-12k2: REF = $(SAMPLES)/amrnb/12.2k.pcm
 
-FATE_AMRNB_REMUX-$(call ALLYES, FILE_PROTOCOL AMR_DEMUXER AMR_PARSER\
-AMR_MUXER FRAMECRC_MUXER PIPE_PROTOCOL) \
-+= fate-amrnb-remux
+FATE_AMRNB_REMUX-$(call REMUX, AMR, AMR_PARSER) += fate-amrnb-remux
 fate-amrnb-remux: CMD = transcode amr $(TARGET_SAMPLES)/amrnb/10.2k.amr amr 
"-c copy" "-c copy -t 1"
 
 $(FATE_AMRNB): CMP = stddev
diff --git a/tests/fate/amrwb.mak b/tests/fate/amrwb.mak
index 8450c28bba..7cd17d266e 100644
--- a/tests/fate/amrwb.mak
+++ b/tests/fate/amrwb.mak
@@ -41,9 +41,7 @@ FATE_AMRWB += fate-amrwb-23k85-2
 fate-amrwb-23k85-2: CMD = pcm -i $(TARGET_SAMPLES)/amrwb/deus-23k85.awb
 fate-amrwb-23k85-2: REF = $(SAMPLES)/amrwb/deus-23k85.pcm
 
-FATE_AMRWB_REMUX-$(call ALLYES, FILE_PROTOCOL MOV_DEMUXER AMR_PARSER AMR_MUXER 
\
-AMR_DEMUXER FRAMECRC_MUXER PIPE_PROTOCOL)  
\
-+= fate-amrwb-remux
+FATE_AMRWB_REMUX-$(call REMUX, AMR, MOV_DEMUXER AMR_PARSER) += fate-amrwb-remux
 fate-amrwb-remux: CMD = transcode mov $(TARGET_SAMPLES)/amrwb/seed-23k85.awb 
amr "-c copy" "-c copy -t 1"
 
 $(FATE_AMRWB): CMP = stddev
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 04/32] fate/caf: Use REMUX where appropriate

2022-04-23 Thread Andreas Rheinhardt
And drop the FATE_CAF_REMUX variables which only existed
to avoid having to repeat the common FILE_PROTOCOL PIPE_PROTOCOL
FRAMECRC_MUXER stuff.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/caf.mak | 21 +++--
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/tests/fate/caf.mak b/tests/fate/caf.mak
index ae2c543358..f153bfeb79 100644
--- a/tests/fate/caf.mak
+++ b/tests/fate/caf.mak
@@ -1,33 +1,26 @@
 FATE_CAF_FFMPEG-$(call ALLYES, CAF_DEMUXER CRC_MUXER) += fate-caf-demux
 fate-caf-demux: CMD = crc -i $(TARGET_SAMPLES)/caf/caf-pcm16.caf -c copy
 
-FATE_CAF_REMUX_FFPROBE-$(CONFIG_MOV_DEMUXER) += fate-caf-alac-remux
+FATE_CAF_FFMPEG_FFPROBE-$(call REMUX, CAF, MOV_DEMUXER) += fate-caf-alac-remux
 fate-caf-alac-remux: CMD = transcode m4a 
$(TARGET_SAMPLES)/lossless-audio/inside.m4a caf "-map 0:a -c copy -metadata 
major_brand= " "-c copy -t 0.2" "" "-show_entries format_tags"
 
-FATE_CAF_REMUX-$(CONFIG_AMR_DEMUXER) += fate-caf-amr_nb-remux
+FATE_CAF_FFMPEG-$(call REMUX, CAF, AMR_DEMUXER) += fate-caf-amr_nb-remux
 fate-caf-amr_nb-remux: CMD = transcode amr $(TARGET_SAMPLES)/amrnb/4.75k.amr 
caf "-c copy" "-c copy -t 0.2"
 
-FATE_CAF_REMUX-$(CONFIG_MOV_DEMUXER) += fate-caf-qdm2-remux
+FATE_CAF_FFMPEG-$(call REMUX, CAF, MOV_DEMUXER) += fate-caf-qdm2-remux
 fate-caf-qdm2-remux: CMD = transcode mov 
$(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-B-QDM2.mov caf "-c copy" "-c copy 
-t 0.2"
 
-FATE_CAF_REMUX-$(CONFIG_WAV_DEMUXER) += fate-caf-pcm_s24le-remux
+FATE_CAF_FFMPEG-$(call REMUX, CAF, WAV_DEMUXER) += fate-caf-pcm_s24le-remux
 fate-caf-pcm_s24le-remux: CMD = transcode wav 
$(TARGET_SAMPLES)/audio-reference/divertimenti_2ch_96kHz_s24.wav caf "-c copy" 
"-c copy -t 0.05"
 
-FATE_CAF_REMUX-$(call ALLYES, WAV_DEMUXER PCM_S24LE_DECODER \
-  PCM_S24BE_ENCODER)\
+FATE_CAF_FFMPEG-$(call REMUX, CAF, WAV_DEMUXER PCM_S24LE_DECODER \
+   PCM_S24BE_ENCODER)\
   += fate-caf-pcm_s24-remux
 fate-caf-pcm_s24-remux: CMD = transcode wav 
$(TARGET_SAMPLES)/audio-reference/divertimenti_2ch_96kHz_s24.wav caf "-c 
pcm_s24be" "-c copy -t 0.05"
 
-FATE_CAF_REMUX-$(CONFIG_MOV_DEMUXER) += fate-caf-mace6-remux
+FATE_CAF_FFMPEG-$(call REMUX, CAF, MOV_DEMUXER) += fate-caf-mace6-remux
 fate-caf-mace6-remux: CMD = transcode mov 
$(TARGET_SAMPLES)/qtrle/Animation-16Greys.mov caf "-map 0:a -c copy" "-c copy 
-t 0.003"
 
-FATE_CAF_FFMPEG-$(call ALLYES, FILE_PROTOCOL CAF_MUXER CAF_DEMUXER \
-   FRAMECRC_MUXER PIPE_PROTOCOL)   \
-   += $(FATE_CAF_REMUX-yes)
-FATE_CAF_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL CAF_MUXER\
-   CAF_DEMUXER FRAMECRC_MUXER \
-   PIPE_PROTOCOL) \
-  += $(FATE_CAF_REMUX_FFPROBE-yes)
 FATE_SAMPLES_FFMPEG += $(FATE_CAF_FFMPEG-yes)
 FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_CAF_FFMPEG_FFPROBE-yes)
 fate-caf: $(FATE_CAF_FFMPEG-yes) $(FATE_CAF_FFMPEG_FFPROBE-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 05/32] fate/mov: Use REMUX and TRANSCODE where appropriate

2022-04-23 Thread Andreas Rheinhardt
Also fix the requirements of fate-mov-channel-description:
It needs the pcm_s16le decoder and the mov demuxer.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/mov.mak | 18 +-
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
index 675c34a07d..a33f3694af 100644
--- a/tests/fate/mov.mak
+++ b/tests/fate/mov.mak
@@ -126,36 +126,28 @@ fate-mov-mp4-with-mov-in24-ver: CMD = run 
ffprobe$(PROGSSUF)$(EXESUF) -show_entr
 
 fate-mov-mp4-extended-atom: CMD = run ffprobe$(PROGSSUF)$(EXESUF) 
-show_packets -print_format compact -select_streams v 
$(TARGET_SAMPLES)/mov/extended_atom_size_probe
 
-FATE_MOV_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL OGG_DEMUXER\
-   VORBIS_DECODER MP4_MUXER MOV_DEMUXER \
-   FRAMECRC_MUXER PIPE_PROTOCOL)\
+FATE_MOV_FFMPEG_FFPROBE-$(call REMUX, MP4 MOV, OGG_DEMUXER VORBIS_DECODER) \
   += fate-mov-mp4-chapters
 fate-mov-mp4-chapters: CMD = transcode ogg 
$(TARGET_SAMPLES)/vorbis/vorbis_chapter_extension_demo.ogg mp4 "-c copy" "-c 
copy -t 0.1" "" "-show_chapters"
 
-FATE_MOV_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MOV_DEMUXER MJPEG_DECODER 
\
-   SCALE_FILTER PNG_ENCODER PNG_DECODER
\
-   MP4_MUXER FRAMECRC_MUXER PIPE_PROTOCOL) 
\
+FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, PNG, MP4 MOV, MJPEG_DECODER 
SCALE_FILTER) \
   += fate-mov-cover-image
 fate-mov-cover-image: CMD = transcode mov 
$(TARGET_SAMPLES)/cover_art/Owner-iTunes_9.0.3.15.m4a mp4 "-map 0 -map 0:v -c:a 
copy -c:v:0 copy -filter:v:1 scale -c:v:1 png" "-map 0 -t 0.1 -c copy" "" 
"-show_entries stream_disposition=attached_pic:stream=index,codec_name"
 
-FATE_MOV_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL SRT_DEMUXER MOV_DEMUXER 
SUBRIP_DECODER TTML_ENCODER TTML_MUXER MOV_MUXER) += fate-mov-mp4-ttml-stpp 
fate-mov-mp4-ttml-dfxp
+FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, TTML SUBRIP, MP4 MOV, SRT_DEMUXER 
TTML_MUXER) += fate-mov-mp4-ttml-stpp fate-mov-mp4-ttml-dfxp
 fate-mov-mp4-ttml-stpp: CMD = transcode srt 
$(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml 
-time_base:s 1:1000" "-map 0 -c copy" "" "-of json -show_entries 
packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
 fate-mov-mp4-ttml-dfxp: CMD = transcode srt 
$(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml 
-time_base:s 1:1000 -tag:s dfxp -strict unofficial" "-map 0 -c copy" "" "-of 
json -show_entries 
packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
 
 # Resulting remux should have:
 # 1. first audio stream with AV_DISPOSITION_HEARING_IMPAIRED
 # 2. second audio stream with AV_DISPOSITION_VISUAL_IMPAIRED | DESCRIPTIONS
-FATE_MOV_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL PIPE_PROTOCOL \
-   MPEGTS_DEMUXER MOV_DEMUXER AC3_DECODER \
-   MP4_MUXER FRAMECRC_MUXER ) \
+FATE_MOV_FFMPEG_FFPROBE-$(call REMUX, MP4 MOV, MPEGTS_DEMUXER AC3_DECODER) \
   += fate-mov-mp4-disposition-mpegts-remux
 fate-mov-mp4-disposition-mpegts-remux: CMD = transcode mpegts 
$(TARGET_SAMPLES)/mpegts/pmtchange.ts mp4 "-map 0:1 -map 0:2 -c copy 
-disposition:a:0 +hearing_impaired" "-map 0 -c copy" "" "-of json -show_entries 
stream_disposition:stream=index"
 
 FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes)
 
-FATE_MOV_FFMPEG-$(call ALLYES, FILE_PROTOCOL PIPE_PROTOCOL \
-   WAV_DEMUXER PAN_FILTER PCM_S16LE_ENCODER \
-   MOV_MUXER FRAMECRC_MUXER ) \
+FATE_MOV_FFMPEG-$(call TRANSCODE, PCM_S16LE, MOV, WAV_DEMUXER PAN_FILTER) \
   += fate-mov-channel-description
 fate-mov-channel-description: tests/data/asynth-44100-1.wav 
tests/data/filtergraphs/mov-channel-description
 fate-mov-channel-description: CMD = transcode wav 
$(TARGET_PATH)/tests/data/asynth-44100-1.wav mov "-filter_complex_script 
$(TARGET_PATH)/tests/data/filtergraphs/mov-channel-description -map [outFL] 
-map [outFR] -map [outFC] -map [outLFE] -map [outBL] -map [outBR] -map [outDL] 
-map [outDR] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0"
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 06/32] fate/lavf-image: Fix requirements of tests

2022-04-23 Thread Andreas Rheinhardt
In particular, add the missing dependency on the scale filter
(and therefore on libswscale).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/lavf-image.mak | 70 +--
 1 file changed, 37 insertions(+), 33 deletions(-)

diff --git a/tests/fate/lavf-image.mak b/tests/fate/lavf-image.mak
index dbbd374301..df5079e118 100644
--- a/tests/fate/lavf-image.mak
+++ b/tests/fate/lavf-image.mak
@@ -1,36 +1,40 @@
-FATE_LAVF_IMAGES-$(call ENCDEC,  BMP,IMAGE2) += bmp
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += 
gbrp10le.dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += 
gbrp12le.dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += 
rgb48le.dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += 
rgb48le_10.dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  DPX,IMAGE2) += 
rgba64le.dpx
-FATE_LAVF_IMAGES-$(call ENCDEC,  MJPEG,  IMAGE2) += jpg
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += 
rgba.pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += 
gray.pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += 
gray16be.pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += 
rgb48be.pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PAM,IMAGE2) += 
monob.pam
-FATE_LAVF_IMAGES-$(call ENCDEC,  PCX,IMAGE2) += pcx
-FATE_LAVF_IMAGES-$(call ENCDEC,  PGM,IMAGE2) += pgm
-FATE_LAVF_IMAGES-$(call ENCDEC,  PNG,IMAGE2) += png
-FATE_LAVF_IMAGES-$(call ENCDEC,  PNG,IMAGE2) += 
gray16be.png
-FATE_LAVF_IMAGES-$(call ENCDEC,  PNG,IMAGE2) += 
rgb48be.png
-FATE_LAVF_IMAGES-$(call ENCDEC,  PPM,IMAGE2) += ppm
-FATE_LAVF_IMAGES-$(call ENCDEC,  SGI,IMAGE2) += sgi
-FATE_LAVF_IMAGES-$(call ENCDEC,  SUNRAST,IMAGE2) += sun
-FATE_LAVF_IMAGES-$(call ENCDEC,  TARGA,  IMAGE2) += tga
-FATE_LAVF_IMAGES-$(call ENCDEC,  TIFF,   IMAGE2) += tiff
-FATE_LAVF_IMAGES-$(call ENCDEC,  XBM,IMAGE2) += xbm
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
rgba.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
rgb565be.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
rgb555be.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
rgb8.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
rgb4_byte.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
gray.xwd
-FATE_LAVF_IMAGES-$(call ENCDEC,  XWD,IMAGE2) += 
monow.xwd
+LAVF_IMAGES = $(call ALLYES, FILE_PROTOCOL IMAGE2_DEMUXER PGMYUV_DECODER \
+ SCALE_FILTER $(1)_ENCODER IMAGE2_MUXER  \
+ $(1)_DECODER RAWVIDEO_ENCODER CRC_MUXER)
+
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, BMP) += bmp
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += gbrp10le.dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += gbrp12le.dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += rgb48le.dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += rgb48le_10.dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, DPX) += rgba64le.dpx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES,   MJPEG) += jpg
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += rgba.pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += gray.pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += gray16be.pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += rgb48be.pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PAM) += monob.pam
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PCX) += pcx
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PGM) += pgm
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PNG) += png
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PNG) += gray16be.png
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PNG) += rgb48be.png
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, PPM) += ppm
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, SGI) += sgi
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, SUNRAST) += sun
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES,   TARGA) += tga
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES,TIFF) += tiff
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, XBM) += xbm
+FATE_LAVF_IMAGES-$(call LAVF_IMAGES, XWD) += xwd
+FATE_LAVF_IMAGES-$(c

[FFmpeg-devel] [PATCH 08/32] fate/image: Fix requirements of tests

2022-04-23 Thread Andreas Rheinhardt
Also reduce the amount of repetitions a bit.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/image.mak | 129 +++
 1 file changed, 57 insertions(+), 72 deletions(-)

diff --git a/tests/fate/image.mak b/tests/fate/image.mak
index 63076f8ded..c8e0d321ef 100644
--- a/tests/fate/image.mak
+++ b/tests/fate/image.mak
@@ -1,13 +1,12 @@
+ADD_SCALE_IF = $(if $(findstring -vf scale,$(1)), SCALE_FILTER)
+
 FATE_ALIASPIX += fate-aliaspix-bgr
 fate-aliaspix-bgr: CMD = transcode alias_pix 
$(TARGET_SAMPLES)/aliaspix/first.pix image2 "-c alias_pix" "-map 0 -map 0 
-pix_fmt:0 bgr24 -c:v:1 copy"
 
 FATE_ALIASPIX += fate-aliaspix-gray
 fate-aliaspix-gray: CMD = transcode alias_pix 
$(TARGET_SAMPLES)/aliaspix/firstgray.pix image2 "-c alias_pix" "-map 0 -map 0 
-pix_fmt:0 gray -c:v:1 copy"
 
-FATE_ALIASPIX-$(call ALLYES, FILE_PROTOCOL IMAGE2_ALIAS_PIX_DEMUXER \
- ALIAS_PIX_DECODER ALIAS_PIX_ENCODER\
- IMAGE2_MUXER RAWVIDEO_ENCODER  \
- FRAMECRC_MUXER PIPE_PROTOCOL) += $(FATE_ALIASPIX)
+FATE_ALIASPIX-$(call TRANSCODE, ALIAS_PIX, IMAGE2 IMAGE2_ALIAS_PIX) += 
$(FATE_ALIASPIX)
 FATE_IMAGE += $(FATE_ALIASPIX-yes)
 fate-aliaspix: $(FATE_ALIASPIX-yes)
 
@@ -17,29 +16,29 @@ fate-brenderpix-24: CMD = framecrc -c:v brender_pix -i 
$(TARGET_SAMPLES)/brender
 FATE_BRENDERPIX += fate-brenderpix-565
 fate-brenderpix-565: CMD = framecrc -c:v brender_pix -i 
$(TARGET_SAMPLES)/brenderpix/maximafront.pix
 
-FATE_BRENDERPIX += fate-brenderpix-defpal
+FATE_BRENDERPIX-$(call DEMDEC, IMAGE2, BRENDER_PIX, SCALE_FILTER) += 
fate-brenderpix-defpal
 fate-brenderpix-defpal: CMD = framecrc -c:v brender_pix -i 
$(TARGET_SAMPLES)/brenderpix/rivrock1.pix -pix_fmt rgb24 -vf scale
 
-FATE_BRENDERPIX += fate-brenderpix-intpal
+FATE_BRENDERPIX-$(call DEMDEC, IMAGE2, BRENDER_PIX, SCALE_FILTER) += 
fate-brenderpix-intpal
 fate-brenderpix-intpal: CMD = framecrc -c:v brender_pix -i 
$(TARGET_SAMPLES)/brenderpix/testtex.pix -pix_fmt rgb24 -vf scale
 
 FATE_BRENDERPIX += fate-brenderpix-y400a
 fate-brenderpix-y400a: CMD = framecrc -c:v brender_pix -i 
$(TARGET_SAMPLES)/brenderpix/gears.pix
 
 FATE_BRENDERPIX-$(call DEMDEC, IMAGE2, BRENDER_PIX) += $(FATE_BRENDERPIX)
-FATE_IMAGE += $(FATE_BRENDERPIX-yes)
+FATE_IMAGE_FRAMECRC += $(FATE_BRENDERPIX-yes)
 fate-brenderpix: $(FATE_BRENDERPIX-yes)
 
-FATE_IMAGE-$(call PARSERDEMDEC, BMP, IMAGE2PIPE, BMP) += fate-bmpparser
+FATE_IMAGE_FRAMECRC-$(call PARSERDEMDEC, BMP, IMAGE2PIPE, BMP, SCALE_FILTER) 
+= fate-bmpparser
 fate-bmpparser: CMD = framecrc -f image2pipe -i 
$(TARGET_SAMPLES)/bmp/numbers.bmp -pix_fmt rgb24 -vf scale
 
 define FATE_IMGSUITE_DDS
-FATE_DDS += fate-dds-$(1)
-fate-dds-$(1): CMD = framecrc -i $(TARGET_SAMPLES)/dds/fate_$(1).dds 
$(DDS_OPTS_$(1)) -vf scale
+FATE_DDS-$(call DEMDEC, IMAGE2, DDS, $(call ADD_SCALE_IF, $(DDS_OPTS_$(1 
+= fate-dds-$(1)
+fate-dds-$(1): CMD = framecrc -i $(TARGET_SAMPLES)/dds/fate_$(1).dds 
$(DDS_OPTS_$(1))
 endef
 
-DDS_OPTS_pal = -sws_flags +accurate_rnd+bitexact -pix_fmt rgba
-DDS_OPTS_pal-ati = -sws_flags +accurate_rnd+bitexact -pix_fmt rgba
+DDS_OPTS_pal:= -sws_flags +accurate_rnd+bitexact -pix_fmt rgba -vf scale
+DDS_OPTS_pal-ati:= -sws_flags +accurate_rnd+bitexact -pix_fmt rgba -vf scale
 DDS_FMT  = alpha8   \
argb \
argb-aexp\
@@ -90,14 +89,15 @@ DDS_FMT  = alpha8   
\
yuyv
 $(foreach FMT,$(DDS_FMT),$(eval $(call FATE_IMGSUITE_DDS,$(FMT
 
-FATE_DDS-$(call DEMDEC, IMAGE2, DDS) += $(FATE_DDS)
-FATE_IMAGE += $(FATE_DDS-yes)
+FATE_IMAGE_FRAMECRC += $(FATE_DDS-yes)
 fate-dds: $(FATE_DDS-yes)
 
-FATE_IMAGE-$(call DEMDEC, IMAGE2, DPX) += fate-dpx
+FATE_IMAGE_FRAMECRC-$(call DEMDEC, IMAGE2, DPX) += fate-dpx
 fate-dpx: CMD = framecrc -i $(TARGET_SAMPLES)/dpx/lighthouse_rgb48.dpx
 
-FATE_SAMPLES_AVCONV-$(call PARSERDEMDEC, DPX, IMAGE2PIPE, DPX) += 
fate-dpxparser
+# The following sample has frames whose dimensions differ on a per-frame basis
+# and therefore needs the scale filter.
+FATE_IMAGE_FRAMECRC-$(call PARSERDEMDEC, DPX, IMAGE2PIPE, DPX, SCALE_FILTER) 
+= fate-dpxparser
 fate-dpxparser: CMD = framecrc -f image2pipe -i 
$(TARGET_SAMPLES)/dpx/lena_4x_concat.dpx -sws_flags +accurate_rnd+bitexact
 
 FATE_IMAGE_PROBE-$(call DEMDEC, IMAGE2, DPX) += fate-dpx-probe
@@ -226,7 +226,7 @@ fate-exr-rgb-scanline-pxr24-float-half-l1: CMD = framecrc 
-i $(TARGET_SAMPLES)/e
 FATE_EXR += fate-exr-rgb-scanline-pxr24-float-half-l2
 fate-exr-rgb-scanline-pxr24-float-half-l2: CMD = framecrc -layer 
"VRaySamplerInfo" -i $(TARGET_SAMPLES)/exr/rgb_scanline_pxr24_float_half.exr 
-pix_fmt gbrapf32le
 
-FATE_EXR += fate-exr-rgb-scanline-pxr24-half-uint32-13x9
+FATE_EXR-$(call DEMDEC, IMAGE2, EXR, SCALE

[FFmpeg-devel] [PATCH 09/32] tests/Makefile: Add FRAMECRC function

2022-04-23 Thread Andreas Rheinhardt
Intended for scenarios that currently use DEMDEC, but are missing
the requirements that are implicitly needed by framecrc.

Signed-off-by: Andreas Rheinhardt 
---
 tests/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/Makefile b/tests/Makefile
index e175631258..1c9e3594c0 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -88,6 +88,9 @@ REMUX = $(call ALLYES, $(firstword $(1))_MUXER $(lastword 
$(1))_DEMUXER \
 
 DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER) $(3) FILE_PROTOCOL)
 ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER   $(3))
+FRAMECRC = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER) $(3)  \
+  PCM_S16LE_ENCODER RAWVIDEO_ENCODER FRAMECRC_MUXER   \
+  PIPE_PROTOCOL FILE_PROTOCOL)
 
 DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER $(3) FILE_PROTOCOL)
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 10/32] fate/screen: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
In particular, add the missing dependency on the scale filter
(and therefore on libswscale).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/screen.mak | 55 ---
 1 file changed, 31 insertions(+), 24 deletions(-)

diff --git a/tests/fate/screen.mak b/tests/fate/screen.mak
index aa9832688d..bd6d228544 100644
--- a/tests/fate/screen.mak
+++ b/tests/fate/screen.mak
@@ -1,11 +1,11 @@
 # FIXME dropped frames in this test because of coarse timebase
-FATE_SCREEN-$(call DEMDEC, AVI, CSCD) += fate-cscd
+FATE_SCREEN-$(call FRAMECRC, AVI, CSCD, SCALE_FILTER) += fate-cscd
 fate-cscd: CMD = framecrc -i $(TARGET_SAMPLES)/CSCD/sample_video.avi -an 
-pix_fmt rgb24 -vf scale
 
-FATE_SCREEN-$(call DEMDEC, AVI, DXTORY) += fate-dxtory
+FATE_SCREEN-$(call FRAMECRC, AVI, DXTORY) += fate-dxtory
 fate-dxtory: CMD = framecrc -i $(TARGET_SAMPLES)/dxtory/dxtory_mic.avi -an
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, FIC) += fate-fic-avi
+FATE_SCREEN-$(call FRAMECRC, AVI, FIC) += fate-fic-avi
 fate-fic-avi: CMD = framecrc -i $(TARGET_SAMPLES)/fic/fic-partial-2MB.avi -an
 
 FATE_FMVC += fate-fmvc-type1
@@ -14,8 +14,9 @@ fate-fmvc-type1: CMD = framecrc -i 
$(TARGET_SAMPLES)/fmvc/6-methyl-5-hepten-2-on
 FATE_FMVC += fate-fmvc-type2
 fate-fmvc-type2: CMD = framecrc -i 
$(TARGET_SAMPLES)/fmvc/fmvcVirtualDub_small.avi
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, FMVC) += $(FATE_FMVC)
-fate-fmvc: $(FATE_FMVC)
+FATE_FMVC-$(call FRAMECRC, AVI, FMVC) += $(FATE_FMVC)
+FATE_SCREEN += $(FATE_FMVC-yes)
+fate-fmvc: $(FATE_FMVC-yes)
 
 FATE_FRAPS += fate-fraps-v0
 fate-fraps-v0: CMD = framecrc -i 
$(TARGET_SAMPLES)/fraps/Griffin_Ragdoll01-partial.avi
@@ -26,7 +27,7 @@ fate-fraps-v1: CMD = framecrc -i 
$(TARGET_SAMPLES)/fraps/sample-v1.avi -an
 FATE_FRAPS += fate-fraps-v2
 fate-fraps-v2: CMD = framecrc -i 
$(TARGET_SAMPLES)/fraps/test3-nosound-partial.avi
 
-FATE_FRAPS += fate-fraps-v3
+FATE_FRAPS-$(call FRAMECRC, AVI, FRAPS, SCALE_FILTER) += fate-fraps-v3
 fate-fraps-v3: CMD = framecrc -i $(TARGET_SAMPLES)/fraps/psclient-partial.avi 
-pix_fmt rgb24 -vf scale
 
 FATE_FRAPS += fate-fraps-v4
@@ -35,8 +36,9 @@ fate-fraps-v4: CMD = framecrc -i 
$(TARGET_SAMPLES)/fraps/WoW_2006-11-03_14-58-17
 FATE_FRAPS += fate-fraps-v5
 fate-fraps-v5: CMD = framecrc -i 
$(TARGET_SAMPLES)/fraps/fraps-v5-bouncing-balls-partial.avi
 
-FATE_SCREEN-$(call DEMDEC, AVI, FRAPS) += $(FATE_FRAPS)
-fate-fraps: $(FATE_FRAPS)
+FATE_FRAPS-$(call FRAMECRC, AVI, FRAPS) += $(FATE_FRAPS)
+FATE_SCREEN += $(FATE_FRAPS-yes)
+fate-fraps: $(FATE_FRAPS-yes)
 
 FATE_G2M += fate-g2m2
 fate-g2m2: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/g2m/g2m2.asf -an
@@ -47,13 +49,13 @@ fate-g2m3: CMD = framecrc -idct simple -i 
$(TARGET_SAMPLES)/g2m/g2m3.asf -frames
 FATE_G2M += fate-g2m4
 fate-g2m4: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/g2m/g2m4.asf
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, ASF, G2M) += $(FATE_G2M)
+FATE_SCREEN-$(call FRAMECRC, ASF, G2M) += $(FATE_G2M)
 fate-g2m: $(FATE_G2M)
 
 FATE_RSCC += fate-iscc
 fate-iscc: CMD = framecrc -i $(TARGET_SAMPLES)/rscc/pip.avi -an
 
-FATE_RSCC += fate-rscc-8bit
+FATE_RSCC-$(call FRAMECRC, AVI, RSCC, SCALE_FILTER) += fate-rscc-8bit
 fate-rscc-8bit: CMD = framecrc -i $(TARGET_SAMPLES)/rscc/8bpp.avi -an -pix_fmt 
rgb24 -vf scale
 
 FATE_RSCC += fate-rscc-16bit
@@ -65,8 +67,9 @@ fate-rscc-24bit: CMD = framecrc -i 
$(TARGET_SAMPLES)/rscc/24bpp.avi -an
 FATE_RSCC += fate-rscc-32bit
 fate-rscc-32bit: CMD = framecrc -i $(TARGET_SAMPLES)/rscc/32bpp.avi -an
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, RSCC) += $(FATE_RSCC)
-fate-rscc: $(FATE_RSCC)
+FATE_RSCC-$(call FRAMECRC, AVI, RSCC) += $(FATE_RSCC)
+FATE_SCREEN += $(FATE_RSCC-yes)
+fate-rscc: $(FATE_RSCC-yes)
 
 FATE_SCREENPRESSO += fate-screenpresso-16bit
 fate-screenpresso-16bit: CMD = framecrc -i 
$(TARGET_SAMPLES)/spv1/16bpp_555.avi -an
@@ -77,10 +80,11 @@ fate-screenpresso-24bit: CMD = framecrc -i 
$(TARGET_SAMPLES)/spv1/bunny.avi -an
 FATE_SCREENPRESSO += fate-screenpresso-32bit
 fate-screenpresso-32bit: CMD = framecrc -i $(TARGET_SAMPLES)/spv1/32bpp.avi -an
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, SCREENPRESSO) += $(FATE_SCREENPRESSO)
-fate-screenpresso: $(FATE_SCREENPRESSO)
+FATE_SCREENPRESSO-$(call FRAMECRC, AVI, SCREENPRESSO) += $(FATE_SCREENPRESSO)
+FATE_SCREEN += $(FATE_SCREENPRESSO-yes)
+fate-screenpresso: $(FATE_SCREENPRESSO-yes)
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, ASF, TDSC) += fate-tdsc
+FATE_SCREEN-$(call FRAMECRC, ASF, TDSC) += fate-tdsc
 fate-tdsc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/tdsc/tdsc.asf -an 
-pix_fmt bgr24
 
 FATE_TSCC += fate-tscc-15bit
@@ -89,16 +93,17 @@ fate-tscc-15bit: CMD = framecrc -i 
$(TARGET_SAMPLES)/tscc/oneminute.avi -t 15 -p
 FATE_TSCC += fate-tscc-32bit
 fate-tscc-32bit: CMD = framecrc -i 
$(TARGET_SAMPLES)/tscc/2004-12-17-uebung9-partial.avi -pix_fmt rgb24 -an -vf 
scale
 
-FATE_SCREEN-$(call DEMDEC, AVI, TSCC) += $(FATE_TSCC)
-fate-tscc: $(FATE_TSCC)
+FATE_TSCC-$(call FRAMECRC, AVI, TSCC, SCALE_FILTER

[FFmpeg-devel] [PATCH 12/32] fate/dfa: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/dfa.mak | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/fate/dfa.mak b/tests/fate/dfa.mak
index 5b725e3a99..682a9d10b2 100644
--- a/tests/fate/dfa.mak
+++ b/tests/fate/dfa.mak
@@ -31,7 +31,7 @@ fate-dfa10: CMD = framecrc -i 
$(TARGET_SAMPLES)/chronomaster-dfa/0009.dfa -pix_f
 FATE_DFA += fate-dfa11
 fate-dfa11: CMD = framecrc -i $(TARGET_SAMPLES)/chronomaster-dfa/0010.dfa 
-pix_fmt rgb24 -vf scale
 
-FATE_DFA-$(call DEMDEC, DFA, DFA) += $(FATE_DFA)
+FATE_DFA-$(call FRAMECRC, DFA, DFA, SCALE_FILTER) += $(FATE_DFA)
 
 FATE_SAMPLES_AVCONV += $(FATE_DFA-yes)
 fate-dfa: $(FATE_DFA-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 11/32] fate/video: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
In particular, add the missing dependency on the scale and
aresample filters (and therefore on libswscale resp. libswresample).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/video.mak | 216 ++-
 1 file changed, 110 insertions(+), 106 deletions(-)

diff --git a/tests/fate/video.mak b/tests/fate/video.mak
index dff1f13e88..40cdd9e3b6 100644
--- a/tests/fate/video.mak
+++ b/tests/fate/video.mak
@@ -4,55 +4,56 @@ fate-4xm-1: CMD = framecrc -i 
$(TARGET_SAMPLES)/4xm/version1.4xm -pix_fmt rgb24
 FATE_4XM += fate-4xm-2
 fate-4xm-2: CMD = framecrc -i $(TARGET_SAMPLES)/4xm/version2.4xm -pix_fmt 
rgb24 -an -vf scale
 
-FATE_VIDEO-$(call DEMDEC, FOURXM, FOURXM) += $(FATE_4XM)
-fate-4xm: $(FATE_4XM)
+FATE_4XM-$(call FRAMECRC, FOURXM, FOURXM, SCALE_FILTER) += $(FATE_4XM)
+FATE_VIDEO += $(FATE_4XM-yes)
+fate-4xm: $(FATE_4XM-yes)
 
-FATE_VIDEO-$(call DEMDEC, AVI, ZERO12V) += fate-012v
+FATE_VIDEO-$(call FRAMECRC, AVI, ZERO12V, SCALE_FILTER) += fate-012v
 fate-012v: CMD = framecrc -i $(TARGET_SAMPLES)/012v/sample.avi -pix_fmt 
yuv422p16le -vf scale
 
-FATE_VIDEO-$(call DEMDEC, AVI, AASC) += fate-aasc
+FATE_VIDEO-$(call FRAMECRC, AVI, AASC, SCALE_FILTER) += fate-aasc
 fate-aasc: CMD = framecrc -i $(TARGET_SAMPLES)/aasc/AASC-1.5MB.AVI -pix_fmt 
rgb24 -vf scale
 
-FATE_VIDEO-$(call DEMDEC, MOV, AIC) += fate-aic
+FATE_VIDEO-$(call FRAMECRC, MOV, AIC) += fate-aic
 fate-aic: CMD = framecrc -idct simple -i 
$(TARGET_SAMPLES)/aic/small_apple_intermediate_codec.mov -an -frames:v 15
 
-FATE_VIDEO-$(call DEMDEC, MOV, AIC) += fate-aic-oddsize
+FATE_VIDEO-$(call FRAMECRC, MOV, AIC) += fate-aic-oddsize
 fate-aic-oddsize: CMD = framecrc -idct simple -i 
$(TARGET_SAMPLES)/aic/aic_odd_dimensions.mov
 
-FATE_VIDEO-$(call DEMDEC, MM, MMVIDEO) += fate-alg-mm
+FATE_VIDEO-$(call FRAMECRC, MM, MMVIDEO, SCALE_FILTER) += fate-alg-mm
 fate-alg-mm: CMD = framecrc -i $(TARGET_SAMPLES)/alg-mm/ibmlogo.mm -an 
-pix_fmt rgb24 -vf scale
 
-FATE_VIDEO-$(call DEMDEC, AVI, AMV) += fate-amv
+FATE_VIDEO-$(call FRAMECRC, AVI, AMV) += fate-amv
 fate-amv: CMD = framecrc -idct simple -i 
$(TARGET_SAMPLES)/amv/MTV_high_res_320x240_sample_Penguin_Joke_MTV_from_WMV.amv 
-t 10 -an
 
-FATE_VIDEO-$(call DEMDEC, TTY, ANSI) += fate-ansi
+FATE_VIDEO-$(call FRAMECRC, TTY, ANSI, SCALE_FILTER) += fate-ansi
 fate-ansi: CMD = framecrc -chars_per_frame 44100 -i 
$(TARGET_SAMPLES)/ansi/TRE-IOM5.ANS -pix_fmt rgb24 -vf scale
 
-FATE_VIDEO-$(call DEMDEC, TTY, ANSI) += fate-ansi256
+FATE_VIDEO-$(call FRAMECRC, TTY, ANSI, SCALE_FILTER) += fate-ansi256
 fate-ansi256: CMD = framecrc -chars_per_frame 44100 -i 
$(TARGET_SAMPLES)/ansi/ansi256.ans -pix_fmt rgb24 -vf scale
 
-FATE_VIDEO-$(call DEMDEC, RPL, ESCAPE124) += fate-armovie-escape124
+FATE_VIDEO-$(call FRAMECRC, RPL, ESCAPE124, ARESAMPLE_FILTER SCALE_FILTER) += 
fate-armovie-escape124
 fate-armovie-escape124: CMD = framecrc -i $(TARGET_SAMPLES)/rpl/ESCAPE.RPL 
-pix_fmt rgb24 -vf scale -af aresample
 
-FATE_VIDEO-$(call DEMDEC, RPL, ESCAPE130) += fate-armovie-escape130
+FATE_VIDEO-$(call FRAMECRC, RPL, ESCAPE130) += fate-armovie-escape130
 fate-armovie-escape130: CMD = framecrc -i $(TARGET_SAMPLES)/rpl/landing.rpl -an
 
-FATE_VIDEO-$(call DEMDEC, AVI, AURA) += fate-auravision-v1
+FATE_VIDEO-$(call FRAMECRC, AVI, AURA) += fate-auravision-v1
 fate-auravision-v1: CMD = framecrc -i 
$(TARGET_SAMPLES)/auravision/SOUVIDEO.AVI -an
 
-FATE_VIDEO-$(call DEMDEC, AVI, AURA2) += fate-auravision-v2
+FATE_VIDEO-$(call FRAMECRC, AVI, AURA2) += fate-auravision-v2
 fate-auravision-v2: CMD = framecrc -i 
$(TARGET_SAMPLES)/auravision/salma-hayek-in-ugly-betty-partial-avi -an
 
-FATE_VIDEO-$(call DEMDEC, AVI, AVRN) += fate-avid-interlaced
+FATE_VIDEO-$(call FRAMECRC, AVI, AVRN) += fate-avid-interlaced
 fate-avid-interlaced: CMD = framecrc -i 
$(TARGET_SAMPLES)/avid/avid_ntsc_interlaced.avi
 
-FATE_VIDEO-$(call DEMDEC, MOV, MJPEG) += fate-avid-meridian
+FATE_VIDEO-$(call FRAMECRC, MOV, MJPEG) += fate-avid-meridian
 fate-avid-meridian: CMD = framecrc -i 
$(TARGET_SAMPLES)/avid/avidmeridianntsc.mov
 
-FATE_VIDEO-$(call DEMDEC, BETHSOFTVID, BETHSOFTVID) += fate-bethsoft-vid
+FATE_VIDEO-$(call FRAMECRC, BETHSOFTVID, BETHSOFTVID, ARESAMPLE_FILTER 
SCALE_FILTER) += fate-bethsoft-vid
 fate-bethsoft-vid: CMD = framecrc -i 
$(TARGET_SAMPLES)/bethsoft-vid/ANIM0001.VID -t 5 -pix_fmt rgb24 -vf scale -af 
aresample
 
-FATE_VIDEO-$(call DEMDEC, BFI, BFI) += fate-bfi
+FATE_VIDEO-$(call FRAMECRC, BFI, BFI, ARESAMPLE_FILTER SCALE_FILTER) += 
fate-bfi
 fate-bfi: CMD = framecrc -i $(TARGET_SAMPLES)/bfi/2287.bfi -pix_fmt rgb24 -vf 
scale -af aresample
 
 FATE_BINK_VIDEO += fate-bink-video-b
@@ -64,69 +65,69 @@ fate-bink-video-f: CMD = framecrc -i 
$(TARGET_SAMPLES)/bink/hol2br.bik
 FATE_BINK_VIDEO += fate-bink-video-i
 fate-bink-video-i: CMD = framecrc -i $(TARGET_SAMPLES)/bink/RazOnBull.bik -an
 
-FATE_VIDEO-$(call DEMDEC, BINK, BINK) += $(FATE_BINK_VIDEO)
+FATE_VIDEO-$(call FRAMECRC, BINK, BINK) += $(FATE_BINK_VIDEO)
 
-FATE_

[FFmpeg-devel] [PATCH 13/32] fate/cdxl: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/cdxl.mak | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/fate/cdxl.mak b/tests/fate/cdxl.mak
index 2a4e2dd510..db3045c27c 100644
--- a/tests/fate/cdxl.mak
+++ b/tests/fate/cdxl.mak
@@ -7,13 +7,13 @@ fate-cdxl-ham6: CMD = framecrc -i 
$(TARGET_SAMPLES)/cdxl/cat.cdxl -an -frames:v
 FATE_CDXL += fate-cdxl-ham8
 fate-cdxl-ham8: CMD = framecrc -i $(TARGET_SAMPLES)/cdxl/mirage.cdxl -an 
-frames:v 1
 
-FATE_CDXL += fate-cdxl-pal8
+FATE_CDXL-$(call FRAMECRC, CDXL, CDXL, SCALE_FILTER) += fate-cdxl-pal8
 fate-cdxl-pal8: CMD = framecrc -i $(TARGET_SAMPLES)/cdxl/maku.cdxl -pix_fmt 
rgb24 -frames:v 11 -vf scale
 
-FATE_CDXL += fate-cdxl-pal8-small
+FATE_CDXL-$(call FRAMECRC, CDXL, CDXL, SCALE_FILTER) += fate-cdxl-pal8-small
 fate-cdxl-pal8-small: CMD = framecrc -i $(TARGET_SAMPLES)/cdxl/fruit.cdxl -an 
-pix_fmt rgb24 -frames:v 46 -vf scale
 
-FATE_CDXL-$(call DEMDEC, CDXL, CDXL) += $(FATE_CDXL)
+FATE_CDXL-$(call FRAMECRC, CDXL, CDXL) += $(FATE_CDXL)
 
 FATE_SAMPLES_AVCONV += $(FATE_CDXL-yes)
 fate-cdxl: $(FATE_CDXL-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 16/32] fate/fits: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/fits.mak | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/tests/fate/fits.mak b/tests/fate/fits.mak
index f16fc83266..ea471d6654 100644
--- a/tests/fate/fits.mak
+++ b/tests/fate/fits.mak
@@ -18,19 +18,19 @@ tests/data/lena%.fits: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 -i $(TARGET_SAMPLES)/png1/lena-$(map.$(@)).png \
 -y $(TARGET_PATH)/$(@) 2>/dev/null
 
-FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-ext_data_min_max
+FATE_FITS_DEC-$(call FRAMECRC, FITS, FITS, SCALE_FILTER) += 
fate-fitsdec-ext_data_min_max
 fate-fitsdec-ext_data_min_max: CMD = framecrc -i 
$(TARGET_SAMPLES)/fits/x0cj010ct_d0h.fit -pix_fmt gray16le -vf scale
 
-FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-blank_bitpix32
+FATE_FITS_DEC-$(call FRAMECRC, FITS, FITS, SCALE_FILTER) += 
fate-fitsdec-blank_bitpix32
 fate-fitsdec-blank_bitpix32: CMD = framecrc -blank_value 65535 -i 
$(TARGET_SAMPLES)/fits/file008.fits -pix_fmt gray16le -vf scale
 
-FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-bitpix-32
+FATE_FITS_DEC-$(call FRAMECRC, FITS, FITS, SCALE_FILTER) += 
fate-fitsdec-bitpix-32
 fate-fitsdec-bitpix-32: CMD = framecrc -i $(TARGET_SAMPLES)/fits/tst0005.fits 
-pix_fmt gray16le -vf scale
 
-FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-bitpix-64
+FATE_FITS_DEC-$(call FRAMECRC, FITS, FITS, SCALE_FILTER) += 
fate-fitsdec-bitpix-64
 fate-fitsdec-bitpix-64: CMD = framecrc -i $(TARGET_SAMPLES)/fits/tst0006.fits 
-pix_fmt gray16le -vf scale
 
-FATE_FITS_DEC-$(call ALLYES, GIF_DEMUXER FITS_DEMUXER GIF_DECODER FITS_DECODER 
FITS_ENCODER FITS_MUXER) += fate-fitsdec-multi
+FATE_FITS_DEC-$(call TRANSCODE, FITS, FITS, GIF_DEMUXER GIF_DECODER 
SCALE_FILTER) += fate-fitsdec-multi
 fate-fitsdec-multi: tests/data/fits-multi.fits
 fate-fitsdec-multi: CMD = framecrc -i 
$(TARGET_PATH)/tests/data/fits-multi.fits -pix_fmt gbrap
 
@@ -40,7 +40,7 @@ fate-fitsdec%: CMD = framecrc -i $(SRC) -pix_fmt $(PIXFMT)
 
 FATE_FITS_DEC_PIXFMT = gray gbrp gbrp16 gbrap16le
 $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%): fate-fitsdec-%: 
tests/data/lena-%.fits
-FATE_FITS_DEC-$(call ALLYES, FITS_DEMUXER IMAGE2_DEMUXER FITS_DECODER 
PNG_DECODER FITS_ENCODER FITS_MUXER) += $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%)
+FATE_FITS_DEC-$(call TRANSCODE, FITS, FITS, IMAGE2_DEMUXER PNG_DECODER 
SCALE_FILTER) += $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%)
 
 FATE_FITS += $(FATE_FITS_DEC-yes)
 fate-fitsdec: $(FATE_FITS_DEC-yes)
@@ -51,7 +51,7 @@ fate-fitsenc%: CMD = framecrc -auto_conversion_filters -i 
$(SRC) -c:v fits -pix_
 
 FATE_FITS_ENC_PIXFMT = gray gray16be gbrp gbrap gbrp16be gbrap16be
 $(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%): tests/data/fits-multi.fits
-FATE_FITS_ENC-$(call ALLYES, GIF_DEMUXER GIF_DECODER FITS_ENCODER FITS_MUXER) 
+= $(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%)
+FATE_FITS_ENC-$(call TRANSCODE, FITS, FITS, GIF_DEMUXER GIF_DECODER 
SCALE_FILTER) += $(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%)
 
 FATE_FITS += $(FATE_FITS_ENC-yes)
 fate-fitsenc: $(FATE_FITS_ENC-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 14/32] fate/bmp: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/bmp.mak | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/fate/bmp.mak b/tests/fate/bmp.mak
index de27f19b15..050d3d1357 100644
--- a/tests/fate/bmp.mak
+++ b/tests/fate/bmp.mak
@@ -22,7 +22,7 @@ fate-bmp-15bit-mask: CMD = framecrc -i 
$(TARGET_SAMPLES)/bmp/test16bf555.bmp -pi
 FATE_BMP += fate-bmp-16bit-mask
 fate-bmp-16bit-mask: CMD = framecrc -i $(TARGET_SAMPLES)/bmp/test16bf565.bmp 
-pix_fmt rgb565le -vf scale
 
-FATE_BMP += fate-bmp-24bit
+FATE_BMP-$(call FRAMECRC, IMAGE2, BMP) += fate-bmp-24bit
 fate-bmp-24bit: CMD = framecrc -i $(TARGET_SAMPLES)/bmp/test24.bmp
 
 FATE_BMP += fate-bmp-32bit
@@ -37,7 +37,7 @@ fate-bmp-rle4: CMD = framecrc -i 
$(TARGET_SAMPLES)/bmp/testcompress4.bmp -pix_fm
 FATE_BMP += fate-bmp-rle8
 fate-bmp-rle8: CMD = framecrc -i $(TARGET_SAMPLES)/bmp/testcompress8.bmp 
-pix_fmt rgb24 -vf scale
 
-FATE_BMP-$(call DEMDEC, IMAGE2, BMP) += $(FATE_BMP)
+FATE_BMP-$(call FRAMECRC, IMAGE2, BMP, SCALE_FILTER) += $(FATE_BMP)
 
 FATE_SAMPLES_AVCONV += $(FATE_BMP-yes)
 fate-bmp: $(FATE_BMP-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 15/32] fate/utvideo: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/utvideo.mak | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/tests/fate/utvideo.mak b/tests/fate/utvideo.mak
index 9329df5386..bf8401c370 100644
--- a/tests/fate/utvideo.mak
+++ b/tests/fate/utvideo.mak
@@ -64,8 +64,9 @@ fate-utvideo_yuv444_709_gradient: CMD = framecrc -i 
$(TARGET_SAMPLES)/utvideo/ut
 FATE_UTVIDEO += fate-utvideo_yuv444_709_int_gradient
 fate-utvideo_yuv444_709_int_gradient: CMD = framecrc -i 
$(TARGET_SAMPLES)/utvideo/utvideo_yuv444_709_64x48_int_gradient.avi
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, UTVIDEO) += $(FATE_UTVIDEO)
-fate-utvideo: $(FATE_UTVIDEO)
+FATE_UTVIDEO-$(call FRAMECRC, AVI, UTVIDEO) += $(FATE_UTVIDEO)
+FATE_SAMPLES_FFMPEG += $(FATE_UTVIDEO-yes)
+fate-utvideo: $(FATE_UTVIDEO-yes)
 
 fate-utvideoenc%: CMD = framemd5 -f image2 -c:v pgmyuv -i 
$(TARGET_PATH)/tests/vsynth1/%02d.pgm -c:v utvideo -slices 1 -sws_flags 
+accurate_rnd+bitexact ${OPTS} -vf scale
 
@@ -116,5 +117,6 @@ fate-utvideoenc_yuv444_none: OPTS = -pix_fmt yuv444p -pred 
none
 
 $(FATE_UTVIDEOENC): $(VREF)
 
-FATE_AVCONV-$(call ENCMUX, UTVIDEO, AVI) += $(FATE_UTVIDEOENC)
-fate-utvideoenc: $(FATE_UTVIDEOENC)
+FATE_UTVIDEOENC-$(call FILTERDEMDECENCMUX, SCALE, IMAGE2, PGMYUV, UTVIDEO, 
FRAMEMD5, PIPE_PROTOCOL) += $(FATE_UTVIDEOENC)
+FATE_FFMPEG += $(FATE_UTVIDEOENC-yes)
+fate-utvideoenc: $(FATE_UTVIDEOENC-yes)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 07/32] tests/Makefile: Make DEMDEC etc. auxiliary functions more flexible

2022-04-23 Thread Andreas Rheinhardt
Add a parameter that allows to add additional requirements.
Also add FILE_PROTOCOL to all the auxiliary functions
that use a demuxer.

Also fix the requirements for the fate-mpegts-probe-(latm|program)
tests. They have misused DEMDEC.

Signed-off-by: Andreas Rheinhardt 
---
 tests/Makefile| 20 +++-
 tests/fate/mpegts.mak |  4 ++--
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index 5e4da2c42f..e175631258 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -68,11 +68,13 @@ XYES= $(if $(strip $(1)),   
\
yes)
 
 ENCDEC  = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER  \
- $(firstword $(2))_MUXER   $(lastword $(2))_DEMUXER)
+ $(firstword $(2))_MUXER   $(lastword $(2))_DEMUXER  \
+ $(3) FILE_PROTOCOL)
 
 ENCDEC2 = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER  \
  $(firstword $(2))_ENCODER $(lastword $(2))_DECODER  \
- $(firstword $(3))_MUXER   $(lastword $(3))_DEMUXER)
+ $(firstword $(3))_MUXER   $(lastword $(3))_DEMUXER  \
+ $(4) FILE_PROTOCOL)
 
 # RAWVIDEO_ENCODER and PCM_S16LE_ENCODER corresponds to the default codecs
 # for framecrc. These requirements are not always necessary.
@@ -84,16 +86,16 @@ TRANSCODE = $(call ALLYES, $(firstword $(1))_ENCODER 
$(lastword $(1))_DECODER \
 REMUX = $(call ALLYES, $(firstword $(1))_MUXER $(lastword $(1))_DEMUXER \
$(2) FILE_PROTOCOL PIPE_PROTOCOL FRAMECRC_MUXER)
 
-DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER))
-ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER)
+DEMDEC  = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER) $(3) FILE_PROTOCOL)
+ENCMUX  = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER   $(3))
 
-DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER)
+DEMMUX  = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER $(3) FILE_PROTOCOL)
 
-FILTERDEMDEC   = $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER)
-FILTERDEMDECMUX= $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER 
$(4)_MUXER)
-FILTERDEMDECENCMUX = $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER 
$(4)_ENCODER $(5)_MUXER)
+FILTERDEMDEC   = $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER 
$(4) FILE_PROTOCOL)
+FILTERDEMDECMUX= $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER 
$(4)_MUXER   $(5) FILE_PROTOCOL)
+FILTERDEMDECENCMUX = $(call ALLYES, $(1:%=%_FILTER) $(2)_DEMUXER $(3)_DECODER 
$(4)_ENCODER $(5)_MUXER $(6) FILE_PROTOCOL)
 
-PARSERDEMDEC   = $(call ALLYES, $(1)_PARSER $(2)_DEMUXER $(3)_DECODER)
+PARSERDEMDEC   = $(call ALLYES, $(1)_PARSER $(2)_DEMUXER $(3)_DECODER $(4) 
FILE_PROTOCOL)
 
 # Allow overriding CONFIG_LARGE_TESTS via LARGE_TESTS, if set on the
 # make command line.
diff --git a/tests/fate/mpegts.mak b/tests/fate/mpegts.mak
index bbcbfc47b2..eaca8ec289 100644
--- a/tests/fate/mpegts.mak
+++ b/tests/fate/mpegts.mak
@@ -5,12 +5,12 @@ PROBE_CODEC_NAME_COMMAND = \
 ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=codec_name \
 -print_format default -bitexact -v 0
 
-FATE_MPEGTS_PROBE-$(call DEMDEC, MPEGTS, HEVC, AAC_LATM) += 
fate-mpegts-probe-latm
+FATE_MPEGTS_PROBE-$(call DEMDEC, MPEGTS, HEVC, LOAS_DEMUXER) += 
fate-mpegts-probe-latm
 fate-mpegts-probe-latm: SRC = $(TARGET_SAMPLES)/mpegts/loewe.ts
 fate-mpegts-probe-latm: CMD = run $(PROBE_CODEC_NAME_COMMAND) -i "$(SRC)"
 
 
-FATE_MPEGTS_PROBE-$(call DEMDEC, MPEGTS, HEVC, AAC_LATM) += 
fate-mpegts-probe-program
+FATE_MPEGTS_PROBE-$(call DEMDEC, MPEGTS, HEVC, LOAS_DEMUXER) += 
fate-mpegts-probe-program
 fate-mpegts-probe-program: SRC = $(TARGET_SAMPLES)/mpegts/loewe.ts
 fate-mpegts-probe-program: CMD = run $(PROBE_CODEC_NAME_COMMAND) 
-select_streams p:769:v:0 -i "$(SRC)"
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 17/32] fate/fits: Use transcode for transcode-like test

2022-04-23 Thread Andreas Rheinhardt
Each of the intermediately generated lena-*.fits files is only used
for exactly one test; so it could be deleted right after the test.
Switching to a transcode test (which is also more natural) achieves
this. It also adds checksums of the intermediate files to the ref-file.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/fits.mak  | 19 +--
 tests/ref/fate/fitsdec-gbrap16le |  2 ++
 tests/ref/fate/fitsdec-gbrp  |  2 ++
 tests/ref/fate/fitsdec-gbrp16|  2 ++
 tests/ref/fate/fitsdec-gray  |  2 ++
 5 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/tests/fate/fits.mak b/tests/fate/fits.mak
index ea471d6654..b9e99d97ee 100644
--- a/tests/fate/fits.mak
+++ b/tests/fate/fits.mak
@@ -6,17 +6,10 @@ tests/data/fits-multi.fits: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 #mapping of fits file formats to png filenames
 # TODO: Use an actual 64bit input file and fix the gbrp16 test on big-endian
-map.tests/data/lena-gray.fits:= gray8
-map.tests/data/lena-gbrp.fits:= rgb24
-map.tests/data/lena-gbrp16.fits  := rgb48
-map.tests/data/lena-gbrap16le.fits := rgba64
-
-tests/data/lena%.fits: TAG = GEN
-tests/data/lena%.fits: NAME = $(map.$(@))
-tests/data/lena%.fits: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
-   $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
--i $(TARGET_SAMPLES)/png1/lena-$(map.$(@)).png \
--y $(TARGET_PATH)/$(@) 2>/dev/null
+fits-png-map-gray  := gray8
+fits-png-map-gbrp  := rgb24
+fits-png-map-gbrp16:= rgb48
+fits-png-map-gbrap16le := rgba64
 
 FATE_FITS_DEC-$(call FRAMECRC, FITS, FITS, SCALE_FILTER) += 
fate-fitsdec-ext_data_min_max
 fate-fitsdec-ext_data_min_max: CMD = framecrc -i 
$(TARGET_SAMPLES)/fits/x0cj010ct_d0h.fit -pix_fmt gray16le -vf scale
@@ -35,11 +28,9 @@ fate-fitsdec-multi: tests/data/fits-multi.fits
 fate-fitsdec-multi: CMD = framecrc -i 
$(TARGET_PATH)/tests/data/fits-multi.fits -pix_fmt gbrap
 
 fate-fitsdec%: PIXFMT = $(word 3, $(subst -, ,$(@)))
-fate-fitsdec%: SRC = $(TARGET_PATH)/tests/data/lena-$(PIXFMT).fits
-fate-fitsdec%: CMD = framecrc -i $(SRC) -pix_fmt $(PIXFMT)
+fate-fitsdec%: CMD = transcode image2 
$(TARGET_SAMPLES)/png1/lena-$(fits-png-map-$(PIXFMT)).png fits "-vf scale 
-pix_fmt $(PIXFMT)"
 
 FATE_FITS_DEC_PIXFMT = gray gbrp gbrp16 gbrap16le
-$(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%): fate-fitsdec-%: 
tests/data/lena-%.fits
 FATE_FITS_DEC-$(call TRANSCODE, FITS, FITS, IMAGE2_DEMUXER PNG_DECODER 
SCALE_FILTER) += $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%)
 
 FATE_FITS += $(FATE_FITS_DEC-yes)
diff --git a/tests/ref/fate/fitsdec-gbrap16le b/tests/ref/fate/fitsdec-gbrap16le
index 78abb5cde7..53ef980b13 100644
--- a/tests/ref/fate/fitsdec-gbrap16le
+++ b/tests/ref/fate/fitsdec-gbrap16le
@@ -1,3 +1,5 @@
+64526d8da12d1fa07ceea5725647076f *tests/data/fate/fitsdec-gbrap16le.fits
+135360 tests/data/fate/fitsdec-gbrap16le.fits
 #tb 0: 1/1
 #media_type 0: video
 #codec_id 0: rawvideo
diff --git a/tests/ref/fate/fitsdec-gbrp b/tests/ref/fate/fitsdec-gbrp
index 8767b6715f..23249f492b 100644
--- a/tests/ref/fate/fitsdec-gbrp
+++ b/tests/ref/fate/fitsdec-gbrp
@@ -1,3 +1,5 @@
+38e232e4c1ca57b5866efa01da70359c *tests/data/fate/fitsdec-gbrp.fits
+54720 tests/data/fate/fitsdec-gbrp.fits
 #tb 0: 1/1
 #media_type 0: video
 #codec_id 0: rawvideo
diff --git a/tests/ref/fate/fitsdec-gbrp16 b/tests/ref/fate/fitsdec-gbrp16
index f6368f2c02..9250690e9b 100644
--- a/tests/ref/fate/fitsdec-gbrp16
+++ b/tests/ref/fate/fitsdec-gbrp16
@@ -1,3 +1,5 @@
+2078208c93ba417d3fe150ba42bf5a30 *tests/data/fate/fitsdec-gbrp16.fits
+103680 tests/data/fate/fitsdec-gbrp16.fits
 #tb 0: 1/1
 #media_type 0: video
 #codec_id 0: rawvideo
diff --git a/tests/ref/fate/fitsdec-gray b/tests/ref/fate/fitsdec-gray
index 488ee71022..b7992bfda3 100644
--- a/tests/ref/fate/fitsdec-gray
+++ b/tests/ref/fate/fitsdec-gray
@@ -1,3 +1,5 @@
+c02ac3e0a9f2ceeb1e6e66c085a63671 *tests/data/fate/fitsdec-gray.fits
+20160 tests/data/fate/fitsdec-gray.fits
 #tb 0: 1/1
 #media_type 0: video
 #codec_id 0: rawvideo
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 18/32] avformat/fitsenc: Simplify writing header padding

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 libavformat/fitsenc.c | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/libavformat/fitsenc.c b/libavformat/fitsenc.c
index 5cf34ef067..37ee10bb13 100644
--- a/libavformat/fitsenc.c
+++ b/libavformat/fitsenc.c
@@ -24,6 +24,7 @@
  * FITS muxer.
  */
 
+#include "avio_internal.h"
 #include "internal.h"
 
 typedef struct FITSContext {
@@ -177,11 +178,7 @@ static int write_image_header(AVFormatContext *s)
 lines_written++;
 
 lines_left = ((lines_written + 35) / 36) * 36 - lines_written;
-memset(buffer, ' ', 80);
-while (lines_left > 0) {
-avio_write(s->pb, buffer, sizeof(buffer));
-lines_left--;
-}
+ffio_fill(s->pb, ' ', sizeof(buffer) * lines_left);
 return 0;
 }
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 19/32] fate/speedhq: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/speedhq.mak | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/fate/speedhq.mak b/tests/fate/speedhq.mak
index 32405b710f..199ee160ea 100644
--- a/tests/fate/speedhq.mak
+++ b/tests/fate/speedhq.mak
@@ -4,5 +4,5 @@ FATE_SPEEDHQ = fate-speedhq-422 
  \
 fate-speedhq-422: CMD = framecrc -flags +bitexact -f rawvideo -c:v 
speedhq -tag:v SHQ2 -video_size 112x64 -i 
$(TARGET_SAMPLES)/speedhq/progressive.shq2 -pix_fmt yuv422p
 fate-speedhq-422-singlefield: CMD = framecrc -flags +bitexact -f rawvideo -c:v 
speedhq -tag:v SHQ2 -video_size 112x32 -i 
$(TARGET_SAMPLES)/speedhq/singlefield.shq2 -pix_fmt yuv422p
 
-FATE_SAMPLES_FFMPEG-$(call DEMDEC, RAWVIDEO, SPEEDHQ) += $(FATE_SPEEDHQ)
+FATE_SAMPLES_FFMPEG-$(call FRAMECRC, RAWVIDEO, SPEEDHQ) += $(FATE_SPEEDHQ)
 fate-speedhq: $(FATE_SPEEDHQ)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 20/32] tests/fate-run: Remove intermediate lavf_container_fate files

2022-04-23 Thread Andreas Rheinhardt
They are not used lateron.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate-run.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 8c27210ac0..a96ff049b0 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -340,6 +340,7 @@ lavf_container_fate()
 t="${test#lavf-fate-}"
 outdir="tests/data/lavf-fate"
 file=${outdir}/lavf.$t
+cleanfiles="$cleanfiles $file"
 input="${target_samples}/$1"
 do_avconv $file -auto_conversion_filters $DEC_OPTS $2 -i "$input" 
"$ENC_OPTS -metadata title=lavftest" -vcodec copy -acodec copy
 do_avconv_crc $file -auto_conversion_filters $DEC_OPTS -i 
$target_path/$file $3
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 21/32] fate/seek: Avoid list of source files

2022-04-23 Thread Andreas Rheinhardt
The output files of the lavf tests are highly regular,
allowing to use rules for the src files instead of a list.

Signed-off-by: Andreas Rheinhardt 
---
The list of vsynth and acodec src file names could be removed if
the tests were to be renamed/modified to allow to infer said filename
from the name of the test.

 tests/fate/seek.mak | 157 
 1 file changed, 72 insertions(+), 85 deletions(-)

diff --git a/tests/fate/seek.mak b/tests/fate/seek.mak
index 5efec32702..b4e9246cc3 100644
--- a/tests/fate/seek.mak
+++ b/tests/fate/seek.mak
@@ -160,91 +160,78 @@ fate-seek-vsynth_lena-yuv:   SRC = 
fate/vsynth_lena-yuv.avi
 
 FATE_SAMPLES_SEEK += $(FATE_SEEK_VSYNTH_LENA-yes:%=fate-seek-vsynth_lena-%)
 
-# files from fate-lavf
-
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_S16BE, AIFF)+= aiff
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_ALAW,  PCM_ALAW)+= al
-FATE_SEEK_LAVF-$(call ENCDEC2, MSMPEG4V3,  MP2,   ASF) += asf
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_S16BE, AU)  += au
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG4,  MP2,   AVI) += avi
-FATE_SEEK_LAVF-$(call ENCDEC,  BMP,   IMAGE2)  += bmp
-FATE_SEEK_LAVF-$(call ENCDEC2, DVVIDEO,PCM_S16LE, AVI) += dv
-FATE_SEEK_LAVF-$(call ENCDEC,  FLV,   FLV) += flv
-FATE_SEEK_LAVF-$(call ENCDEC,  GIF,   IMAGE2)  += gif
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, GXF) += gxf
-FATE_SEEK_LAVF-$(call ENCDEC,  MJPEG, IMAGE2)  += jpg
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG4,  MP2,   MATROSKA)+= mkv
-FATE_SEEK_LAVF-$(call ENCDEC,  ADPCM_YAMAHA,  MMF) += mmf
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG4,  PCM_ALAW,  MOV) += mov
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG1VIDEO, MP2,   MPEG1SYSTEM MPEGPS) += 
mpg
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_MULAW, PCM_MULAW)   += ul
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF) += mxf
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF_D10 MXF) += mxf_d10
-FATE_SEEK_LAVF-$(call ENCDEC2, DVVIDEO,PCM_S16LE, MXF) += mxf_dv25
-FATE_SEEK_LAVF-$(call ENCDEC2, DVVIDEO,PCM_S16LE, MXF) += 
mxf_dvcpro50
-FATE_SEEK_LAVF-$(call ENCDEC2, DNXHD,  PCM_S16LE, MXF_OPATOM MXF) += 
mxf_opatom
-FATE_SEEK_LAVF-$(call ENCDEC2, DNXHD,  PCM_S16LE, MXF_OPATOM MXF) += 
mxf_opatom_audio
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG4,  MP2,   NUT) += nut
-FATE_SEEK_LAVF-$(call ENCDEC,  FLAC,  OGG) += ogg
-FATE_SEEK_LAVF-$(call ENCDEC,  PBM,   IMAGE2PIPE)  += pbmpipe
-FATE_SEEK_LAVF-$(call ENCDEC,  PCX,   IMAGE2)  += pcx
-FATE_SEEK_LAVF-$(call ENCDEC,  PGM,   IMAGE2)  += pgm
-FATE_SEEK_LAVF-$(call ENCDEC,  PGM,   IMAGE2PIPE)  += pgmpipe
-FATE_SEEK_LAVF-$(call ENCDEC,  PPM,   IMAGE2)  += ppm
-FATE_SEEK_LAVF-$(call ENCDEC,  PPM,   IMAGE2PIPE)  += ppmpipe
-FATE_SEEK_LAVF-$(call ENCMUX,  RV10 AC3_FIXED,RM)  += rm
-FATE_SEEK_LAVF-$(call ENCDEC,  SGI,   IMAGE2)  += sgi
-FATE_SEEK_LAVF-$(call ENCDEC,  FLV,   SWF) += swf
-FATE_SEEK_LAVF-$(call ENCDEC,  TARGA, IMAGE2)  += tga
-FATE_SEEK_LAVF-$(call ENCDEC,  TIFF,  IMAGE2)  += tiff
-FATE_SEEK_LAVF-$(call ENCDEC2, MPEG2VIDEO, MP2,   MPEGTS)  += ts
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_U8,VOC) += voc
-FATE_SEEK_LAVF-$(call ENCDEC,  PCM_S16LE, WAV) += wav
-FATE_SEEK_LAVF-$(call ENCDEC,  MP2,   WTV) += wtv
-FATE_SEEK_LAVF-$(CONFIG_YUV4MPEGPIPE_MUXER)+= y4m
-
-fate-seek-lavf-aiff: SRC = lavf/lavf.aiff
-fate-seek-lavf-al:   SRC = lavf/lavf.al
-fate-seek-lavf-asf:  SRC = lavf/lavf.asf
-fate-seek-lavf-au:   SRC = lavf/lavf.au
-fate-seek-lavf-avi:  SRC = lavf/lavf.avi
-fate-seek-lavf-bmp:  SRC = images/bmp/%02d.bmp
-fate-seek-lavf-dv:   SRC = lavf/lavf.dv
-fate-seek-lavf-flv:  SRC = lavf/lavf.flv
-fate-seek-lavf-gif:  SRC = lavf/lavf.gif
-fate-seek-lavf-gxf:  SRC = lavf/lavf.gxf
-fate-seek-lavf-jpg:  SRC = images/jpg/%02d.jpg
-fate-seek-lavf-mkv:  SRC = lavf/lavf.mkv
-fate-seek-lavf-mmf:  SRC = lavf/lavf.mmf
-fate-seek-lavf-mov:  SRC = lavf/lavf.mov
-fate-seek-lavf-mpg:  SRC = lavf/lavf.mpg
-fate-seek-lavf-ul:   SRC = lavf/lavf.ul
-fate-seek-lavf-mxf:  SRC = lavf/lavf.mxf
-fate-seek-lavf-mxf_d10:  SRC = lavf/lavf.mxf_d10
-fate-seek-lavf-mxf_dv25: SRC = lavf/lavf.mxf_dv25
-fate-seek-lavf-mxf_dvcpro50: SRC = lavf/lavf.mxf_dvcpro50
-fate-seek-lavf-mxf_opatom: SRC = lavf/lavf.mxf_opatom
-fate-seek-lavf-mxf_opatom_audio: SRC = lavf/lavf.mxf_opatom_audio
-fate-seek-lavf-nut:  SRC = lavf/lavf.nut
-fate-seek-lavf-ogg:  SRC

[FFmpeg-devel] [PATCH 22/32] fate/seek: Don't duplicate test requirements

2022-04-23 Thread Andreas Rheinhardt
Most of the tests in seek.mak use files created by other tests
as input. Therefore these tests have the other tests as prerequisite
and duplicate their CONFIG-requirements. This duplication is of course
bad as usual, so stop it by using the corresponding variable
that contains the non-seek-tests that are enabled to filter out all
the seek-tests without a corresponding enabled non-seek test.

Signed-off-by: Andreas Rheinhardt 
---
 tests/Makefile  |   1 +
 tests/fate/seek.mak | 189 
 2 files changed, 68 insertions(+), 122 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index 1c9e3594c0..e02eb57035 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -120,6 +120,7 @@ include $(SRC_PATH)/tests/fate/lavf-container.mak
 include $(SRC_PATH)/tests/fate/lavf-image.mak
 include $(SRC_PATH)/tests/fate/lavf-image2pipe.mak
 include $(SRC_PATH)/tests/fate/lavf-video.mak
+# Must be included after acodec.mak, vcodec.mak and lavf-*.mak
 include $(SRC_PATH)/tests/fate/seek.mak
 
 include $(SRC_PATH)/tests/fate/aac.mak
diff --git a/tests/fate/seek.mak b/tests/fate/seek.mak
index b4e9246cc3..fc1ef50e49 100644
--- a/tests/fate/seek.mak
+++ b/tests/fate/seek.mak
@@ -1,32 +1,16 @@
 # files from fate-acodec
 
-FATE_SEEK_ACODEC-$(call ENCDEC, ADPCM_IMA_QT,  AIFF)+= adpcm-ima_qt \
-   adpcm-ima_qt-trellis
-FATE_SEEK_ACODEC-$(call ENCDEC, ADPCM_IMA_WAV, WAV) += adpcm-ima_wav \
-   
adpcm-ima_wav-trellis
-FATE_SEEK_ACODEC-$(call ENCDEC, ADPCM_MS,  WAV) += adpcm-ms  \
-   adpcm-ms-trellis
-FATE_SEEK_ACODEC-$(call ENCDEC, ADPCM_SWF, FLV) += adpcm-swf \
-   adpcm-swf-trellis
-FATE_SEEK_ACODEC-$(call ENCDEC, ADPCM_YAMAHA,  WAV) += adpcm-yamaha  \
-   adpcm-yamaha-trellis
-FATE_SEEK_ACODEC-$(call ENCDEC, ALAC,  MOV) += alac
-FATE_SEEK_ACODEC-$(call ENCDEC, FLAC,  FLAC)+= flac
-FATE_SEEK_ACODEC-$(call ENCDEC, MP2,   MP2 MP3) += mp2
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_ALAW,  WAV) += pcm-alaw
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_MULAW, WAV) += pcm-mulaw
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S8,MOV) += pcm-s8
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_U8,WAV) += pcm-u8
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S16BE, MOV) += pcm-s16be
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S16LE, WAV) += pcm-s16le
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S24BE, MOV) += pcm-s24be
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S24LE, WAV) += pcm-s24le
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S32BE, MOV) += pcm-s32be
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_S32LE, WAV) += pcm-s32le
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_F32BE, AU)  += pcm-f32be
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_F32LE, WAV) += pcm-f32le
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_F64BE, AU)  += pcm-f64be
-FATE_SEEK_ACODEC-$(call ENCDEC, PCM_F64LE, WAV) += pcm-f64le
+FATE_SEEK_ACODEC += adpcm-ima_qt  adpcm-ima_qt-trellis  \
+adpcm-ima_wav adpcm-ima_wav-trellis \
+adpcm-ms  adpcm-ms-trellis  \
+adpcm-swf adpcm-swf-trellis \
+adpcm-yamaha  adpcm-yamaha-trellis  \
+alac flac mp2   \
+pcm-alaw  pcm-mulaw pcm-s8 pcm-u8   \
+pcm-s16be pcm-s16le pcm-s24be   \
+pcm-s24le pcm-s32be pcm-s32le   \
+pcm-f32be pcm-f32le pcm-f64be   \
+pcm-f64le   \
 
 fate-seek-acodec-adpcm-ima_qt:  SRC = fate/acodec-adpcm-ima_qt.aiff
 fate-seek-acodec-adpcm-ima_wav: SRC = fate/acodec-adpcm-ima_wav.wav
@@ -56,57 +40,37 @@ fate-seek-acodec-pcm-s32le: SRC = 
fate/acodec-pcm-s32le.wav
 fate-seek-acodec-pcm-s8:SRC = fate/acodec-pcm-s8.mov
 fate-seek-acodec-pcm-u8:SRC = fate/acodec-pcm-u8.wav
 
-FATE_SEEK += $(FATE_SEEK_ACODEC-yes:%=fate-seek-acodec-%)
+FATE_SEEK_ACODEC := $(FATE_SEEK_ACODEC:%=fate-seek-acodec-%)
+# The following disables every fate-seek-* test whose
+# corresponding fate-* test has unmet requirements (or is disabled).
+FATE_SEEK_ACODEC := $(filter $(subst fate-,fate-seek-,$(FATE_ACODEC)), 
$(FATE_SEEK_ACODEC))
+FATE_SEEK += $(FATE_SEEK_ACODEC)
 
 # files from fate-vsynth_lena
 
-FATE_SEEK_VSYNTH_LENA-$(call ENCDEC, ASV1,  AVI) += asv1
-FATE_SEEK_VSYNTH_LENA-$(call ENCDEC, ASV2,  AVI) += asv2
-FATE_SEEK_VSYNTH_LENA-$(call ENCDEC, DNXHD, DNXHD)   += dnxhd-720p
-FATE_SEEK_VSYNTH_LENA-$(call ENCDEC, DNXHD, DNXHD)   += dnxhd-720p-rd
-FATE_SEEK_VSYNTH_LENA-$(call ENCDEC, DNXHD, MOV) += dnxhd-1080i
-FATE_SE

[FFmpeg-devel] [PATCH 23/32] fate/vcodec: Don't add scale filter unnecessarily

2022-04-23 Thread Andreas Rheinhardt
If one uses a -s command, a scale filter is inserted
even when doing so is redundant. This patch stops
doing so. This makes the tests that don't need libswscale
actually succeed in case it is disabled (only 315 of 470 tests
need it).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/vcodec.mak | 82 ++-
 1 file changed, 35 insertions(+), 47 deletions(-)

diff --git a/tests/fate/vcodec.mak b/tests/fate/vcodec.mak
index 2e6d16f1e7..667e3759a5 100644
--- a/tests/fate/vcodec.mak
+++ b/tests/fate/vcodec.mak
@@ -4,8 +4,9 @@ fate-vsynth_lena-%: SRC = tests/data/vsynth_lena.yuv
 fate-vsynth3-%: SRC = tests/data/vsynth3.yuv
 fate-vsynth%: CODEC = $(word 3, $(subst -, ,$(@)))
 fate-vsynth%: FMT = avi
-fate-vsynth%: CMD = enc_dec "rawvideo -s 352x288 -pix_fmt yuv420p 
$(RAWDECOPTS)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-s 352x288 
-pix_fmt yuv420p -vsync passthrough $(DECOPTS)" "$(KEEP_OVERRIDE)" 
"$(DECINOPTS)"
-fate-vsynth3-%: CMD = enc_dec "rawvideo -s $(FATEW)x$(FATEH) -pix_fmt yuv420p 
$(RAWDECOPTS)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-s 
$(FATEW)x$(FATEH) -pix_fmt yuv420p -vsync passthrough $(DECOPTS)" "" 
"$(DECINOPTS)"
+fate-vsynth%: DEFAULT_SIZE = -s 352x288
+fate-vsynth3-%: DEFAULT_SIZE = -s $(FATEW)x$(FATEH)
+fate-vsynth%: CMD = enc_dec "rawvideo $(DEFAULT_SIZE) -pix_fmt yuv420p 
$(RAWDECOPTS)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-pix_fmt 
yuv420p -vsync passthrough $(DECOPTS)" "$(KEEP_OVERRIDE)" "$(DECINOPTS)"
 fate-vsynth%: CMP_UNIT = 1
 fate-vsynth%: REF = $(SRC_PATH)/tests/ref/vsynth/$(@:fate-%=%)
 
@@ -20,24 +21,10 @@ fate-vsynth%-asv2:   ENCOPTS = -qscale 10
 
 FATE_VCODEC-$(call ENCDEC, CINEPAK, AVI) += cinepak
 fate-vsynth%-cinepak:ENCOPTS = -s sqcif -strip_number_adaptivity 1
-fate-vsynth%-cinepak:DECOPTS = -s sqcif
 
 FATE_VCODEC-$(call ENCDEC, CLJR, AVI)   += cljr
 fate-vsynth%-cljr:   ENCOPTS = -strict -1
 
-FATE_VCODEC-$(call ENCDEC, DNXHD, DNXHD) += dnxhd-720p  \
-dnxhd-720p-rd   \
-dnxhd-720p-10bit\
-dnxhd-720p-hr-lb\
-dnxhd-edge1-hr  \
-dnxhd-edge2-hr  \
-dnxhd-edge3-hr
-
-FATE_VCODEC-$(call ALLYES, DNXHD_ENCODER DNXHD_DECODER LARGE_TESTS) += 
dnxhd-4k-hr-lb \
-   
dnxhd-2k-hr-hq \
-   
dnxhd-uhd-hr-sq
-
-
 FATE_VCODEC-$(call ENCDEC, VC2 DIRAC, MOV) += vc2-420p vc2-420p10 vc2-420p12 \
   vc2-422p vc2-422p10 vc2-422p12 \
   vc2-444p vc2-444p10 vc2-444p12 \
@@ -59,112 +46,112 @@ fate-vsynth2-vc2-t%: ENCOPTS = -pix_fmt 
yuv422p10 -c:v vc2 -frames 5
 fate-vsynth_lena-vc2-t%: FMT = mov
 fate-vsynth_lena-vc2-t%: ENCOPTS = -pix_fmt yuv422p10 -c:v vc2 -frames 
5 -strict -1 -wavelet_type $(@:fate-vsynth_lena-vc2-t%=%)
 
+FATE_VCODEC_DNXHD_DNXHD := dnxhd-720p  \
+   dnxhd-720p-rd   \
+   dnxhd-720p-10bit\
+   dnxhd-720p-hr-lb\
+   dnxhd-edge1-hr  \
+   dnxhd-edge2-hr  \
+   dnxhd-edge3-hr  \
+   $(if $(CONFIG_LARGE_TESTS), dnxhd-4k-hr-lb   \
+   dnxhd-2k-hr-hq   \
+   dnxhd-uhd-hr-sq) \
+
+FATE_VCODEC-$(call ENCDEC, DNXHD, DNXHD) += $(FATE_VCODEC_DNXHD_DNXHD)
+
 fate-vsynth%-dnxhd-720p: ENCOPTS = -s hd720 -b 90M  \
-pix_fmt yuv422p -frames 5 -qmax 8
-fate-vsynth%-dnxhd-720p: FMT = dnxhd
 
 fate-vsynth%-dnxhd-720p-rd:  ENCOPTS = -s hd720 -b 90M -threads 4 -mbd rd \
-pix_fmt yuv422p -frames 5 -qmax 8
-fate-vsynth%-dnxhd-720p-rd:  FMT = dnxhd
 
 fate-vsynth%-dnxhd-720p-10bit:   ENCOPTS = -s hd720 -b 90M  \
-pix_fmt yuv422p10 -frames 5 -qmax 8
-fate-vsynth%-dnxhd-720p-10bit:   FMT = dnxhd
 
 fate-vsynth%-dnxhd-720p-hr-lb: ENCOPTS   = -s hd720 -profile:v dnxhr_lb \
-pix_fmt yuv422p -frames 5
 fate-vsynth%-dnxhd-720p-hr-lb: DECOPTS= -sws_flags 
area+accurate_rnd+bitexact
-fate-vsynth%-dnxhd-720p-hr-lb: FMT   = dnxhd
 
 fate-vsynth%-dnxhd-4k-hr-lb:  ENCOPTS= -s 4k -profile:v dnxhr_lb \
   

[FFmpeg-devel] [PATCH 24/32] fate/vcodec: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
This automatically fixes the requirements of the fate-seek-vsynth*
tests (e.g. 16 of the 49 such tests are now automatically disabled
if the scale filter is disabled).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/vcodec.mak | 82 +++
 1 file changed, 44 insertions(+), 38 deletions(-)

diff --git a/tests/fate/vcodec.mak b/tests/fate/vcodec.mak
index 667e3759a5..6f49ffed40 100644
--- a/tests/fate/vcodec.mak
+++ b/tests/fate/vcodec.mak
@@ -10,7 +10,7 @@ fate-vsynth%: CMD = enc_dec "rawvideo $(DEFAULT_SIZE) 
-pix_fmt yuv420p $(RAWDECO
 fate-vsynth%: CMP_UNIT = 1
 fate-vsynth%: REF = $(SRC_PATH)/tests/ref/vsynth/$(@:fate-%=%)
 
-FATE_VCODEC-$(call ENCDEC, AMV, AVI) += amv
+FATE_VCODEC_SCALE-$(call ENCDEC, AMV, AVI) += amv
 fate-vsynth%-amv:ENCOPTS = -strict -1
 
 FATE_VCODEC-$(call ENCDEC, ASV1, AVI)   += asv1
@@ -19,16 +19,17 @@ fate-vsynth%-asv1:   ENCOPTS = -qscale 10
 FATE_VCODEC-$(call ENCDEC, ASV2, AVI)   += asv2
 fate-vsynth%-asv2:   ENCOPTS = -qscale 10
 
-FATE_VCODEC-$(call ENCDEC, CINEPAK, AVI) += cinepak
+FATE_VCODEC_SCALE-$(call ENCDEC, CINEPAK, AVI) += cinepak
 fate-vsynth%-cinepak:ENCOPTS = -s sqcif -strip_number_adaptivity 1
 
-FATE_VCODEC-$(call ENCDEC, CLJR, AVI)   += cljr
+FATE_VCODEC_SCALE-$(call ENCDEC, CLJR, AVI)   += cljr
 fate-vsynth%-cljr:   ENCOPTS = -strict -1
 
-FATE_VCODEC-$(call ENCDEC, VC2 DIRAC, MOV) += vc2-420p vc2-420p10 vc2-420p12 \
-  vc2-422p vc2-422p10 vc2-422p12 \
-  vc2-444p vc2-444p10 vc2-444p12 \
-  vc2-thaar vc2-t5_3
+FATE_VCODEC-$(call ENCDEC, VC2 DIRAC, MOV) += vc2-420p
+FATE_VCODEC_SCALE-$(call ENCDEC, VC2 DIRAC, MOV) += vc2-420p10 vc2-420p12 \
+vc2-422p vc2-422p10 
vc2-422p12 \
+vc2-444p vc2-444p10 
vc2-444p12 \
+vc2-thaar vc2-t5_3
 fate-vsynth1-vc2-4%: FMT  = mov
 fate-vsynth1-vc2-4%: ENCOPTS = -pix_fmt 
yuv$(@:fate-vsynth1-vc2-%=%) \
-c:v vc2 -frames 5 -strict -1
@@ -57,7 +58,7 @@ FATE_VCODEC_DNXHD_DNXHD := dnxhd-720p  \
dnxhd-2k-hr-hq   \
dnxhd-uhd-hr-sq) \
 
-FATE_VCODEC-$(call ENCDEC, DNXHD, DNXHD) += $(FATE_VCODEC_DNXHD_DNXHD)
+FATE_VCODEC_SCALE-$(call ENCDEC, DNXHD, DNXHD) += $(FATE_VCODEC_DNXHD_DNXHD)
 
 fate-vsynth%-dnxhd-720p: ENCOPTS = -s hd720 -b 90M  \
-pix_fmt yuv422p -frames 5 -qmax 8
@@ -102,7 +103,7 @@ $(FATE_VCODEC_DNXHD_DNXHD:%=fate-vsynth\%-%): DECOPTS += 
$(DEFAULT_SIZE)
 FATE_VCODEC_DNXHD_MOV := dnxhd-1080i dnxhd-1080i-10bit dnxhd-1080i-colr  \
  dnxhd-hr-lb-mov dnxhd-hr-sq-mov dnxhd-hr-hq-mov \
 
-FATE_VCODEC-$(call ENCDEC, DNXHD, MOV)  += $(FATE_VCODEC_DNXHD_MOV)
+FATE_VCODEC_SCALE-$(call ENCDEC, DNXHD, MOV)  += $(FATE_VCODEC_DNXHD_MOV)
 fate-vsynth%-dnxhd-1080i:ENCOPTS = -s hd1080 -b 120M -flags +ildct \
-pix_fmt yuv422p -frames 5 -qmax 8
 
@@ -130,7 +131,7 @@ $(FATE_VCODEC_DNXHD_MOV:%=fate-vsynth\%-%): FMT  = mov
 $(FATE_VCODEC_DNXHD_MOV:%=fate-vsynth\%-%): DECOPTS += $(DEFAULT_SIZE)
 
 FATE_VCODEC_DV := dv dv-411 dv-50 dv-hd dv-fhd
-FATE_VCODEC-$(call ENCDEC, DVVIDEO, DV) += $(FATE_VCODEC_DV)
+FATE_VCODEC_SCALE-$(call ENCDEC, DVVIDEO, DV) += $(FATE_VCODEC_DV)
 fate-vsynth%-dv: ENCOPTS = -dct int -s pal
 
 fate-vsynth%-dv-411: ENCOPTS = -dct int -s pal -pix_fmt yuv411p \
@@ -154,8 +155,9 @@ $(FATE_VCODEC_DV:%=fate-vsynth\%-%): FMT  = dv
 $(FATE_VCODEC_DV:%=fate-vsynth\%-%): DECOPTS += $(DEFAULT_SIZE)
 
 FATE_VCODEC-$(call ENCDEC, FFV1, AVI)   += ffv1 ffv1-v0 \
-   ffv1-v3-yuv420p ffv1-v3-yuv422p10 
ffv1-v3-yuv444p16 \
-   ffv1-v3-bgr0 ffv1-v3-rgb48
+   ffv1-v3-yuv420p
+FATE_VCODEC_SCALE-$(call ENCDEC, FFV1, AVI) += ffv1-v3-yuv422p10 
ffv1-v3-yuv444p16 \
+   ffv1-v3-bgr0 ffv1-v3-rgb48
 fate-vsynth%-ffv1:   ENCOPTS = -slices 4
 fate-vsynth%-ffv1-v0:CODEC   = ffv1
 fate-vsynth%-ffv1-v3-yuv420p:ENCOPTS = -level 3 -pix_fmt yuv420p
@@ -172,18 +174,19 @@ fate-vsynth%-ffv1-v3-rgb48:  ENCOPTS = -level 3 
-pix_fmt rgb48 -strict -2 \
-sws_flags neighbor+bitexact
 fate-vsynth%-ffv1-v3-rgb48:  DECOPTS = -sws_flags neighbor+bitexact
 
-FATE_VCODEC-$(call ENCDEC, FFVHUFF, AVI) += ffvhuff ffvhuff444 ffvhuff420p12 
ffvhuff422p10left ffvhuff444p16
+FATE_VCODEC

[FFmpeg-devel] [PATCH 25/32] fate/acodec: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
This automatically fixes the requirements of the fate-seek-acodec*
tests (e.g. 16 of the 27 such tests are now automatically disabled
if the aresample filter is disabled).

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/acodec.mak | 85 ++-
 1 file changed, 43 insertions(+), 42 deletions(-)

diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak
index eda449c085..efaeaf2c6e 100644
--- a/tests/fate/acodec.mak
+++ b/tests/fate/acodec.mak
@@ -6,31 +6,33 @@ fate-acodec-%: REF = 
$(SRC_PATH)/tests/ref/acodec/$(@:fate-acodec-%=%)
 
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_ALAW,  WAV) += alaw
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_MULAW, WAV) += mulaw
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S8,MOV) += s8
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_U8,WAV) += u8
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S8,MOV) += s8
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_U8,WAV) += u8
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_S16BE, MOV) += s16be
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_S16LE, WAV) += s16le
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_U16BE, NUT) += u16be
 FATE_ACODEC_PCM-$(call ENCDEC, PCM_U16LE, NUT) += u16le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S24BE, MOV) += s24be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S24LE, WAV) += s24le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_U24BE, NUT) += u24be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_U24LE, NUT) += u24le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S32BE, MOV) += s32be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S32LE, WAV) += s32le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_U32BE, NUT) += u32be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_U32LE, NUT) += u32le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_F32BE, AU)  += f32be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_F32LE, WAV) += f32le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_F64BE, AU)  += f64be
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_F64LE, WAV) += f64le
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S8_PLANAR, NUT) += s8_planar
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S16BE_PLANAR, NUT) += s16be_planar
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S16LE_PLANAR, NUT) += s16le_planar
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S24LE_PLANAR, NUT) += s24le_planar
-FATE_ACODEC_PCM-$(call ENCDEC, PCM_S32LE_PLANAR, NUT) += s32le_planar
-
-FATE_ACODEC_PCM := $(FATE_ACODEC_PCM-yes:%=fate-acodec-pcm-%)
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S24BE, MOV) += s24be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S24LE, WAV) += s24le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_U24BE, NUT) += u24be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_U24LE, NUT) += u24le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S32BE, MOV) += s32be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S32LE, WAV) += s32le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_U32BE, NUT) += u32be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_U32LE, NUT) += u32le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_F32BE, AU)  += f32be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_F32LE, WAV) += f32le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_F64BE, AU)  += f64be
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_F64LE, WAV) += f64le
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S8_PLANAR, NUT) += s8_planar
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S16BE_PLANAR, NUT) += s16be_planar
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S16LE_PLANAR, NUT) += s16le_planar
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S24LE_PLANAR, NUT) += s24le_planar
+FATE_ACODEC_PCM_RESAMPLE-$(call ENCDEC, PCM_S32LE_PLANAR, NUT) += s32le_planar
+
+FATE_ACODEC_PCM-$(CONFIG_ARESAMPLE_FILTER) += $(FATE_ACODEC_PCM_RESAMPLE-yes)
+FATE_ACODEC_PCM := $(if $(call ENCDEC, PCM_S16LE, WAV), $(FATE_ACODEC_PCM-yes))
+FATE_ACODEC_PCM := $(FATE_ACODEC_PCM:%=fate-acodec-pcm-%)
 FATE_ACODEC += $(FATE_ACODEC_PCM)
 fate-acodec-pcm: $(FATE_ACODEC_PCM)
 
@@ -44,20 +46,22 @@ fate-acodec-pcm-u%be: FMT = nut
 fate-acodec-pcm-u%le: FMT = nut
 fate-acodec-pcm-f%be: FMT = au
 
-FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_ADX, ADX)  += adx
-FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_ARGO,ARGO_ASF) += argo
+FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_ADX,  ADX)  += adx
+FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_ARGO, ARGO_ASF) += argo
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_APM, APM)  += ima_apm
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_ALP, ALP)  += ima_alp
-FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_QT,  AIFF) += ima_qt
+FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_IMA_QT,  AIFF)  += ima_qt
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_SSI, KVAG) += ima_ssi
-FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_WAV, WAV)  += ima_wav
+FATE_ACODEC_ADPCM_RESAMPLE-$(call ENCDEC, ADPCM_IMA_WAV, WAV)   += ima_wav
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_IMA_WS,  WSAUD)+= ima_ws
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_MS,  WAV)  += ms
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_SWF, FLV)  += swf
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_SWF, WAV)  += swf-wav
 FATE_ACODEC_ADPCM-$(call ENCDEC, ADPCM_YAMAHA,  WAV)  += yamaha
 
-FATE_ACODEC_ADPCM := $(FATE

[FFmpeg-devel] [PATCH 26/32] fate/acodec: Remove acodec-adpcm-adx-trellis test

2022-04-23 Thread Andreas Rheinhardt
adx ignores the trellis option, making this test identical
to acodec-adpcm-adx.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/acodec.mak  | 3 +--
 tests/ref/acodec/adpcm-adx-trellis | 4 
 2 files changed, 1 insertion(+), 6 deletions(-)
 delete mode 100644 tests/ref/acodec/adpcm-adx-trellis

diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak
index efaeaf2c6e..848d57ef9c 100644
--- a/tests/fate/acodec.mak
+++ b/tests/fate/acodec.mak
@@ -84,7 +84,7 @@ fate-acodec-adpcm-swf-wav: CODEC = adpcm_swf
 fate-acodec-adpcm-ima_alp: FMT = alp
 fate-acodec-adpcm-ima_alp: ENCOPTS = -type pcm
 
-FATE_ACODEC_ADPCM_TRELLIS := adx ima_qt ima_wav ms swf yamaha
+FATE_ACODEC_ADPCM_TRELLIS := ima_qt ima_wav ms swf yamaha
 
 FATE_ACODEC_ADPCM_TRELLIS := 
$(FATE_ACODEC_ADPCM_TRELLIS:%=fate-acodec-adpcm-%-trellis)
 FATE_ACODEC_ADPCM_TRELLIS := $(filter $(addsuffix 
-trellis,$(FATE_ACODEC_ADPCM)), $(FATE_ACODEC_ADPCM_TRELLIS))
@@ -94,7 +94,6 @@ fate-acodec-adpcm-trellis: $(FATE_ACODEC_ADPCM_TRELLIS)
 fate-acodec-adpcm-%-trellis: CODEC = adpcm_$(@:fate-acodec-adpcm-%-trellis=%)
 fate-acodec-adpcm-%-trellis: ENCOPTS = -trellis 5
 
-fate-acodec-adpcm-adx-trellis: FMT = adx
 fate-acodec-adpcm-ima_qt-trellis:  FMT = aiff
 fate-acodec-adpcm-ima_wav-trellis: FMT = wav
 fate-acodec-adpcm-ms-trellis:  FMT = wav
diff --git a/tests/ref/acodec/adpcm-adx-trellis 
b/tests/ref/acodec/adpcm-adx-trellis
deleted file mode 100644
index f6f5d768f5..00
--- a/tests/ref/acodec/adpcm-adx-trellis
+++ /dev/null
@@ -1,4 +0,0 @@
-c257001314241b469a6512616fd56548 *tests/data/fate/acodec-adpcm-adx-trellis.adx
-297738 tests/data/fate/acodec-adpcm-adx-trellis.adx
-5b5a436ec9d528d6eb0bebaf667521b0 
*tests/data/fate/acodec-adpcm-adx-trellis.out.wav
-stddev: 2549.93 PSNR: 28.20 MAXDIFF:57514 bytes:  1058400/  1058432
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 27/32] avformat/format: Also search for image2-codecs for image2pipe

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 libavformat/format.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/format.c b/libavformat/format.c
index 5f8155be59..4b1f3c2986 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -99,7 +99,7 @@ enum AVCodecID av_guess_codec(const AVOutputFormat *fmt, 
const char *short_name,
 if (type == AVMEDIA_TYPE_VIDEO) {
 enum AVCodecID codec_id = AV_CODEC_ID_NONE;
 
-#if CONFIG_IMAGE2_MUXER
+#if CONFIG_IMAGE2_MUXER || CONFIG_IMAGE2PIPE_MUXER
 if (!strcmp(fmt->name, "image2") || !strcmp(fmt->name, "image2pipe")) {
 codec_id = ff_guess_image2_codec(filename);
 }
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 28/32] fate/lavf-image2pipe: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
The fix is automatically inherited by the corresponding
fate-seek-lavf-*pipe tests.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/lavf-image2pipe.mak | 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tests/fate/lavf-image2pipe.mak b/tests/fate/lavf-image2pipe.mak
index 297f677ada..318655140b 100644
--- a/tests/fate/lavf-image2pipe.mak
+++ b/tests/fate/lavf-image2pipe.mak
@@ -1,6 +1,11 @@
-FATE_LAVF_IMAGE2PIPE-$(call ENCDEC, PBM,IMAGE2PIPE) += pbmpipe
-FATE_LAVF_IMAGE2PIPE-$(call ENCDEC, PGM,IMAGE2PIPE) += pgmpipe
-FATE_LAVF_IMAGE2PIPE-$(call ENCDEC, PPM,IMAGE2PIPE) += ppmpipe
+LAVF_IMAGE2PIPE = $(call ALLYES, $(1)_DECODER $(1)_ENCODER $(2)  \
+ IMAGE2_DEMUXER PGMYUV_DECODER   \
+ IMAGE2PIPE_MUXER IMAGE2PIPE_DEMUXER \
+ RAWVIDEO_ENCODER CRC_MUXER FILE_PROTOCOL)
+
+FATE_LAVF_IMAGE2PIPE-$(call LAVF_IMAGE2PIPE, PBM, PNM_PARSER SCALE_FILTER)  += 
pbmpipe
+FATE_LAVF_IMAGE2PIPE-$(call LAVF_IMAGE2PIPE, PGM, PNM_PARSER SCALE_FILTER)  += 
pgmpipe
+FATE_LAVF_IMAGE2PIPE-$(call LAVF_IMAGE2PIPE, PPM, PNM_PARSER SCALE_FILTER)  += 
ppmpipe
 
 FATE_LAVF_IMAGE2PIPE = $(FATE_LAVF_IMAGE2PIPE-yes:%=fate-lavf-%)
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 29/32] fate/lavf-video: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
The new requirements are also automatically inherited
by the FATE_SEEK_LAVF_VIDEO seek-tests.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/lavf-video.mak | 24 ++--
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/tests/fate/lavf-video.mak b/tests/fate/lavf-video.mak
index f6e98246c4..7557283dd3 100644
--- a/tests/fate/lavf-video.mak
+++ b/tests/fate/lavf-video.mak
@@ -1,15 +1,19 @@
-FATE_LAVF_VIDEO-$(call ENCDEC,  APNG,   APNG)   += apng
-FATE_LAVF_VIDEO-$(call ENCDEC,  APNG,   APNG)   += apng.png
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += gray.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += 
gray16be.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += gbrp.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += gbrap.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += 
gbrp16be.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  FITS,   FITS)   += 
gbrap16be.fits
-FATE_LAVF_VIDEO-$(call ENCDEC,  GIF, GIF)   += gif
-FATE_LAVF_VIDEO-$(CONFIG_YUV4MPEGPIPE_MUXER)+= y4m
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  APNG,   APNG) += apng
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  APNG PNG,   APNG) += apng.png
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gray.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gray16be.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gbrp.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gbrap.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gbrp16be.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  FITS,   FITS) += gbrap16be.fits
+FATE_LAVF_VIDEO_SCALE-$(call ENCDEC,  GIF, GIF) += gif
+FATE_LAVF_VIDEO-$(call ENCDEC, WRAPPED_AVFRAME RAWVIDEO, YUV4MPEGPIPE) += y4m
 
+FATE_LAVF_VIDEO-$(CONFIG_SCALE_FILTER) += $(FATE_LAVF_VIDEO_SCALE-yes)
 FATE_LAVF_VIDEO = $(FATE_LAVF_VIDEO-yes:%=fate-lavf-%)
+FATE_LAVF_VIDEO := $(if $(call ALLYES, IMAGE2_DEMUXER PGMYUV_DECODER \
+   RAWVIDEO_ENCODER CRC_MUXER),  \
+$(FATE_LAVF_VIDEO))
 
 $(FATE_LAVF_VIDEO): CMD = lavf_video
 $(FATE_LAVF_VIDEO): REF = $(SRC_PATH)/tests/ref/lavf/$(@:fate-lavf-%=%)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 30/32] fate/lavf-audio: Fix requirements of tests

2022-04-23 Thread Andreas Rheinhardt
These changes are automatically inherited by the fate-seek-tests
based upon lavf-audio.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/lavf-audio.mak | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/tests/fate/lavf-audio.mak b/tests/fate/lavf-audio.mak
index a0600491a8..b03030176c 100644
--- a/tests/fate/lavf-audio.mak
+++ b/tests/fate/lavf-audio.mak
@@ -1,14 +1,10 @@
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16BE,AIFF) += aiff
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_ALAW, PCM_ALAW) += al
-FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16BE_PLANAR, AST)  += ast
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16BE,AU)   += au
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16BE,CAF)  += caf
 FATE_LAVF_AUDIO-$(call ENCDEC,  ADPCM_YAMAHA, MMF)  += mmf
 FATE_LAVF_AUDIO-$(call ENCDEC,  FLAC, OGG)  += ogg
-FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_U8,   RSO)  += rso
-FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,SOX)  += sox
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_MULAW,PCM_MULAW)+= ul
-FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_U8,   VOC)  += voc
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,IRCAM)+= ircam
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,VOC)  += s16.voc
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,WAV)  += wav
@@ -17,9 +13,15 @@ FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,WAV)   
   += peak_only.wav
 FATE_LAVF_AUDIO-$(call ENCDEC,  PCM_S16LE,W64)  += w64
 FATE_LAVF_AUDIO-$(call ENCDEC,  TTA,  TTA)  += tta
 FATE_LAVF_AUDIO-$(call ENCMUX,  TTA,  MATROSKA_AUDIO)   += mka
-FATE_LAVF_AUDIO-$(call ENCDEC,  WAVPACK,  WV)   += wv
+FATE_LAVF_AUDIO_RESAMPLE-$(call ENCDEC,  PCM_S16BE_PLANAR, AST) += ast
+FATE_LAVF_AUDIO_RESAMPLE-$(call ENCDEC,  PCM_U8,   RSO) += rso
+FATE_LAVF_AUDIO_RESAMPLE-$(call ENCDEC,  PCM_S16LE,SOX) += sox
+FATE_LAVF_AUDIO_RESAMPLE-$(call ENCDEC,  PCM_U8,   VOC) += voc
+FATE_LAVF_AUDIO_RESAMPLE-$(call ENCDEC,  WAVPACK,  WV)  += wv
 
+FATE_LAVF_AUDIO-$(CONFIG_ARESAMPLE_FILTER) += $(FATE_LAVF_AUDIO_RESAMPLE-yes)
 FATE_LAVF_AUDIO = $(FATE_LAVF_AUDIO-yes:%=fate-lavf-%)
+FATE_LAVF_AUDIO := $(if $(call ENCDEC, PCM_S16LE, CRC PCM_S16LE), 
$(FATE_LAVF_AUDIO))
 
 $(FATE_LAVF_AUDIO): CMD = lavf_audio
 $(FATE_LAVF_AUDIO): REF = $(SRC_PATH)/tests/ref/lavf/$(@:fate-lavf-%=%)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 31/32] fate/lavf-container: Fix test requirements

2022-04-23 Thread Andreas Rheinhardt
Automatically inherited by the fate-seek-lavf tests based upon
these tests.

Signed-off-by: Andreas Rheinhardt 
---
 tests/fate/lavf-container.mak | 12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tests/fate/lavf-container.mak b/tests/fate/lavf-container.mak
index 9e0eed4851..7fb54d7406 100644
--- a/tests/fate/lavf-container.mak
+++ b/tests/fate/lavf-container.mak
@@ -13,12 +13,22 @@ FATE_LAVF_CONTAINER-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, 
MXF_D10 MXF)+
 FATE_LAVF_CONTAINER-$(call ENCDEC2, DNXHD,  PCM_S16LE, MXF_OPATOM MXF) 
+= mxf_opatom mxf_opatom_audio
 FATE_LAVF_CONTAINER-$(call ENCDEC2, MPEG4,  MP2,   NUT)
+= nut
 FATE_LAVF_CONTAINER-$(call ENCMUX,  RV10 AC3_FIXED,RM) 
+= rm
-FATE_LAVF_CONTAINER-$(call ENCMUX,  MJPEG PCM_S16LE,   SMJPEG) 
+= smjpeg
+FATE_LAVF_CONTAINER-$(call ENCDEC2, MJPEG,  PCM_S16LE, SMJPEG) 
+= smjpeg
 FATE_LAVF_CONTAINER-$(call ENCDEC,  FLV,   SWF)
+= swf
 FATE_LAVF_CONTAINER-$(call ENCDEC2, MPEG2VIDEO, MP2,   MPEGTS) 
+= ts
 FATE_LAVF_CONTAINER-$(call ENCDEC,  MP2,   WTV)
+= wtv
 
+FATE_LAVF_CONTAINER_RESAMPLE := asf avi dv_pal dv_ntsc gxf_pal gxf_ntsc  \
+mkv mkv_attachment mpg mxf nut rm ts wtv
+FATE_LAVF_CONTAINER-$(!CONFIG_ARESAMPLE_FILTER) := $(filter-out 
$(FATE_LAVF_CONTAINER_RESAMPLE),$(FATE_LAVF_CONTAINER-yes))
+
+FATE_LAVF_CONTAINER_SCALE := dv dv_pal dv_ntsc flm gxf gxf_pal gxf_ntsc \
+ mxf_dv25 mxf_dvcpro50 mxf_d10 mxf_opatom   \
+ smjpeg
+FATE_LAVF_CONTAINER-$(!CONFIG_SCALE_FILTER) := $(filter-out 
$(FATE_LAVF_CONTAINER_SCALE),$(FATE_LAVF_CONTAINER-yes))
+
 FATE_LAVF_CONTAINER = $(FATE_LAVF_CONTAINER-yes:%=fate-lavf-%)
+FATE_LAVF_CONTAINER := $(if $(call ENCDEC2, RAWVIDEO PGMYUV, PCM_S16LE, CRC 
IMAGE2, PCM_S16LE_DEMUXER), $(FATE_LAVF_CONTAINER))
 
 $(FATE_LAVF_CONTAINER): CMD = lavf_container
 $(FATE_LAVF_CONTAINER): REF = $(SRC_PATH)/tests/ref/lavf/$(@:fate-lavf-%=%)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 32/32] fate/concatdec: Don't duplicate test requirements

2022-04-23 Thread Andreas Rheinhardt
The tests in concatdec.mak reuse files created by tests
from lavf-container. Therefore these tests have the other tests
as prerequisite and mostly duplicate their CONFIG-requirements.
(The mxf_d10 tests did it incorrect as they only required
the MXF muxer.) This duplication is of course bad as usual,
so stop it by using the corresponding variable
that contains the non-lavf-container-tests that are enabled
to filter out all the concat-tests without a corresponding enabled
non-concat test.

Signed-off-by: Andreas Rheinhardt 
---
 tests/Makefile   |  1 +
 tests/fate/concatdec.mak | 31 ---
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index e02eb57035..6e8fc5906e 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -141,6 +141,7 @@ include $(SRC_PATH)/tests/fate/canopus.mak
 include $(SRC_PATH)/tests/fate/cbs.mak
 include $(SRC_PATH)/tests/fate/cdxl.mak
 include $(SRC_PATH)/tests/fate/checkasm.mak
+# Must be included after lavf-container.mak
 include $(SRC_PATH)/tests/fate/concatdec.mak
 include $(SRC_PATH)/tests/fate/cover-art.mak
 include $(SRC_PATH)/tests/fate/dca.mak
diff --git a/tests/fate/concatdec.mak b/tests/fate/concatdec.mak
index 988559d251..e7d2e9b4b1 100644
--- a/tests/fate/concatdec.mak
+++ b/tests/fate/concatdec.mak
@@ -1,21 +1,22 @@
-FATE_CONCAT_DEMUXER_SIMPLE1_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF)   
+= mxf
-FATE_CONCAT_DEMUXER_SIMPLE1_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF)   
+= mxf_d10
+FATE_CONCAT_DEMUXER_SIMPLE1_LAVF  := mxf mxf_d10
 
-FATE_CONCAT_DEMUXER_SIMPLE2_LAVF-$(call ENCDEC2, MPEG2VIDEO, MP2, MPEGTS)  
+= ts
+FATE_CONCAT_DEMUXER_SIMPLE2_LAVF  := ts
 
-FATE_CONCAT_DEMUXER_EXTENDED_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF)  
+= mxf
-FATE_CONCAT_DEMUXER_EXTENDED_LAVF-$(call ENCDEC2, MPEG2VIDEO, PCM_S16LE, MXF)  
+= mxf_d10
+FATE_CONCAT_DEMUXER_EXTENDED_LAVF := mxf mxf_d10
 
-$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF-yes),$(eval 
fate-concat-demuxer-simple1-lavf-$(D): ffprobe$(PROGSSUF)$(EXESUF) 
fate-lavf-$(D)))
-$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF-yes),$(eval 
fate-concat-demuxer-simple1-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/simple1.ffconcat ../lavf/lavf.$(D)))
-FATE_CONCAT_DEMUXER-$(CONFIG_CONCAT_DEMUXER) += 
$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF-yes:%=fate-concat-demuxer-simple1-lavf-%)
+$(foreach D,SIMPLE1 SIMPLE2 EXTENDED,$(eval FATE_CONCAT_DEMUXER_$(D)_LAVF := 
$$(filter 
$$(FATE_LAVF_CONTAINER:fate-lavf-%=%),$$(FATE_CONCAT_DEMUXER_$(D)_LAVF
+#FATE_CONCAT_DEMUXER_SIMPLE1_LAVF  := $(filter 
$(FATE_LAVF_CONTAINER:fate-lavf-%=%),$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF))
 
-$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF-yes),$(eval 
fate-concat-demuxer-simple2-lavf-$(D): ffprobe$(PROGSSUF)$(EXESUF) 
fate-lavf-$(D)))
-$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF-yes),$(eval 
fate-concat-demuxer-simple2-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/simple2.ffconcat ../lavf/lavf.$(D)))
-FATE_CONCAT_DEMUXER-$(CONFIG_CONCAT_DEMUXER) += 
$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF-yes:%=fate-concat-demuxer-simple2-lavf-%)
+$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF),$(eval 
fate-concat-demuxer-simple1-lavf-$(D): fate-lavf-$(D)))
+$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF),$(eval 
fate-concat-demuxer-simple1-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/simple1.ffconcat ../lavf/lavf.$(D)))
+FATE_CONCAT_DEMUXER += 
$(FATE_CONCAT_DEMUXER_SIMPLE1_LAVF:%=fate-concat-demuxer-simple1-lavf-%)
 
-$(foreach D,$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF-yes),$(eval 
fate-concat-demuxer-extended-lavf-$(D): ffprobe$(PROGSSUF)$(EXESUF) 
fate-lavf-$(D)))
-$(foreach D,$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF-yes),$(eval 
fate-concat-demuxer-extended-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/extended.ffconcat ../lavf/lavf.$(D) md5))
-FATE_CONCAT_DEMUXER-$(CONFIG_CONCAT_DEMUXER) += 
$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF-yes:%=fate-concat-demuxer-extended-lavf-%)
+$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF),$(eval 
fate-concat-demuxer-simple2-lavf-$(D): fate-lavf-$(D)))
+$(foreach D,$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF),$(eval 
fate-concat-demuxer-simple2-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/simple2.ffconcat ../lavf/lavf.$(D)))
+FATE_CONCAT_DEMUXER += 
$(FATE_CONCAT_DEMUXER_SIMPLE2_LAVF:%=fate-concat-demuxer-simple2-lavf-%)
 
-FATE-$(CONFIG_FFPROBE) += $(FATE_CONCAT_DEMUXER-yes)
+$(foreach D,$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF),$(eval 
fate-concat-demuxer-extended-lavf-$(D): fate-lavf-$(D)))
+$(foreach D,$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF),$(eval 
fate-concat-demuxer-extended-lavf-$(D): CMD = concat 
$(SRC_PATH)/tests/extended.ffconcat ../lavf/lavf.$(D) md5))
+FATE_CONCAT_DEMUXER += 
$(FATE_CONCAT_DEMUXER_EXTENDED_LAVF:%=fate-concat-demuxer-extended-lavf-%)
+
+FATE_FFPROBE += $(FATE_CONCAT_DEMUXER)
-- 
2.32.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link 

Re: [FFmpeg-devel] [PATCH v11 1/6] libavutil/wchar_filename.h: Add whcartoutf8, wchartoansi and utf8toansi

2022-04-23 Thread Soft Works


> -Original Message-
> From: ffmpeg-devel  On Behalf Of Nil
> Admirari
> Sent: Saturday, April 23, 2022 10:56 PM
> To: ffmpeg-devel@ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH v11 1/6] libavutil/wchar_filename.h:
> Add whcartoutf8, wchartoansi and utf8toansi
> 
> These functions are going to be used in libavformat/avisynth.c
> and fftools/cmdutils.c to remove MAX_PATH limit.
> ---

Hi,

thanks for submitting this patchset.

I'm afraid that I hadn't found time to look into this at an earlier stage,
so please apologize if one of my questions has been covered before.



1. Patch 3/6 - Replace LoadLibraryExA with LoadLibraryExW

What's the point in making changes to library loading? What does it fix?
Which dll cannot be loaded with the current implementation and what 
would be the location of the dll and the location of the exe in that case?

Could you please give an example of a situation that this is supposed 
to fix?



2. Patches 5/6 and 6/6 - Add Fusion Manifest

The manifest that you want to add includes two settings:

 - longPathAware
   effective on Windows 10, version 1607 or later

 - activeCodePage
   effective on Windows 10, version 1903 or later

Both of these manifest attributes are affecting the runtime behavior of
an application running on Windows - but only starting from a certain 
OS version. That means - effectively you would end up having an ffmpeg
executable with three different kinds of behavior:

1. Win < 1607
2. Win >= 1607 && < 1903
3. Win >= 1903

An ffmpeg executable, where you can't rely on the exposed behavior being
consistent and where you would need to check the operating system version 
before using to make sure that you are providing parameters in the "right"
way - I'm not sure whether that would make much sense.



3. All Patches x/6 - Remove MAX_PATH limit

The punch line sounds compelling. But how is the current situation and 
what exactly would be the benefit?

What's important to understand is that the basic Windows file APIs are
supporting long (> MAX_PATH length) for a long time already.
MS has just been a bit hesitant regarding the transition and wanted to
avoid breaking changes to the API. The outcome was that long paths are
only supported when using a lower-level path syntax, which is as simple 
as prepending "\\?\" to the actual path, no matter whether drive or UNC
network path.

As an example, the following command runs without issue on Windows 
with a normal current ffmpeg build:

.\ffmpeg.exe -i "\\?\U:\TestMedia\This is a very long path - This is a very 
long path - This is a very long path - This is a very long path - This is a 
very long path -\This is a very long path - This is a very long path - This is 
a very long path - This is a very 
lon\aassdd\TestMediaThis is a very long path - 
This is a very long path - This is a very long path - This is a very long path 
- This is a very long path -This is a very long path - This is a very long path 
- Thi - 不要抬头.ts"

It's not only a path with len > MAX_PATH, the name also includes 
Chinese (non-ANSI) characters.
All this is working in a predictable and reliable way on all common Windows
versions.


Recently, MS have taken additional effort in order to ease compatibility 
and improve platform portability, by allowing applications to use ANSI
file APIs with long paths and UTF-8 charset. 
BUT: there are several prerequisites for this to work:

1. Windows version needs to be >= 1903
   (for being able to have both attributes in effect)

2. Application needs to be compiled with and manifest file as resource

3. A registry key or group policy needs to be set on Windows to enable this
´  (in both cases, administrative permission/UAC is required to set it)

4. Even when registry key or group policy is set, it might still be pending
   a reboot


SUMMARY

From my understanding, the benefit of this patchset would be:

When 1. and 2. and 3. and 4. are fulfilled (and only then) - it would be 
possible to use long path names in ffmpeg _without_ prefixing it with '\\?\'

On the other side, there's a risk of regressions by adding those manifest
attributes.

I wonder whether it wouldn’t be a better idea, to simply auto-add this prefix
in the ffmpeg file handling code if:

- OS == Windows
- len > MAX_PATH

This would work on all common Windows versions and would be predictable and
reliable.

Best regards,
softworkz

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 1/7] avcodec/pgxdec: Make better use of size check

2022-04-23 Thread Andreas Rheinhardt
Each of the three calls to pgx_get_number() consumes at least two bytes.

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 899e7a9994..154a683b4f 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -56,9 +56,8 @@ static int pgx_decode_header(AVCodecContext *avctx, 
GetByteContext *g,
 {
 int byte;
 
-if (bytestream2_get_bytes_left(g) < 6) {
+if (bytestream2_get_bytes_left(g) < 12)
 return AVERROR_INVALIDDATA;
-}
 
 bytestream2_skip(g, 6);
 
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 2/7] avcodec/pgxdec: Avoid always-false checks

2022-04-23 Thread Andreas Rheinhardt
We have already checked that there is data to be read.

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 154a683b4f..9c474036da 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -32,9 +32,9 @@ static int pgx_get_number(AVCodecContext *avctx, 
GetByteContext *g, int *number)
 *number = 0;
 while (1) {
 uint64_t temp;
-if (!bytestream2_get_bytes_left(g))
+if (bytestream2_get_bytes_left(g) <= 0)
 return AVERROR_INVALIDDATA;
-digit = bytestream2_get_byte(g);
+digit = bytestream2_get_byteu(g);
 if (digit == ' ' || digit == 0xA || digit == 0xD)
 break;
 else if (digit < '0' || digit > '9')
@@ -59,22 +59,22 @@ static int pgx_decode_header(AVCodecContext *avctx, 
GetByteContext *g,
 if (bytestream2_get_bytes_left(g) < 12)
 return AVERROR_INVALIDDATA;
 
-bytestream2_skip(g, 6);
+bytestream2_skipu(g, 6);
 
 // Is the component signed?
-byte = bytestream2_peek_byte(g);
+byte = bytestream2_peek_byteu(g);
 if (byte == '+') {
 *sign = 0;
-bytestream2_skip(g, 1);
+bytestream2_skipu(g, 1);
 } else if (byte == '-') {
 *sign = 1;
-bytestream2_skip(g, 1);
+bytestream2_skipu(g, 1);
 } else if (byte == 0)
 goto error;
 
-byte = bytestream2_peek_byte(g);
+byte = bytestream2_peek_byteu(g);
 if (byte == ' ')
-bytestream2_skip(g, 1);
+bytestream2_skipu(g, 1);
 else if (byte == 0)
 goto error;
 
@@ -104,9 +104,9 @@ error:
 for (j = 0; j < width; j++) {  
 \
 unsigned val;  
 \
 if (sign)  
 \
-val = (PIXEL)bytestream2_get_ ##suffix(g) + (1 << (depth - 
1)); \
+val = (PIXEL)bytestream2_get_ ##suffix##u(g) + (1 << 
(depth - 1));  \
 else   
 \
-val = bytestream2_get_ ##suffix(g);
 \
+val = bytestream2_get_ ##suffix##u(g); 
 \
 val <<= (D - depth);   
 \
 *(line + j) = val; 
 \
 }  
 \
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 3/7] avcodec/pgxdec: Remove pointless checks

2022-04-23 Thread Andreas Rheinhardt
These checks were (most likely) added to check for overreads
as the bytestream2_get_* functions return 0 in this case.
Yet this is not necessary anymore as we now have an explicit check
for the size. Should the input contain a real \0, pgx_get_number()
will error out lateron.

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 5 +
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 9c474036da..c9ada5afb5 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -69,14 +69,11 @@ static int pgx_decode_header(AVCodecContext *avctx, 
GetByteContext *g,
 } else if (byte == '-') {
 *sign = 1;
 bytestream2_skipu(g, 1);
-} else if (byte == 0)
-goto error;
+}
 
 byte = bytestream2_peek_byteu(g);
 if (byte == ' ')
 bytestream2_skipu(g, 1);
-else if (byte == 0)
-goto error;
 
 if (pgx_get_number(avctx, g, depth))
 goto error;
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 4/7] avcodec/pgxdec: Fix issue with negative linesizes

2022-04-23 Thread Andreas Rheinhardt
The PGX decoder accesses the lines via code like
(PIXEL*)frame->data[0] + i*frame->linesize[0]/sizeof(PIXEL)
where PIXEL is a macro parameter. This code has issues with negative
linesizes, because the type of sizeof(PIXEL) is size_t, so
that on common systems i*linesize/sizeof(PIXEL) will
always be an unsigned type that is very large in case linesize is
negative. This happens to work*, but it is undefined behaviour
and e.g. leads to "src/libavcodec/pgxdec.c:114:1: runtime error:
addition of unsigned offset to 0x7efe9c2b7040 overflowed to 0x7efe9c2b6040"
errors from UBSAN.
Fix this by using (PIXEL*)(frame->data[0] + i*frame->linesize[0]).
This is allowed because linesize has to be suitably aligned.

*: Converting a negative int to size_t works by adding SIZE_MAX + 1
to the number, so that the result is off by (SIZE_MAX + 1) /
sizeof(PIXEL). Converting the pointer arithmetic (performed on PIXELs)
back to ordinary pointers is tantamount to multiplying by sizeof(PIXEL),
so that the result is off by SIZE_MAX + 1; but SIZE_MAX + 1 == 0
for the underlying pointers.

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index c9ada5afb5..30895b51ee 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -97,7 +97,7 @@ error:
 {  
 \
 int i, j;  
 \
 for (i = 0; i < height; i++) { 
 \
-PIXEL *line = (PIXEL*)frame->data[0] + 
i*frame->linesize[0]/sizeof(PIXEL);  \
+PIXEL *line = (PIXEL*)(frame->data[0] + i * frame->linesize[0]);   
 \
 for (j = 0; j < width; j++) {  
 \
 unsigned val;  
 \
 if (sign)  
 \
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 5/7] avcodec/pgxdec: Hoist branch out of loop

2022-04-23 Thread Andreas Rheinhardt
Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 30895b51ee..29de103167 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -95,16 +95,13 @@ error:
 static inline void write_frame_ ##D(AVFrame *frame, GetByteContext *g, \
 int width, int height, int sign, int 
depth) \
 {  
 \
+const unsigned offset = sign ? (1 << (D - 1)) : 0; 
 \
 int i, j;  
 \
 for (i = 0; i < height; i++) { 
 \
 PIXEL *line = (PIXEL*)(frame->data[0] + i * frame->linesize[0]);   
 \
 for (j = 0; j < width; j++) {  
 \
-unsigned val;  
 \
-if (sign)  
 \
-val = (PIXEL)bytestream2_get_ ##suffix##u(g) + (1 << 
(depth - 1));  \
-else   
 \
-val = bytestream2_get_ ##suffix##u(g); 
 \
-val <<= (D - depth);   
 \
+unsigned val = bytestream2_get_ ##suffix##u(g) << (D - depth); 
 \
+val ^= offset; 
 \
 *(line + j) = val; 
 \
 }  
 \
 }  
 \
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 6/7] avcodec/pgxdec: Use unsigned types for unsigned values

2022-04-23 Thread Andreas Rheinhardt
Both AV_PIX_FMT_GRAY8 and AV_PIX_FMT_GRAY16 use unsigned values,
not signed ones. The fact that the input might be signed
in some cases in the original format doesn't change this.

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/pgxdec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 29de103167..52e2c2a36c 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -107,8 +107,8 @@ error:
 }  
 \
 }  
 \
 
-WRITE_FRAME(8, int8_t, byte)
-WRITE_FRAME(16, int16_t, be16)
+WRITE_FRAME(8, uint8_t, byte)
+WRITE_FRAME(16, uint16_t, be16)
 
 static int pgx_decode_frame(AVCodecContext *avctx, AVFrame *p,
 int *got_frame, AVPacket *avpkt)
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH 7/7] avcodec/xfacedec: Add AV_CODEC_CAP_DR1

2022-04-23 Thread Andreas Rheinhardt
This decoder uses ff_get_buffer() and does nothing weird
(it does not even rely on any alignment of the frame's data/linesize).

Signed-off-by: Andreas Rheinhardt 
---
 libavcodec/xfacedec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavcodec/xfacedec.c b/libavcodec/xfacedec.c
index b103b5beda..f15bc2d773 100644
--- a/libavcodec/xfacedec.c
+++ b/libavcodec/xfacedec.c
@@ -180,6 +180,7 @@ const FFCodec ff_xface_decoder = {
 .p.long_name= NULL_IF_CONFIG_SMALL("X-face image"),
 .p.type = AVMEDIA_TYPE_VIDEO,
 .p.id   = AV_CODEC_ID_XFACE,
+.p.capabilities = AV_CODEC_CAP_DR1,
 .priv_data_size = sizeof(XFaceContext),
 .init   = xface_decode_init,
 FF_CODEC_DECODE_CB(xface_decode_frame),
-- 
2.32.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-requ...@ffmpeg.org with subject "unsubscribe".