Re: [FFmpeg-devel] FFV1 slicecrc: "hashxx" instead of "CRC" for speed?

2022-11-08 Thread Peter B.

Thanks for all your replies!

Now I can refer to this, when being asked "Why CRC and not ...?" :)



Kind regards,
Peter
___
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/5] fftools/ffmpeg: make demuxing with one file always blocking

2022-11-08 Thread Anton Khirnov
---
 fftools/ffmpeg_demux.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 8ea5318148..b32bac217d 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -363,8 +363,9 @@ static int thread_start(Demuxer *d)
 if (d->thread_queue_size <= 0)
 d->thread_queue_size = (nb_input_files > 1 ? 8 : 1);
 
-if (f->ctx->pb ? !f->ctx->pb->seekable :
-strcmp(f->ctx->iformat->name, "lavfi"))
+if (nb_input_files > 1 &&
+(f->ctx->pb ? !f->ctx->pb->seekable :
+ strcmp(f->ctx->iformat->name, "lavfi")))
 d->non_blocking = 1;
 ret = av_thread_message_queue_alloc(&d->in_thread_queue,
 d->thread_queue_size, 
sizeof(DemuxMsg));
-- 
2.35.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 1/5] lavf/rtpdec_asf: set AVFMT_FLAG_NONBLOCK

2022-11-08 Thread Anton Khirnov
Makes sure EAGAIN from the internal ASF demuxer is propagated to the RTP
demuxer. Will be important in following commits.
---
 libavformat/rtpdec_asf.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavformat/rtpdec_asf.c b/libavformat/rtpdec_asf.c
index 72ead6975a..7824082d22 100644
--- a/libavformat/rtpdec_asf.c
+++ b/libavformat/rtpdec_asf.c
@@ -128,6 +128,7 @@ int ff_wms_parse_sdp_a_line(AVFormatContext *s, const char 
*p)
 return AVERROR(ENOMEM);
 }
 rt->asf_ctx->pb  = &pb.pub;
+rt->asf_ctx->flags  |= AVFMT_FLAG_NONBLOCK;
 av_dict_set(&opts, "no_resync_search", "1", 0);
 
 if ((ret = ff_copy_whiteblacklists(rt->asf_ctx, s)) < 0) {
-- 
2.35.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 4/5] fftools/ffmpeg_demux: do not set AVFMT_FLAG_NONBLOCK

2022-11-08 Thread Anton Khirnov
This is pointless now that demuxing always runs in a separate thread.

Remove special handling for AVERROR(EAGAIN), which should never be
returned now.
---
 fftools/ffmpeg_demux.c | 6 --
 1 file changed, 6 deletions(-)

diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index ee867cc15c..8ea5318148 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -254,11 +254,6 @@ static void *input_thread(void *arg)
 DemuxMsg msg = { NULL };
 
 ret = av_read_frame(f->ctx, pkt);
-
-if (ret == AVERROR(EAGAIN)) {
-av_usleep(1);
-continue;
-}
 if (ret < 0) {
 if (d->loop) {
 /* signal looping to the consumer thread */
@@ -917,7 +912,6 @@ int ifile_open(OptionsContext *o, const char *filename)
 ic->subtitle_codec_id  = subtitle_codec_name ? ic->subtitle_codec->id : 
AV_CODEC_ID_NONE;
 ic->data_codec_id  = data_codec_name ? ic->data_codec->id : 
AV_CODEC_ID_NONE;
 
-ic->flags |= AVFMT_FLAG_NONBLOCK;
 if (o->bitexact)
 ic->flags |= AVFMT_FLAG_BITEXACT;
 ic->interrupt_callback = int_cb;
-- 
2.35.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 3/5] lavf: replace FFERROR_REDO with AVERROR(EAGAIN)

2022-11-08 Thread Anton Khirnov
There is no meaningful distinction between them, both mean "the demuxer
did some work, but did not produce a packet - should be called again".
---
 libavformat/demux.c   | 12 
 libavformat/demux.h   |  6 --
 libavformat/flvdec.c  | 14 +++---
 libavformat/lxfdec.c  |  2 +-
 libavformat/mlvdec.c  |  2 +-
 libavformat/mpeg.c|  2 +-
 libavformat/smacker.c |  2 +-
 7 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/libavformat/demux.c b/libavformat/demux.c
index 5cd9522367..8c81a58274 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -572,14 +572,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
 if (err < 0) {
 av_packet_unref(pkt);
 
-/* Some demuxers return FFERROR_REDO when they consume
-   data and discard it (ignored streams, junk, extradata).
-   We must re-call the demuxer to get the real packet.
-
-   Treat EAGAIN the same as FFERROR_REDO, unless the user
-   requested non-blocking behavior. */
-if (err == FFERROR_REDO ||
-(err == AVERROR(EAGAIN) && !(s->flags & AVFMT_FLAG_NONBLOCK)))
+/* Some demuxers return AVERROR(EAGAIN) when they consume
+   data and discard it (ignored streams, junk, extradata). Call the
+   demuxer again unless the user requested non-blocking behavior. 
*/
+if (err == AVERROR(EAGAIN) && !(s->flags & AVFMT_FLAG_NONBLOCK))
 continue;
 if (!pktl || err == AVERROR(EAGAIN))
 return err;
diff --git a/libavformat/demux.h b/libavformat/demux.h
index 1f57e062f6..a008c3dba1 100644
--- a/libavformat/demux.h
+++ b/libavformat/demux.h
@@ -55,12 +55,6 @@ typedef struct FFStreamInfo {
 int fps_last_dts_idx;
 } FFStreamInfo;
 
-/**
- * Returned by demuxers to indicate that data was consumed but discarded
- * (ignored streams or junk data). The framework will re-call the demuxer.
- */
-#define FFERROR_REDO FFERRTAG('R','E','D','O')
-
 #define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48))
 
 static av_always_inline int is_relative(int64_t ts)
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index d83edff727..d320a431db 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -1058,7 +1058,7 @@ retry:
 }
 
 if (size == 0) {
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 
@@ -1110,13 +1110,13 @@ skip:
 av_log(s, AV_LOG_ERROR, "Unable to seek to the next packet\n");
 return AVERROR_INVALIDDATA;
 }
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 
 /* skip empty data packets */
 if (!size) {
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 
@@ -1160,7 +1160,7 @@ skip:
 (st->discard >= AVDISCARD_BIDIR && ((flags & FLV_VIDEO_FRAMETYPE_MASK) 
== FLV_FRAME_DISP_INTER && stream_type == FLV_STREAM_TYPE_VIDEO)) ||
  st->discard >= AVDISCARD_ALL) {
 avio_seek(s->pb, next, SEEK_SET);
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 
@@ -1273,7 +1273,7 @@ retry_duration:
 if (st->codecpar->extradata) {
 if ((ret = flv_queue_extradata(flv, s->pb, stream_type, size)) 
< 0)
 return ret;
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 if ((ret = flv_get_extradata(s, st, size)) < 0)
@@ -1284,14 +1284,14 @@ retry_duration:
 if (st->codecpar->codec_id == AV_CODEC_ID_AAC && t && 
!strcmp(t->value, "Omnia A/XE"))
 st->codecpar->extradata_size = 2;
 
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 }
 
 /* skip empty data packets */
 if (!size) {
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto leave;
 }
 
diff --git a/libavformat/lxfdec.c b/libavformat/lxfdec.c
index 8003ae98b7..bd28dfe270 100644
--- a/libavformat/lxfdec.c
+++ b/libavformat/lxfdec.c
@@ -307,7 +307,7 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 if (stream > 1) {
 av_log(s, AV_LOG_WARNING,
"got packet with illegal stream index %"PRIu32"\n", stream);
-return FFERROR_REDO;
+return AVERROR(EAGAIN);
 }
 
 if (stream == 1 && s->nb_streams < 2) {
diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c
index db3b77bb9b..d510787fcd 100644
--- a/libavformat/mlvdec.c
+++ b/libavformat/mlvdec.c
@@ -422,7 +422,7 @@ static int read_packet(AVFormatContext *avctx, AVPacket 
*pkt)
 
 pb = mlv->pb[sti->index_entries[index].size];
 if (!pb) {
-ret = FFERROR_REDO;
+ret = AVERROR(EAGAIN);
 goto next_packet;
 }
 avio_seek(pb, sti->index_entries[index].pos, SEEK_SET);
diff --git a/libavformat/mpeg.c b/libavformat/mpeg

[FFmpeg-devel] [PATCH 2/5] lavf/demux: treat EAGAIN as REDO unless AVFMT_FLAG_NONBLOCK is set

2022-11-08 Thread Anton Khirnov
Lavf only supports a very limited approximation of non-blocking
behavior, so we should not return random EAGAINs to callers unless they
specifically requested it.
---
 libavformat/demux.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavformat/demux.c b/libavformat/demux.c
index 2dfd82a63c..5cd9522367 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -574,8 +574,12 @@ FF_ENABLE_DEPRECATION_WARNINGS
 
 /* Some demuxers return FFERROR_REDO when they consume
data and discard it (ignored streams, junk, extradata).
-   We must re-call the demuxer to get the real packet. */
-if (err == FFERROR_REDO)
+   We must re-call the demuxer to get the real packet.
+
+   Treat EAGAIN the same as FFERROR_REDO, unless the user
+   requested non-blocking behavior. */
+if (err == FFERROR_REDO ||
+(err == AVERROR(EAGAIN) && !(s->flags & AVFMT_FLAG_NONBLOCK)))
 continue;
 if (!pktl || err == AVERROR(EAGAIN))
 return err;
-- 
2.35.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".


Re: [FFmpeg-devel] [PATCH] libx265: support ATSC A/53 captions

2022-11-08 Thread Timo Rothenpieler

On 08.11.2022 07:49, Eran Kornblau wrote:

Trying again…

From: Eran Kornblau
Sent: Monday, 17 October 2022 19:29
To: FFmpeg development discussions and patches 
mailto:ffmpeg-devel@ffmpeg.org>>
Subject: [PATCH] libx265: support ATSC A/53 captions

Hi,

The attached patch adds rendering of ATSC A/53 captions as HEVC SEI messages.
The option name/implementation is aligned with the corresponding libx264 
feature.


What frees the sei data on success?
___
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 v4 1/2] lavc: add HWACCEL_CAP_RESET_WITHOUT_UNINIT capacity for hwaccel

2022-11-08 Thread Fei Wang
The capacity can avoid hwaccel being uninited when do the reset. It
provides the method for hwaccel if it still want to use the previous
initialized configuration after reset. And the configuration can be
updated in AVHWAccel.init() if needed.

For example, when use vaapi vp9 decode dynamic resolution clips, need
to avoid changing vaContext in avctx->internal->hwaccel_priv_data if
current frame resolution change and it reference a pervious frame with
different resolution. Otherwise reference frame's information bound
in vaContext will be lost, then corrupt current frame.

Signed-off-by: Fei Wang 
---
 libavcodec/decode.c   | 10 ++
 libavcodec/hwconfig.h |  7 +++
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index 6be2d3d6ed..cfada048e8 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1109,7 +1109,7 @@ static int hwaccel_init(AVCodecContext *avctx,
 return AVERROR_PATCHWELCOME;
 }
 
-if (hwaccel->priv_data_size) {
+if (hwaccel->priv_data_size && !avctx->internal->hwaccel_priv_data) {
 avctx->internal->hwaccel_priv_data =
 av_mallocz(hwaccel->priv_data_size);
 if (!avctx->internal->hwaccel_priv_data)
@@ -1134,10 +1134,12 @@ static int hwaccel_init(AVCodecContext *avctx,
 
 static void hwaccel_uninit(AVCodecContext *avctx)
 {
-if (avctx->hwaccel && avctx->hwaccel->uninit)
-avctx->hwaccel->uninit(avctx);
+if (avctx->hwaccel && !(avctx->hwaccel->caps_internal & 
HWACCEL_CAP_RESET_WITHOUT_UNINIT)) {
+if (avctx->hwaccel->uninit)
+avctx->hwaccel->uninit(avctx);
 
-av_freep(&avctx->internal->hwaccel_priv_data);
+av_freep(&avctx->internal->hwaccel_priv_data);
+}
 
 avctx->hwaccel = NULL;
 
diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h
index 721424912c..5fb4e06d5f 100644
--- a/libavcodec/hwconfig.h
+++ b/libavcodec/hwconfig.h
@@ -25,6 +25,13 @@
 
 #define HWACCEL_CAP_ASYNC_SAFE  (1 << 0)
 
+/**
+ * The hwaccel supports reset without calling back AVHWAccel.uninit()
+ * and realloc avctx->internal->hwaccel_priv_data.
+ *
+ * New configuration can set up through AVHWAccel.init().
+ */
+#define HWACCEL_CAP_RESET_WITHOUT_UNINIT (1 << 1)
 
 typedef struct AVCodecHWConfigInternal {
 /**
-- 
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 v4 2/2] lavc/vaapi_decode: add support for HWACCEL_CAP_RESET_WITHOUT_UNINIT

2022-11-08 Thread Fei Wang
This can fix vp9 decode image corruption when the frame size is change,
but the pervious frames still be referenced.

Surfaces don't need to be bound to vaContext only after VAAPI 1.0.0:
https://github.com/intel/libva/commit/492b692005ccd0d8da190209d5b3ae7b7825f4b8

Signed-off-by: Fei Wang 
---
 libavcodec/vaapi_decode.c | 41 ++-
 libavcodec/vaapi_vp9.c|  4 
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
index 134f10eca5..618f3c3e0a 100644
--- a/libavcodec/vaapi_decode.c
+++ b/libavcodec/vaapi_decode.c
@@ -658,8 +658,10 @@ int ff_vaapi_decode_init(AVCodecContext *avctx)
 VAStatus vas;
 int err;
 
-ctx->va_config  = VA_INVALID_ID;
-ctx->va_context = VA_INVALID_ID;
+if (!ctx->va_config && !ctx->va_context) {
+ctx->va_config  = VA_INVALID_ID;
+ctx->va_context = VA_INVALID_ID;
+}
 
 err = ff_decode_get_hw_frames_ctx(avctx, AV_HWDEVICE_TYPE_VAAPI);
 if (err < 0)
@@ -670,24 +672,27 @@ int ff_vaapi_decode_init(AVCodecContext *avctx)
 ctx->device = ctx->frames->device_ctx;
 ctx->hwctx  = ctx->device->hwctx;
 
-err = vaapi_decode_make_config(avctx, ctx->frames->device_ref,
-   &ctx->va_config, NULL);
-if (err)
-goto fail;
-
-vas = vaCreateContext(ctx->hwctx->display, ctx->va_config,
-  avctx->coded_width, avctx->coded_height,
-  VA_PROGRESSIVE,
-  ctx->hwfc->surface_ids,
-  ctx->hwfc->nb_surfaces,
-  &ctx->va_context);
-if (vas != VA_STATUS_SUCCESS) {
-av_log(avctx, AV_LOG_ERROR, "Failed to create decode "
-   "context: %d (%s).\n", vas, vaErrorStr(vas));
-err = AVERROR(EIO);
-goto fail;
+if (ctx->va_config == VA_INVALID_ID) {
+err = vaapi_decode_make_config(avctx, ctx->frames->device_ref,
+   &ctx->va_config, NULL);
+if (err)
+goto fail;
 }
 
+if (ctx->va_context == VA_INVALID_ID) {
+vas = vaCreateContext(ctx->hwctx->display, ctx->va_config,
+  avctx->coded_width, avctx->coded_height,
+  VA_PROGRESSIVE,
+  ctx->hwfc->surface_ids,
+  ctx->hwfc->nb_surfaces,
+  &ctx->va_context);
+if (vas != VA_STATUS_SUCCESS) {
+av_log(avctx, AV_LOG_ERROR, "Failed to create decode "
+   "context: %d (%s).\n", vas, vaErrorStr(vas));
+err = AVERROR(EIO);
+goto fail;
+}
+}
 av_log(avctx, AV_LOG_DEBUG, "Decode context initialised: "
"%#x/%#x.\n", ctx->va_config, ctx->va_context);
 
diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c
index 776382f683..245b7a1b3a 100644
--- a/libavcodec/vaapi_vp9.c
+++ b/libavcodec/vaapi_vp9.c
@@ -181,5 +181,9 @@ const AVHWAccel ff_vp9_vaapi_hwaccel = {
 .uninit   = ff_vaapi_decode_uninit,
 .frame_params = ff_vaapi_common_frame_params,
 .priv_data_size   = sizeof(VAAPIDecodeContext),
+#if VA_CHECK_VERSION(1, 0, 0)
+.caps_internal= HWACCEL_CAP_ASYNC_SAFE | 
HWACCEL_CAP_RESET_WITHOUT_UNINIT,
+#else
 .caps_internal= HWACCEL_CAP_ASYNC_SAFE,
+#endif
 };
-- 
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".


Re: [FFmpeg-devel] [PATCH v3 2/3] lavc/decode: Add internal surface re-allocate method for hwaccel

2022-11-08 Thread Wang, Fei W
On Mon, 2022-09-19 at 14:08 +0800, Fei Wang wrote:
> On Wed, 2022-09-07 at 22:56 +0100, Mark Thompson wrote:
> > On 23/08/2022 09:19, Fei Wang wrote:
> > > From: Linjie Fu 
> > > 
> > > Add HWACCEL_CAP_INTERNAL_ALLOC flag to indicate hwaccels are able
> > > to
> > > re-allocate surface internally through
> > > ff_decode_get_hw_frames_ctx.
> > > So that hwaccels don't need to reinitialize all hw related
> > > configs
> > > when decode resolution change, just need to re-allocate new
> > > surface
> > > by using new resolution.
> > > 
> > > Signed-off-by: Linjie Fu 
> > > Signed-off-by: Fei Wang 
> > > ---
> > >   libavcodec/decode.c   | 36 
> > >   libavcodec/hwconfig.h |  1 +
> > >   2 files changed, 37 insertions(+)
> > 
> > You can't just not call the user get_format callback and allocate
> > your own surfaces - this breaks direct rendering and other cases
> > where the user wanted to manage the surfaces.
> > 
> > This is also missing any check that the hardware decoder supports
> > the
> > stream post-transition - if the decoder does not support the new
> > size
> > (or any other property of the new stream) then this will try to
> > blindly decode it anyway and fail, where previously it would have
> > correctly fallen back to software decoding.
> > 
> > 
> > None of these patches say what the aim is, but from reading them
> > and
> > seeing that VP9 is the intended target then I am guessing that this
> > is intended to support the case where the stream resizes while
> > still
> > using previous reference frames - is that right?
> 
> Yes, this fixed some vp9 resize streams which reference frames has
> different resolution.
> 
> > If my guess is correct, I think you should (a) mention that fact in
> > the patches, and (b) target the support at specifically that case,
> > and not try to mess with any other reinit cases.
> > 
> > Something like: if you know you are in that case (the decoder
> > itself
> > has this information and could pass it to ff_get_format somehow)
> > and
> > the context supports it (I am still unclear how this support can be
> > determined - the libva documentation is very clear that a context
> > is
> > tied to a particular height/width), then remember the context
> > across
> > the user get_format call and if things match up then re-use it.
> 
> Thanks, the logic looks good. I will check it later to see if any
> blocks on the detail implementation.

Current decode logis is hwaccel->uninit, get_format, hwaccel->init.
While the avctx->internal->hwaccel_priv_data is freed in uninit and
re-alloc in init, so it can't store and re-use vaContext in get_format.

I have modified the other version of V4, which can keep current decode
logic as much as possible and still put alloc surfaces in
hwaccel.init() after call back get_foramt.

Thanks
Fei
> 
> Thanks
> Fei
> > If for some reason you are in that case but it can't work (e.g.
> > because the new size isn't supported by the hardware), then you
> > need
> > a better error message - the stream is actually broken because most
> > frames are not decodable until you reach another recovery point
> > (since the reference frames are in hardware surfaces so the
> > software
> > decoder can't use them).
> > 
> > - Mark
> > ___
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > 
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-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 14/20] fftools/ffmpeg_mux_init: drop a duplicated block in copy_metadata()

2022-11-08 Thread Anton Khirnov
Quoting Michael Niedermayer (2022-10-18 23:51:22)
> On Tue, Oct 18, 2022 at 02:36:55PM +0200, Anton Khirnov wrote:
> > It does the same thing as the block right below it.
> > ---
> >  fftools/ffmpeg_mux_init.c | 10 --
> >  1 file changed, 10 deletions(-)
> 
> This seems to make a difference for
> ffmpeg -i meta.flac -map_metadata:s -1 -vcodec mpeg4 -t 0.1  -y /tmp/tmp3x.mkv
> 
> The metadata in meta.flac is a bit odd though
> 
> Input #0, flac, from '/home/michael/videos/meta.flac':
>   Metadata:
> al  : Hyper fast Audio and Video encoder
> : usage: ffmpeg [options] [[infile options] -i infile]... 
> {[outfile options] outfile}...
> : 
> : Main options:
> 
> : -param1 E.V.. scaler param 1
> x   : öäü?ß^x²€

Is this before or after?

If I'm reading the code correctly, no metadata should be copied after my
patch, which IMO is more consistent with the docs.

-- 
Anton Khirnov
___
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 3/5] lavf: replace FFERROR_REDO with AVERROR(EAGAIN)

2022-11-08 Thread Nicolas George
Anton Khirnov (12022-11-08):
> There is no meaningful distinction between them, both mean "the demuxer
> did some work, but did not produce a packet - should be called again".

NAK, there a difference in semantics: AVEROR(EAGAIN) is for when data is
not available for external reasons, typically network blocking,
AVERROR_REDO is for when data is available and the demuxer will read it
as soon as it is restarted, just to avoid having a loop in the demuxer.

-- 
  Nicolas George
___
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] avfilter/vf_libplacebo: support all supported pixfmts

2022-11-08 Thread Niklas Haas
From: Niklas Haas 

This is done only to the inputs, not the outputs, because we always
output vulkan hwframes.

Doing so also requires keeping track of backing textures for non-hwdec
formats, but is otherwise a mostly straightforward change to the format
query function. Special care needs to be taken to avoid crashing on
older libplacebo due to AV_PIX_FMT_RGBF32LE et al.
---
 libavfilter/vf_libplacebo.c | 41 -
 1 file changed, 36 insertions(+), 5 deletions(-)

diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index cb6b021816..fa9a7675d1 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -62,6 +62,7 @@ typedef struct LibplaceboContext {
 pl_vulkan vulkan;
 pl_gpu gpu;
 pl_renderer renderer;
+pl_tex tex[4];
 
 /* settings */
 char *out_format_string;
@@ -302,6 +303,8 @@ static void libplacebo_uninit(AVFilterContext *avctx)
 {
 LibplaceboContext *s = avctx->priv;
 
+for (int i = 0; i < FF_ARRAY_ELEMS(s->tex); i++)
+pl_tex_destroy(s->gpu, &s->tex[i]);
 for (int i = 0; i < s->num_hooks; i++)
 pl_mpv_user_shader_destroy(&s->hooks[i]);
 pl_renderer_destroy(&s->renderer);
@@ -321,6 +324,7 @@ static int process_frames(AVFilterContext *avctx, AVFrame 
*out, AVFrame *in)
 struct pl_frame image, target;
 ok = pl_map_avframe_ex(s->gpu, &image, pl_avframe_params(
 .frame= in,
+.tex  = s->tex,
 .map_dovi = s->apply_dovi,
 ));
 
@@ -510,22 +514,49 @@ fail:
 static int libplacebo_query_format(AVFilterContext *ctx)
 {
 int err = 0;
-static const enum AVPixelFormat pix_fmts[] = {
+LibplaceboContext *s = ctx->priv;
+const AVPixFmtDescriptor *desc = NULL;
+AVFilterFormats *in_fmts = NULL;
+static const enum AVPixelFormat out_fmts[] = {
 AV_PIX_FMT_VULKAN, AV_PIX_FMT_NONE,
 };
 
 RET(init_vulkan(ctx));
 
-RET(ff_formats_ref(ff_make_format_list(pix_fmts),
-   &ctx->inputs[0]->outcfg.formats));
-RET(ff_formats_ref(ff_make_format_list(pix_fmts),
+while ((desc = av_pix_fmt_desc_next(desc))) {
+
+#if PL_API_VER < 232
+// Older libplacebo can't handle >64-bit pixel formats, so safe-guard
+// this to prevent triggering an assertion
+if (av_get_bits_per_pixel(desc) > 64)
+continue;
+#endif
+
+enum AVPixelFormat pixfmt = av_pix_fmt_desc_get_id(desc);
+if (pl_test_pixfmt(s->gpu, pixfmt)) {
+if ((err = ff_add_format(&in_fmts, pixfmt)) < 0)
+return err;
+}
+}
+
+RET(ff_formats_ref(in_fmts, &ctx->inputs[0]->outcfg.formats));
+RET(ff_formats_ref(ff_make_format_list(out_fmts),
&ctx->outputs[0]->incfg.formats));
+
 return 0;
 
 fail:
 return err;
 }
 
+static int libplacebo_config_input(AVFilterLink *inlink)
+{
+if (inlink->format == AV_PIX_FMT_VULKAN)
+return ff_vk_filter_config_input(inlink);
+
+return 0;
+}
+
 static int libplacebo_config_output(AVFilterLink *outlink)
 {
 int err;
@@ -755,7 +786,7 @@ static const AVFilterPad libplacebo_inputs[] = {
 .name = "default",
 .type = AVMEDIA_TYPE_VIDEO,
 .filter_frame = &filter_frame,
-.config_props = &ff_vk_filter_config_input,
+.config_props = &libplacebo_config_input,
 },
 };
 
-- 
2.38.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] avfilter/vf_libplacebo: init vulkan device in query_format

2022-11-08 Thread Niklas Haas
From: Niklas Haas 

Instead of doing it ad-hoc in `filter_frame`. This is not a huge change
on its own, but paves the way for adding support for more formats in the
future, in particular formats other than AV_PIX_FMT_VULKAN.
---
 libavfilter/vf_libplacebo.c | 35 ---
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index cfee1117e8..cb6b021816 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -56,7 +56,6 @@ static const struct pl_tone_map_function * const 
tonemapping_funcs[TONE_MAP_COUN
 typedef struct LibplaceboContext {
 /* lavfi vulkan*/
 FFVulkanContext vkctx;
-int initialized;
 
 /* libplacebo */
 pl_log log;
@@ -237,10 +236,17 @@ static int init_vulkan(AVFilterContext *avctx)
 {
 int err = 0;
 LibplaceboContext *s = avctx->priv;
-const AVVulkanDeviceContext *hwctx = s->vkctx.hwctx;
+const AVVulkanDeviceContext *hwctx;
 uint8_t *buf = NULL;
 size_t buf_len;
 
+if (!avctx->hw_device_ctx) {
+av_log(s, AV_LOG_ERROR, "Missing vulkan hwdevice for 
vf_libplacebo.\n");
+return AVERROR(EINVAL);
+}
+
+hwctx = ((AVHWDeviceContext*) avctx->hw_device_ctx->data)->hwctx;
+
 /* Import libavfilter vulkan context into libplacebo */
 s->vulkan = pl_vulkan_import(s->log, pl_vulkan_import_params(
 .instance   = hwctx->inst,
@@ -289,7 +295,6 @@ static int init_vulkan(AVFilterContext *avctx)
 fail:
 if (buf)
 av_file_unmap(buf, buf_len);
-s->initialized =  1;
 return err;
 }
 
@@ -303,7 +308,6 @@ static void libplacebo_uninit(AVFilterContext *avctx)
 pl_vulkan_destroy(&s->vulkan);
 pl_log_destroy(&s->log);
 ff_vk_uninit(&s->vkctx);
-s->initialized = 0;
 s->gpu = NULL;
 }
 
@@ -452,8 +456,6 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 }
 
 pl_log_level_update(s->log, get_log_level());
-if (!s->initialized)
-RET(init_vulkan(ctx));
 
 RET(av_frame_copy_props(out, in));
 out->width = outlink->w;
@@ -505,6 +507,25 @@ fail:
 return err;
 }
 
+static int libplacebo_query_format(AVFilterContext *ctx)
+{
+int err = 0;
+static const enum AVPixelFormat pix_fmts[] = {
+AV_PIX_FMT_VULKAN, AV_PIX_FMT_NONE,
+};
+
+RET(init_vulkan(ctx));
+
+RET(ff_formats_ref(ff_make_format_list(pix_fmts),
+   &ctx->inputs[0]->outcfg.formats));
+RET(ff_formats_ref(ff_make_format_list(pix_fmts),
+   &ctx->outputs[0]->incfg.formats));
+return 0;
+
+fail:
+return err;
+}
+
 static int libplacebo_config_output(AVFilterLink *outlink)
 {
 int err;
@@ -755,7 +776,7 @@ const AVFilter ff_vf_libplacebo = {
 .process_command = &ff_filter_process_command,
 FILTER_INPUTS(libplacebo_inputs),
 FILTER_OUTPUTS(libplacebo_outputs),
-FILTER_SINGLE_PIXFMT(AV_PIX_FMT_VULKAN),
+FILTER_QUERY_FUNC(libplacebo_query_format),
 .priv_class = &libplacebo_class,
 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
 };
-- 
2.38.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] Makefile: Build complete doc with Doxygen

2022-11-08 Thread Marvin Scholz
On 24 Sep 2022, at 23:09, Marvin Scholz wrote:

> Add DISABLEDINSTHEADERS, a variable containing the headers of disabled
> libraries. This is needed so that Doxygen does not generate incomplete
> documentation when a component is disabled, which is quite unexpected
> behaviour and results in warnings due to, among other things, broken
> references.
> ---
>  Makefile | 10 ++
>  doc/Makefile |  2 +-
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 61f79e27ae..26714950b7 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -110,7 +110,17 @@ include $(SRC_PATH)/$(1)/Makefile
>  include $(SRC_PATH)/ffbuild/library.mak
>  endef
>
> +define DODISABLEDSUBDIR
> +$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V
> +SUBDIR := $(1)/
> +include $(SRC_PATH)/$(1)/Makefile
> +DISABLEDINSTHEADERS := $$(DISABLEDINSTHEADERS) $$(HEADERS:%=$$(SUBDIR)%)
> +endef
> +
> +DISABLEDFFLIBS := $(filter-out $(FFLIBS),$(ALLFFLIBS))
> +
>  $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D
> +$(foreach D,$(DISABLEDFFLIBS),$(eval $(call DODISABLEDSUBDIR,lib$(D
>
>  include $(SRC_PATH)/fftools/Makefile
>  include $(SRC_PATH)/doc/Makefile
> diff --git a/doc/Makefile b/doc/Makefile
> index 25774c7bad..d71a02e408 100644
> --- a/doc/Makefile
> +++ b/doc/Makefile
> @@ -100,7 +100,7 @@ doc/%.3: doc/%.pod $(GENTEXI)
>
>  $(DOCS) doc/doxy/html: | doc/
>
> -DOXY_INPUT  = $(INSTHEADERS)
> +DOXY_INPUT  = $(INSTHEADERS) $(DISABLEDINSTHEADERS)
>  DOXY_INPUT_DEPS = $(addprefix $(SRC_PATH)/, $(DOXY_INPUT)) ffbuild/config.mak
>
>  doc/doxy/html: TAG = DOXY
> -- 
> 2.37.0 (Apple Git-136)

Another ping for review, please.
___
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 3/5] lavf: replace FFERROR_REDO with AVERROR(EAGAIN)

2022-11-08 Thread Anton Khirnov
Quoting Nicolas George (2022-11-08 13:54:53)
> Anton Khirnov (12022-11-08):
> > There is no meaningful distinction between them, both mean "the demuxer
> > did some work, but did not produce a packet - should be called again".
> 
> NAK, there a difference in semantics: AVEROR(EAGAIN) is for when data is
> not available for external reasons, typically network blocking,

This is false - there are zero demuxers returning EAGAIN due to network
blocking. Furthermore, lavf architecture fundamentally does not allow
generic non-blocking operations, so the most any demuxer can do is
return at a few specific points. And since demuxers are supposed to be
independent of the underlying IO protocol, they fundamentally cannot
know anything about network state.

So there really is no meaningful difference between REDO and EAGAIN.
Both are just an opportunity for the caller to do something else before
trying again. If we believe giving the caller this option is valuable,
then it's valuable in both these cases and it makes no sense to
distinguish between them.

-- 
Anton Khirnov
___
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 3/5] lavf: replace FFERROR_REDO with AVERROR(EAGAIN)

2022-11-08 Thread Nicolas George
Anton Khirnov (12022-11-08):
> This is false - there are zero demuxers returning EAGAIN due to network
> blocking.

There are devices who return EAGAIN due to device blocking.

> So there really is no meaningful difference between REDO and EAGAIN.

There is a difference: REDO is internal, EAGAIN is public.

-- 
  Nicolas George
___
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] libx265: support ATSC A/53 captions

2022-11-08 Thread Eran Kornblau
> 
> -Original Message-
> From: ffmpeg-devel  On Behalf Of Timo 
> Rothenpieler
> Sent: Tuesday, 8 November 2022 13:33
> To: ffmpeg-devel@ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH] libx265: support ATSC A/53 captions
> 
> >
> > The attached patch adds rendering of ATSC A/53 captions as HEVC SEI 
> > messages.
> > The option name/implementation is aligned with the corresponding libx264 
> > feature.
> 
> What frees the sei data on success?
> 
Thanks Timo, good point! 

I missed the fact that libx264 gets a callback for freeing the SEI payloads 
(sei_free).
It seems libx265 does not have this option, so I added some 'for' loop to free 
the payloads after the call to encoder_encode.

In addition:
1. I added av_memdup on the 'user-data-unregistered' side data so that it won't 
be freed twice.
2. I added a 'free_picture' function for freeing the x265_picture in case of 
error.
(both changes are aligned with the implementation in libx264.c)

Updated patch attached.

While checking the point you raised, I ran some libx265 transcode with 
valgrind, and it reported errors unrelated to this patch.
Attaching the full output, in case anyone wants to have a look.

Thanks!

Eran



0001-libx265-support-ATSC-A-53-captions.patch
Description: 0001-libx265-support-ATSC-A-53-captions.patch
$ valgrind -v --tool=memcheck --leak-check=yes --num-callers=128 ffmpeg -i 
/opt/kaltura/live/s32-merged.mp4 -t 0.5  -c:v libx265 -force_key_frames 
'expr:gte(t,n_forced*2)' -x265-params 
min-keyint=1:keyint=60:vbv-maxrate=8400:vbv-bufsize=24000:pools=4:aq-mode=3:bframes=4:ref=2:limit-refs=3:rc-lookahead=15:subme=2:open-gop=0
 -crf 26 -preset fast -c:a aac -b:a 128k -y /tmp/jap-h265.ts
==12400== Memcheck, a memory error detector
==12400== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==12400== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==12400== Command: ffmpeg -i /opt/kaltura/live/s32-merged.mp4 -t 0.5 -c:v 
libx265 -force_key_frames expr:gte(t,n_forced*2) -x265-params 
min-keyint=1:keyint=60:vbv-maxrate=8400:vbv-bufsize=24000:pools=4:aq-mode=3:bframes=4:ref=2:limit-refs=3:rc-lookahead=15:subme=2:open-gop=0
 -crf 26 -preset fast -c:a aac -b:a 128k -y /tmp/jap-h265.ts
==12400==
--12400-- Valgrind options:
--12400---v
--12400----tool=memcheck
--12400----leak-check=yes
--12400----num-callers=128
--12400-- Contents of /proc/version:
--12400--   Linux version 3.13.0-49-generic (buildd@akateko) (gcc version 4.8.2 
(Ubuntu 4.8.2-19ubuntu1) ) #83-Ubuntu SMP Fri Apr 10 20:11:33 UTC 2015
--12400-- Arch and hwcaps: AMD64, LittleEndian, 
amd64-cx16-lzcnt-rdtscp-sse3-avx-avx2-bmi
--12400-- Page sizes: currently 4096, max supported 4096
--12400-- Valgrind library directory: /usr/lib/valgrind
--12400-- Reading syms from /usr/local/bin/ffmpeg
--12400-- Reading syms from /lib/x86_64-linux-gnu/ld-2.19.so
--12400--   Considering /lib/x86_64-linux-gnu/ld-2.19.so ..
--12400--   .. CRC mismatch (computed aedc220e wanted 13895c11)
--12400--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.19.so ..
--12400--   .. CRC is valid
--12400-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
--12400--   Considering /usr/lib/valgrind/memcheck-amd64-linux ..
--12400--   .. CRC mismatch (computed fed8e6c5 wanted e6be554a)
--12400--object doesn't have a symbol table
--12400--object doesn't have a dynamic symbol table
--12400-- Scheduler: using generic scheduler lock implementation.
--12400-- Reading suppressions file: /usr/lib/valgrind/default.supp
==12400== embedded gdbserver: reading from 
/tmp/vgdb-pipe-from-vgdb-to-12400-by-root-on-???
==12400== embedded gdbserver: writing to   
/tmp/vgdb-pipe-to-vgdb-from-12400-by-root-on-???
==12400== embedded gdbserver: shared mem   
/tmp/vgdb-pipe-shared-mem-vgdb-12400-by-root-on-???
==12400==
==12400== TO CONTROL THIS PROCESS USING vgdb (which you probably
==12400== don't want to do, unless you know exactly what you're doing,
==12400== or are doing some strange experiment):
==12400==   /usr/lib/valgrind/../../bin/vgdb --pid=12400 ...command...
==12400==
==12400== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==12400==   /path/to/gdb ffmpeg
==12400== and then give GDB the following command
==12400==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=12400
==12400== --pid is optional if only one valgrind process is running
==12400==
--12400-- REDIR: 0x4019d70 (ld-linux-x86-64.so.2:strlen) redirected to 
0x380764b1 (???)
--12400-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
--12400--   Considering /usr/lib/valgrind/vgpreload_core-amd64-linux.so ..
--12400--   .. CRC mismatch (computed 4bcdfe99 wanted 3143e841)
--12400--object doesn't have a symbol table
--12400-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
--12400--   Considering /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so ..
--12400--   .. CRC mismatch (computed 3df18bf1 wanted 14fefe1c)
--12400--object doesn't have

Re: [FFmpeg-devel] [PATCH] libx265: support ATSC A/53 captions

2022-11-08 Thread Timo Rothenpieler

On 08.11.2022 15:25, Eran Kornblau wrote:


-Original Message-
From: ffmpeg-devel  On Behalf Of Timo 
Rothenpieler
Sent: Tuesday, 8 November 2022 13:33
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH] libx265: support ATSC A/53 captions



The attached patch adds rendering of ATSC A/53 captions as HEVC SEI messages.
The option name/implementation is aligned with the corresponding libx264 
feature.


What frees the sei data on success?


Thanks Timo, good point!

I missed the fact that libx264 gets a callback for freeing the SEI payloads 
(sei_free).
It seems libx265 does not have this option, so I added some 'for' loop to free 
the payloads after the call to encoder_encode.

In addition:
1. I added av_memdup on the 'user-data-unregistered' side data so that it won't 
be freed twice.
2. I added a 'free_picture' function for freeing the x265_picture in case of 
error.
(both changes are aligned with the implementation in libx264.c)

Updated patch attached.


One nit: splitting the first line of free_picture() in two isn't really 
neccesary and makes the function a bit uglier.


One small problem: libx265 now needs to select atsc_a53 in configure, 
analog to how libx264 and all the others do.

Otherwise the file containing the a53 code might not get compiled.

LGTM otherwise


While checking the point you raised, I ran some libx265 transcode with 
valgrind, and it reported errors unrelated to this patch.
Attaching the full output, in case anyone wants to have a look.


x265 has a bunch of issues related to SEI data.
See for example https://trac.ffmpeg.org/ticket/9666#comment:1

i.e. if the number of per-frame sei data ever increases past its initial 
count, it'll just straight up explode.

___
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] libx265: support ATSC A/53 captions

2022-11-08 Thread Eran Kornblau
> 
> On 08.11.2022 15:25, Eran Kornblau wrote:
> >>
> >> -Original Message-
> >> From: ffmpeg-devel  On Behalf Of 
> >> Timo Rothenpieler
> >> Sent: Tuesday, 8 November 2022 13:33
> >> To: ffmpeg-devel@ffmpeg.org
> >> Subject: Re: [FFmpeg-devel] [PATCH] libx265: support ATSC A/53 
> >> captions
> >>
> >>>
> >>> The attached patch adds rendering of ATSC A/53 captions as HEVC SEI 
> >>> messages.
> >>> The option name/implementation is aligned with the corresponding libx264 
> >>> feature.
> >>
> >> What frees the sei data on success?
> >>
> > Thanks Timo, good point!
> >
> > I missed the fact that libx264 gets a callback for freeing the SEI payloads 
> > (sei_free).
> > It seems libx265 does not have this option, so I added some 'for' loop to 
> > free the payloads after the call to encoder_encode.
> >
> > In addition:
> > 1. I added av_memdup on the 'user-data-unregistered' side data so that it 
> > won't be freed twice.
> > 2. I added a 'free_picture' function for freeing the x265_picture in case 
> > of error.
> > (both changes are aligned with the implementation in libx264.c)
> >
> > Updated patch attached.
> 
> One nit: splitting the first line of free_picture() in two isn't really 
> neccesary and makes the function a bit uglier.
> 
Fixed

> One small problem: libx265 now needs to select atsc_a53 in configure, analog 
> to how libx264 and all the others do.
> Otherwise the file containing the a53 code might not get compiled.
> 
Fixed

> LGTM otherwise
> 
Thanks!

Eran

> > While checking the point you raised, I ran some libx265 transcode with 
> > valgrind, and it reported errors unrelated to this patch.
> > Attaching the full output, in case anyone wants to have a look.
> 
> x265 has a bunch of issues related to SEI data.
> See for example 
> https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftrac.ffmpeg.org%2Fticket%2F9666%23comment%3A1&data=05%7C01%7C%7C5cd31da5382f4946e0c508dac198454d%7C0c503748de3f4e2597e26819d53a42b6%7C1%7C0%7C638035156992542567%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=9AdmTE%2B4dzHED8KLN0ps2GvvynacXfrWjhVJk4SBWJo%3D&reserved=0
> 
> i.e. if the number of per-frame sei data ever increases past its initial 
> count, it'll just straight up explode.
> ___



0001-libx265-support-ATSC-A-53-captions.patch
Description: 0001-libx265-support-ATSC-A-53-captions.patch
___
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 1/7] postproc/postprocess: Remove obsolete MMX(EXT)/3Dnow functions

2022-11-08 Thread Andreas Rheinhardt
Andreas Rheinhardt:
> postprocess.c currently has C, MMX, MMXEXT, 3DNow as well as
> SSE2 versions of its internal functions. But given that only
> ancient 32-bit x86 CPUs don't support SSE2, the MMX, MMXEXT
> and 3DNow versions are obsolete and are therefore removed by
> this commit. This saves about 56KB here.
> 
> (The SSE2 version in particular is not really complete,
> so that it often falls back to MMXEXT (which means that
> there were some identical (apart from the name) MMXEXT
> and SSE2 functions; this duplication no longer exists
> with this commit.)
> 
> Signed-off-by: Andreas Rheinhardt 
> ---
> The PP_CPU_CAPS_MMX(2)/3DNOW could now be deprecated.
> 
>  libpostproc/postprocess.c  |  69 ++--
>  libpostproc/postprocess_template.c | 521 ++---
>  2 files changed, 57 insertions(+), 533 deletions(-)
> 
> diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
> index 383c691cb4..0586e458b4 100644
> --- a/libpostproc/postprocess.c
> +++ b/libpostproc/postprocess.c
> @@ -26,28 +26,27 @@
>   */
>  
>  /*
> -C   MMX MMX23DNow   AltiVec
> -isVertDCEc  Ec  Ec
> -isVertMinMaxOk  Ec  Ec  Ec
> -doVertLowPass   E   e   e   Ec
> -doVertDefFilter Ec  Ec  e   e   Ec
> -isHorizDC   Ec  Ec  Ec
> -isHorizMinMaxOk a   E   Ec
> -doHorizLowPass  E   e   e   Ec
> -doHorizDefFilterEc  Ec  e   e   Ec
> -do_a_deblockEc  E   Ec  E
> -deRing  E   e   e*  Ecp
> -Vertical RKAlgo1E   a   a
> -Horizontal RKAlgo1  a   a
> -Vertical X1#a   E   E
> -Horizontal X1#  a   E   E
> -LinIpolDeinterlace  e   E   E*
> -CubicIpolDeinterlacea   e   e*
> -LinBlendDeinterlace e   E   E*
> +C   MMX MMX2AltiVec
> +isVertDCEc  Ec  Ec
> +isVertMinMaxOk  Ec  Ec  Ec
> +doVertLowPass   E   e   Ec
> +doVertDefFilter Ec  Ec  e   Ec
> +isHorizDC   Ec  Ec  Ec
> +isHorizMinMaxOk a   E   Ec
> +doHorizLowPass  E   e   Ec
> +doHorizDefFilterEc  Ec  e   Ec
> +do_a_deblockEc  E   Ec
> +deRing  E   e   Ecp
> +Vertical RKAlgo1E   a
> +Horizontal RKAlgo1  a
> +Vertical X1#a   E
> +Horizontal X1#  a   E
> +LinIpolDeinterlace  e   E
> +CubicIpolDeinterlacea   e
> +LinBlendDeinterlace e   E
>  MedianDeinterlace#  E   Ec  Ec
> -TempDeNoiser#   E   e   e   Ec
> +TempDeNoiser#   E   e   Ec
>  
> -* I do not have a 3DNow! CPU -> it is untested, but no one said it does not 
> work so it seems to work
>  # more or less selfinvented filters so the exactness is not too meaningful
>  E = Exact implementation
>  e = almost exact implementation (slightly different rounding,...)
> @@ -83,7 +82,6 @@ try to unroll inner for(x=0 ... loop to avoid these damn 
> if(x ... checks
>  #include 
>  #include 
>  //#undef HAVE_MMXEXT_INLINE
> -//#define HAVE_AMD3DNOW_INLINE
>  //#undef HAVE_MMX_INLINE
>  //#undef ARCH_X86
>  //#define DEBUG_BRIGHTNESS
> @@ -494,7 +492,7 @@ static av_always_inline void do_a_deblock_C(uint8_t *src, 
> int step,
>  }
>  }
>  
> -//Note: we have C, MMX, MMX2, 3DNOW version there is no 3DNOW+MMX2 one
> +//Note: we have C and SSE2 version (which uses MMX(EXT) when advantageous)
>  //Plain C versions
>  //we always compile C for testing which needs bitexactness
>  #define TEMPLATE_PP_C 1
> @@ -508,27 +506,12 @@ static av_always_inline void do_a_deblock_C(uint8_t 
> *src, int step,
>  
>  #if ARCH_X86 && HAVE_INLINE_ASM
>  #if CONFIG_RUNTIME_CPUDETECT
> -#define TEMPLATE_PP_MMX 1
> -#include "postprocess_template.c"
> -#define TEMPLATE_PP_MMXEXT 1
> -#include "postprocess_template.c"
> -#define TEMPLATE_PP_3DNOW 1
> -#include "postprocess_template.c"
>  #define TEMPLATE_PP_SSE2 1
>  #include "postprocess_template.c"
>  #else
>  #if HAVE_SSE2_INLINE
>  #define TEMPLATE_PP_SSE2 1
>  #include "postprocess_template.c"
> -#elif HAVE_MMXEXT_INLINE
> -#define TEMPLATE_PP_MMXEXT 1
> -#include "postprocess_template.c"
> -#elif HAVE_AMD3DNOW_INLINE
> -#define TEMPLATE_PP_3DNOW 1
> -#include "postproce

Re: [FFmpeg-devel] [PATCH 1/7] postproc/postprocess: Remove obsolete MMX(EXT)/3Dnow functions

2022-11-08 Thread Paul B Mahol
On 11/8/22, Andreas Rheinhardt  wrote:
> Andreas Rheinhardt:
>> postprocess.c currently has C, MMX, MMXEXT, 3DNow as well as
>> SSE2 versions of its internal functions. But given that only
>> ancient 32-bit x86 CPUs don't support SSE2, the MMX, MMXEXT
>> and 3DNow versions are obsolete and are therefore removed by
>> this commit. This saves about 56KB here.
>>
>> (The SSE2 version in particular is not really complete,
>> so that it often falls back to MMXEXT (which means that
>> there were some identical (apart from the name) MMXEXT
>> and SSE2 functions; this duplication no longer exists
>> with this commit.)
>>
>> Signed-off-by: Andreas Rheinhardt 
>> ---
>> The PP_CPU_CAPS_MMX(2)/3DNOW could now be deprecated.
>>
>>  libpostproc/postprocess.c  |  69 ++--
>>  libpostproc/postprocess_template.c | 521 ++---
>>  2 files changed, 57 insertions(+), 533 deletions(-)
>>
>> diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c
>> index 383c691cb4..0586e458b4 100644
>> --- a/libpostproc/postprocess.c
>> +++ b/libpostproc/postprocess.c
>> @@ -26,28 +26,27 @@
>>   */
>>
>>  /*
>> -C   MMX MMX23DNow   AltiVec
>> -isVertDCEc  Ec  Ec
>> -isVertMinMaxOk  Ec  Ec  Ec
>> -doVertLowPass   E   e   e   Ec
>> -doVertDefFilter Ec  Ec  e   e   Ec
>> -isHorizDC   Ec  Ec  Ec
>> -isHorizMinMaxOk a   E   Ec
>> -doHorizLowPass  E   e   e   Ec
>> -doHorizDefFilterEc  Ec  e   e   Ec
>> -do_a_deblockEc  E   Ec  E
>> -deRing  E   e   e*  Ecp
>> -Vertical RKAlgo1E   a   a
>> -Horizontal RKAlgo1  a   a
>> -Vertical X1#a   E   E
>> -Horizontal X1#  a   E   E
>> -LinIpolDeinterlace  e   E   E*
>> -CubicIpolDeinterlacea   e   e*
>> -LinBlendDeinterlace e   E   E*
>> +C   MMX MMX2AltiVec
>> +isVertDCEc  Ec  Ec
>> +isVertMinMaxOk  Ec  Ec  Ec
>> +doVertLowPass   E   e   Ec
>> +doVertDefFilter Ec  Ec  e   Ec
>> +isHorizDC   Ec  Ec  Ec
>> +isHorizMinMaxOk a   E   Ec
>> +doHorizLowPass  E   e   Ec
>> +doHorizDefFilterEc  Ec  e   Ec
>> +do_a_deblockEc  E   Ec
>> +deRing  E   e   Ecp
>> +Vertical RKAlgo1E   a
>> +Horizontal RKAlgo1  a
>> +Vertical X1#a   E
>> +Horizontal X1#  a   E
>> +LinIpolDeinterlace  e   E
>> +CubicIpolDeinterlacea   e
>> +LinBlendDeinterlace e   E
>>  MedianDeinterlace#  E   Ec  Ec
>> -TempDeNoiser#   E   e   e   Ec
>> +TempDeNoiser#   E   e   Ec
>>
>> -* I do not have a 3DNow! CPU -> it is untested, but no one said it does
>> not work so it seems to work
>>  # more or less selfinvented filters so the exactness is not too
>> meaningful
>>  E = Exact implementation
>>  e = almost exact implementation (slightly different rounding,...)
>> @@ -83,7 +82,6 @@ try to unroll inner for(x=0 ... loop to avoid these damn
>> if(x ... checks
>>  #include 
>>  #include 
>>  //#undef HAVE_MMXEXT_INLINE
>> -//#define HAVE_AMD3DNOW_INLINE
>>  //#undef HAVE_MMX_INLINE
>>  //#undef ARCH_X86
>>  //#define DEBUG_BRIGHTNESS
>> @@ -494,7 +492,7 @@ static av_always_inline void do_a_deblock_C(uint8_t
>> *src, int step,
>>  }
>>  }
>>
>> -//Note: we have C, MMX, MMX2, 3DNOW version there is no 3DNOW+MMX2 one
>> +//Note: we have C and SSE2 version (which uses MMX(EXT) when
>> advantageous)
>>  //Plain C versions
>>  //we always compile C for testing which needs bitexactness
>>  #define TEMPLATE_PP_C 1
>> @@ -508,27 +506,12 @@ static av_always_inline void do_a_deblock_C(uint8_t
>> *src, int step,
>>
>>  #if ARCH_X86 && HAVE_INLINE_ASM
>>  #if CONFIG_RUNTIME_CPUDETECT
>> -#define TEMPLATE_PP_MMX 1
>> -#include "postprocess_template.c"
>> -#define TEMPLATE_PP_MMXEXT 1
>> -#include "postprocess_template.c"
>> -#define TEMPLATE_PP_3DNOW 1
>> -#include "postprocess_template.c"
>>  #define TEMPLATE_PP_SSE2 1
>>  #include "postprocess_template.c"
>>  #else
>>  #if HAVE_SSE2_INLINE
>>  #define TEMPLATE_PP_SSE2 1
>>  #include "postprocess_template.c"
>> -#elif HAVE_MMXEXT_INLINE
>> -#define TEMPLATE_PP_MMXEXT 1
>> -#inclu

Re: [FFmpeg-devel] [PATCH 3/5] lavf: replace FFERROR_REDO with AVERROR(EAGAIN)

2022-11-08 Thread Anton Khirnov
Quoting Nicolas George (2022-11-08 15:15:39)
> Anton Khirnov (12022-11-08):
> > This is false - there are zero demuxers returning EAGAIN due to network
> > blocking.
> 
> There are devices who return EAGAIN due to device blocking.

Sure, and that's about it. And as I said before - there is no way to
tell when a device will be ready, so this is of very limited usefulness.

> > So there really is no meaningful difference between REDO and EAGAIN.
> 
> There is a difference: REDO is internal, EAGAIN is public.

That is not a meaningful difference. A meaningful difference would be
one that has actionable consequences.

-- 
Anton Khirnov
___
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] avutil/tx: use llrintf() to convert a float into a 64 bit integer

2022-11-08 Thread James Almer
Should fix fate failures on Windowx x86 targets, where long is 32 bits.

Signed-off-by: James Almer 
---
 libavutil/tx_priv.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/tx_priv.h b/libavutil/tx_priv.h
index 3195cb51b2..fb61119009 100644
--- a/libavutil/tx_priv.h
+++ b/libavutil/tx_priv.h
@@ -124,7 +124,7 @@ typedef void TXComplex;
 } while (0)
 
 #define UNSCALE(x) ((double)(x)/2147483648.0)
-#define RESCALE(x) (av_clip64(lrintf((x) * 2147483648.0), INT32_MIN, 
INT32_MAX))
+#define RESCALE(x) (av_clip64(llrintf((x) * 2147483648.0), INT32_MIN, 
INT32_MAX))
 
 #define FOLD(x, y) ((int32_t)((x) + (unsigned)(y) + 32) >> 6)
 
-- 
2.38.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".


Re: [FFmpeg-devel] [PATCH] avutil/tx: use llrintf() to convert a float into a 64 bit integer

2022-11-08 Thread Martin Storsjö

On Tue, 8 Nov 2022, James Almer wrote:


Should fix fate failures on Windowx x86 targets, where long is 32 bits.

Signed-off-by: James Almer 
---
libavutil/tx_priv.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/tx_priv.h b/libavutil/tx_priv.h
index 3195cb51b2..fb61119009 100644
--- a/libavutil/tx_priv.h
+++ b/libavutil/tx_priv.h
@@ -124,7 +124,7 @@ typedef void TXComplex;
} while (0)

#define UNSCALE(x) ((double)(x)/2147483648.0)
-#define RESCALE(x) (av_clip64(lrintf((x) * 2147483648.0), INT32_MIN, 
INT32_MAX))
+#define RESCALE(x) (av_clip64(llrintf((x) * 2147483648.0), INT32_MIN, 
INT32_MAX))


LGTM, thanks! This does seem to fix the test failures in my configs.

// Martin


___
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] avformat: fix use of undeclared identifier error when compiling Chromium

2022-11-08 Thread uioptt24
From: gz83 

Cross-compiling Chromium on Ubuntu 22.04 will encounter errors related
to avformat, because Chromium regularly synchronizes upstream changes,
so now submit code directly to upstream
---
 libavformat/flac_picture.c |  3 ++-
 libavformat/matroskadec.c  | 10 +-
 libavformat/mov.c  | 11 ++-
 libavformat/oggdec.c   |  1 +
 libavformat/riff.c |  1 +
 5 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c
index b33fee75b4..36d190fdc7 100644
--- a/libavformat/flac_picture.c
+++ b/libavformat/flac_picture.c
@@ -19,9 +19,10 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "libavutil/intreadwrite.h"
 #include "libavcodec/bytestream.h"
+#include "libavcodec/defs.h"
 #include "libavcodec/png.h"
+#include "libavutil/intreadwrite.h"
 #include "avformat.h"
 #include "demux.h"
 #include "flac_picture.h"
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index d582f566a2..f7bb962941 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -34,6 +34,11 @@
 #include 
 #include 
 
+#include "libavcodec/bytestream.h"
+#include "libavcodec/defs.h"
+#include "libavcodec/flac.h"
+#include "libavcodec/mpeg4audio.h"
+#include "libavcodec/packet_internal.h"
 #include "libavutil/avstring.h"
 #include "libavutil/base64.h"
 #include "libavutil/bprint.h"
@@ -50,11 +55,6 @@
 #include "libavutil/time_internal.h"
 #include "libavutil/spherical.h"
 
-#include "libavcodec/bytestream.h"
-#include "libavcodec/flac.h"
-#include "libavcodec/mpeg4audio.h"
-#include "libavcodec/packet_internal.h"
-
 #include "avformat.h"
 #include "avio_internal.h"
 #include "demux.h"
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 1f436e21d6..39d2c71edb 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -29,6 +29,12 @@
 #include 
 #include 
 
+#include "libavcodec/ac3tab.h"
+#include "libavcodec/defs.h"
+#include "libavcodec/flac.h"
+#include "libavcodec/hevc.h"
+#include "libavcodec/mpegaudiodecheader.h"
+#include "libavcodec/mlp_parse.h"
 #include "libavutil/attributes.h"
 #include "libavutil/bprint.h"
 #include "libavutil/channel_layout.h"
@@ -49,11 +55,6 @@
 #include "libavutil/stereo3d.h"
 #include "libavutil/timecode.h"
 #include "libavutil/uuid.h"
-#include "libavcodec/ac3tab.h"
-#include "libavcodec/flac.h"
-#include "libavcodec/hevc.h"
-#include "libavcodec/mpegaudiodecheader.h"
-#include "libavcodec/mlp_parse.h"
 #include "avformat.h"
 #include "internal.h"
 #include "avio_internal.h"
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 3b19e0bd89..c4321a9436 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -29,6 +29,7 @@
  */
 
 #include 
+#include "libavcodec/defs.h"
 #include "libavutil/avassert.h"
 #include "libavutil/intreadwrite.h"
 #include "avio_internal.h"
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 7319406b39..b1cac3171b 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -22,6 +22,7 @@
 #include 
 #include "config.h"
 #include "config_components.h"
+#include "libavcodec/codec_id.h"
 #include "libavutil/macros.h"
 #include "avformat.h"
 #include "internal.h"
-- 
2.38.1.windows.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".


Re: [FFmpeg-devel] Rework color quantization in palette{gen,use}

2022-11-08 Thread Clément Bœsch
On Sun, Nov 06, 2022 at 07:46:38PM +, Soft Works wrote:
> 
> 
> > -Original Message-
> > From: ffmpeg-devel  On Behalf Of
> > Clément Bœsch
> > Sent: Saturday, November 5, 2022 4:26 PM
> > To: ffmpeg-devel@ffmpeg.org
> > Subject: [FFmpeg-devel] Rework color quantization in palette{gen,use}
> > 
> > Hi,
> > 
> > This patchset essentially fixes a few core problems in these filters
> > and
> > switches to a perceptual model.
> > 
> > I've generated a report for each key commit on this (temporary) page:
> > http://big.pkh.me/pal/ (warning: heavy page, ~500M; I did try to add
> > some lazy
> > loading of the images but I'm not sure it's actually working as
> > expected).
> 
> Comparing the results for the known and simple "rainbow O" example reveals
> that the proposed implementation seems to be even inferior to the current 
> code and even farther away from what is possible to achieve:
> 
> https://gist.github.com/softworkz/e310e3c84a338f98977d70b09e3e3f4f

The pngquant file on this page has 373 unique colors, and the transparency
is fake (the checkerboard is opaque white & grey). I think there is a
mistake here.

WRT the regression after the patch, I confirm that there is a problem
related to the dithering. If you try with dither=none or even
dither=bayer, you'll observe that the colors are much better. I will
update the results page at some point to include that file.

Now indeed the sierra dithering (and probably the other of the same type)
are somehow spreading way too strongly, it's unclear to me yet but that
might be a bug I introduced. I'll investigate, thanks.

Regards,

-- 
Clément B.
___
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 12/15] avfilter/palettegen: base split decision on a perceptual model

2022-11-08 Thread Clément Bœsch
On Sat, Nov 05, 2022 at 08:07:42PM +0100, Andreas Rheinhardt wrote:
[...]
> You are adding floating point to places where there was no floating
> point before (some other patches of this patchset do the same). Is this
> still bitexact across all supported arches?
> https://patchwork.ffmpeg.org/project/ffmpeg/patch/20221105152617.1809282-1...@pkh.me/
> makes me believe that the answer is no.

Oof I completely forgot about that, you're right. I'm working on a
bitexact version right now, we should be ready soon™. It may also address
partially the performance issue.

Thanks for pointing this out!

Regards,

-- 
Clément B.
___
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] Rework color quantization in palette{gen,use}

2022-11-08 Thread Clément Bœsch
On Sun, Nov 06, 2022 at 06:30:22PM +0100, Michael Niedermayer wrote:
> On Sun, Nov 06, 2022 at 06:09:41PM +0100, Michael Niedermayer wrote:
> > On Sat, Nov 05, 2022 at 04:26:02PM +0100, Clément Bœsch wrote:
> > > Hi,
> > > 
> > > This patchset essentially fixes a few core problems in these filters and
> > > switches to a perceptual model.
> > > 
> > > I've generated a report for each key commit on this (temporary) page:
> > > http://big.pkh.me/pal/ (warning: heavy page, ~500M; I did try to add some 
> > > lazy
> > > loading of the images but I'm not sure it's actually working as expected).
> > 
> > i just looked at file00 and 16 and 64 colors with dither for it and they 
> > look
> > different, some areas look better before and some better afterwards
> 
> looked at more of the 16 color cases with dither 
> (16 colors as i asumed fewer would magnify any issues )
> file 01, IMHO current looks better than last (variance per axis)
> file 02, IMHO current looks better than last (variance per axis)
> file 03, IMHO VPA looks better but both really are quite off in terms of 
> color,
>  thats not the color of the original image.
> file 04, VPA is not good thats not the correct color
> 
> It seems th last (variance per axis) is more pale and looses color
> 

You're right, the variance per axis change is not always very good, I
might dismissed it entirely.

It also makes me question the use of the variance entirely when splitting
the boxes. I need to investigate if choosing the box with a simpler
heuristic (something naive like picking the box with the highest volume)
is not actually improving things.

I'll investigate and share the results.

Thanks for looking deeply into that!

> > Have you done any double blind comparission ?

Nope, I probably should, but I'm not sure I have the energy to setup such
a thing yet.

Regards,

-- 
Clément B.
___
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] Rework color quantization in palette{gen,use}

2022-11-08 Thread Clément Bœsch
On Sun, Nov 06, 2022 at 08:19:24AM -0500, Ronald S. Bultje wrote:
> Hi,
> 
> On Sat, Nov 5, 2022 at 2:54 PM Clément Bœsch  wrote:
> 
> > On Sat, Nov 05, 2022 at 04:44:39PM +0100, Paul B Mahol wrote:
> > [...]
> > > > Finally, I do believe a lot of other color filters could at least
> > benefit
> > > > from
> > > > fixing their gamma handling (I know I'm guilty of this in various other
> > > > filters).
> > >
> > > gamma handling depends not on pixel format but on metadata present in
> > frame.
> >
> > Right, as suggested by Ronald on IRC, maybe it would have been appropriate
> > to use the vf colorspace code to honor the transfer functions.
> >
> > That being said, this involves quite a substantial refactoring. Is this
> > considered blocking?
> >
> 
> Not for me. I'd like a big fat FIXME and I (or you, or anyone) can look
> into this at some point in the future.
> 

I will likely add a warning, or even error out if the input is not sRGB to
limit the damage.

-- 
Clément B.
___
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] Rework color quantization in palette{gen,use}

2022-11-08 Thread Soft Works


> -Original Message-
> From: ffmpeg-devel  On Behalf Of
> Clément Bœsch
> Sent: Tuesday, November 8, 2022 10:08 PM
> To: FFmpeg development discussions and patches  de...@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] Rework color quantization in
> palette{gen,use}
> 
> On Sun, Nov 06, 2022 at 07:46:38PM +, Soft Works wrote:
> >
> >
> > > -Original Message-
> > > From: ffmpeg-devel  On Behalf Of
> > > Clément Bœsch
> > > Sent: Saturday, November 5, 2022 4:26 PM
> > > To: ffmpeg-devel@ffmpeg.org
> > > Subject: [FFmpeg-devel] Rework color quantization in
> palette{gen,use}
> > >
> > > Hi,
> > >
> > > This patchset essentially fixes a few core problems in these
> filters
> > > and
> > > switches to a perceptual model.
> > >
> > > I've generated a report for each key commit on this (temporary)
> page:
> > > http://big.pkh.me/pal/ (warning: heavy page, ~500M; I did try to
> add
> > > some lazy
> > > loading of the images but I'm not sure it's actually working as
> > > expected).
> >
> > Comparing the results for the known and simple "rainbow O" example
> reveals
> > that the proposed implementation seems to be even inferior to the
> current
> > code and even farther away from what is possible to achieve:
> >
> > https://gist.github.com/softworkz/e310e3c84a338f98977d70b09e3e3f4f
> 
> The pngquant file on this page has 373 unique colors, and the
> transparency
> is fake (the checkerboard is opaque white & grey). I think there is a
> mistake here.

Hi Clement,

I'm sorry about the confusion. The files in both Gists were created
in the same way: Opened the result image in PhotoShop, set the view
size to 400% and then created a screenshot and pasted into the Gist.
The reason I did it that way was that GitHub seemed to do its own
image "optimization" and I wanted to rule out any such effects and
just let others see what I see.

I couldn't find the original result from pngquant, but I have attached
the result from the elbg filter which is almost of the same quality.

For completeness, I'm also including the recent comparison, but it 
seems you're already on track in this regard.


> WRT the regression after the patch, I confirm that there is a problem
> related to the dithering. If you try with dither=none or even
> dither=bayer, you'll observe that the colors are much better. I will
> update the results page at some point to include that file.

That would be great. Maybe you could also find another "simple" example 
like with large-scale gradients rather than being so strongly colored
like the others?


Then I'd have a question about your file07 example. Is this the 
original file or did I mix something up?

http://big.pkh.me/pal/output/0-current/file07/cfg00/0-ref.png

I'm wondering because the image is full or weird artifacts at the 
edges of the green (and other) leafes.


> Now indeed the sierra dithering (and probably the other of the same
> type)
> are somehow spreading way too strongly, it's unclear to me yet but
> that
> might be a bug I introduced. I'll investigate, thanks.

Yup, okay, thanks.

PS: I'd be curious what you think about the elbg image...

Thanks,
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".


Re: [FFmpeg-devel] [PATCH] avformat: fix use of undeclared identifier error when compiling Chromium

2022-11-08 Thread zhilizhao(赵志立)


> On Nov 9, 2022, at 03:48, uiopt...@gmail.com wrote:
> 
> From: gz83 
> 
> Cross-compiling Chromium on Ubuntu 22.04 will encounter errors related
> to avformat, because Chromium regularly synchronizes upstream changes,
> so now submit code directly to upstream
> ---
> libavformat/flac_picture.c |  3 ++-
> libavformat/matroskadec.c  | 10 +-
> libavformat/mov.c  | 11 ++-
> libavformat/oggdec.c   |  1 +
> libavformat/riff.c |  1 +
> 5 files changed, 15 insertions(+), 11 deletions(-)
> 
> diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c
> index b33fee75b4..36d190fdc7 100644
> --- a/libavformat/flac_picture.c
> +++ b/libavformat/flac_picture.c
> @@ -19,9 +19,10 @@
>  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
> USA
>  */
> 
> -#include "libavutil/intreadwrite.h"
> #include "libavcodec/bytestream.h"
> +#include "libavcodec/defs.h"
> #include "libavcodec/png.h"
> +#include "libavutil/intreadwrite.h"
> #include "avformat.h"
> #include "demux.h"
> #include "flac_picture.h"
> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> index d582f566a2..f7bb962941 100644
> --- a/libavformat/matroskadec.c
> +++ b/libavformat/matroskadec.c
> @@ -34,6 +34,11 @@
> #include 
> #include 
> 
> +#include "libavcodec/bytestream.h"
> +#include "libavcodec/defs.h"
> +#include "libavcodec/flac.h"
> +#include "libavcodec/mpeg4audio.h"
> +#include "libavcodec/packet_internal.h"
> #include "libavutil/avstring.h"
> #include "libavutil/base64.h"
> #include "libavutil/bprint.h"
> @@ -50,11 +55,6 @@
> #include "libavutil/time_internal.h"
> #include "libavutil/spherical.h"
> 
> -#include "libavcodec/bytestream.h"
> -#include "libavcodec/flac.h"
> -#include "libavcodec/mpeg4audio.h"
> -#include "libavcodec/packet_internal.h"
> -
> #include "avformat.h"
> #include "avio_internal.h"
> #include "demux.h"
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 1f436e21d6..39d2c71edb 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -29,6 +29,12 @@
> #include 
> #include 
> 
> +#include "libavcodec/ac3tab.h"
> +#include "libavcodec/defs.h"
> +#include "libavcodec/flac.h"
> +#include "libavcodec/hevc.h"
> +#include "libavcodec/mpegaudiodecheader.h"
> +#include "libavcodec/mlp_parse.h"
> #include "libavutil/attributes.h"
> #include "libavutil/bprint.h"
> #include "libavutil/channel_layout.h"
> @@ -49,11 +55,6 @@
> #include "libavutil/stereo3d.h"
> #include "libavutil/timecode.h"
> #include "libavutil/uuid.h"
> -#include "libavcodec/ac3tab.h"
> -#include "libavcodec/flac.h"
> -#include "libavcodec/hevc.h"
> -#include "libavcodec/mpegaudiodecheader.h"
> -#include "libavcodec/mlp_parse.h"
> #include "avformat.h"
> #include "internal.h"
> #include "avio_internal.h"
> diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
> index 3b19e0bd89..c4321a9436 100644
> --- a/libavformat/oggdec.c
> +++ b/libavformat/oggdec.c
> @@ -29,6 +29,7 @@
>  */
> 
> #include 
> +#include "libavcodec/defs.h"
> #include "libavutil/avassert.h"
> #include "libavutil/intreadwrite.h"
> #include "avio_internal.h"
> diff --git a/libavformat/riff.c b/libavformat/riff.c
> index 7319406b39..b1cac3171b 100644
> --- a/libavformat/riff.c
> +++ b/libavformat/riff.c
> @@ -22,6 +22,7 @@
> #include 
> #include "config.h"
> #include "config_components.h"
> +#include "libavcodec/codec_id.h"
> #include "libavutil/macros.h"
> #include "avformat.h"
> #include "internal.h"
> -- 
> 2.38.1.windows.1
> 

Please explain why the patch is needed. If chromium rewrite the build system
of FFmpeg, I don’t think FFmpeg should support it.
___
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] avformat: fix use of undeclared identifier error when compiling Chromium

2022-11-08 Thread 揚帆起航
I encountered an error in the files included in this patch when compiling
Chromium. When I followed this patch to modify the ffmpeg file in the
Chromium source code, the compilation no longer reported errors.

Chromium regularly merges the latest revisions of ffmpeg through
Cherry-Pick. I also submitted this patch to Chromium before submitting it
to ffmpeg, but Chromium asked me to submit it to ffmpeg first

"zhilizhao(赵志立)"  於 2022年11月9日 週三 10:23 寫道:

>
>
> > On Nov 9, 2022, at 03:48, uiopt...@gmail.com wrote:
> >
> > From: gz83 
> >
> > Cross-compiling Chromium on Ubuntu 22.04 will encounter errors related
> > to avformat, because Chromium regularly synchronizes upstream changes,
> > so now submit code directly to upstream
> > ---
> > libavformat/flac_picture.c |  3 ++-
> > libavformat/matroskadec.c  | 10 +-
> > libavformat/mov.c  | 11 ++-
> > libavformat/oggdec.c   |  1 +
> > libavformat/riff.c |  1 +
> > 5 files changed, 15 insertions(+), 11 deletions(-)
> >
> > diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c
> > index b33fee75b4..36d190fdc7 100644
> > --- a/libavformat/flac_picture.c
> > +++ b/libavformat/flac_picture.c
> > @@ -19,9 +19,10 @@
> >  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> >  */
> >
> > -#include "libavutil/intreadwrite.h"
> > #include "libavcodec/bytestream.h"
> > +#include "libavcodec/defs.h"
> > #include "libavcodec/png.h"
> > +#include "libavutil/intreadwrite.h"
> > #include "avformat.h"
> > #include "demux.h"
> > #include "flac_picture.h"
> > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > index d582f566a2..f7bb962941 100644
> > --- a/libavformat/matroskadec.c
> > +++ b/libavformat/matroskadec.c
> > @@ -34,6 +34,11 @@
> > #include 
> > #include 
> >
> > +#include "libavcodec/bytestream.h"
> > +#include "libavcodec/defs.h"
> > +#include "libavcodec/flac.h"
> > +#include "libavcodec/mpeg4audio.h"
> > +#include "libavcodec/packet_internal.h"
> > #include "libavutil/avstring.h"
> > #include "libavutil/base64.h"
> > #include "libavutil/bprint.h"
> > @@ -50,11 +55,6 @@
> > #include "libavutil/time_internal.h"
> > #include "libavutil/spherical.h"
> >
> > -#include "libavcodec/bytestream.h"
> > -#include "libavcodec/flac.h"
> > -#include "libavcodec/mpeg4audio.h"
> > -#include "libavcodec/packet_internal.h"
> > -
> > #include "avformat.h"
> > #include "avio_internal.h"
> > #include "demux.h"
> > diff --git a/libavformat/mov.c b/libavformat/mov.c
> > index 1f436e21d6..39d2c71edb 100644
> > --- a/libavformat/mov.c
> > +++ b/libavformat/mov.c
> > @@ -29,6 +29,12 @@
> > #include 
> > #include 
> >
> > +#include "libavcodec/ac3tab.h"
> > +#include "libavcodec/defs.h"
> > +#include "libavcodec/flac.h"
> > +#include "libavcodec/hevc.h"
> > +#include "libavcodec/mpegaudiodecheader.h"
> > +#include "libavcodec/mlp_parse.h"
> > #include "libavutil/attributes.h"
> > #include "libavutil/bprint.h"
> > #include "libavutil/channel_layout.h"
> > @@ -49,11 +55,6 @@
> > #include "libavutil/stereo3d.h"
> > #include "libavutil/timecode.h"
> > #include "libavutil/uuid.h"
> > -#include "libavcodec/ac3tab.h"
> > -#include "libavcodec/flac.h"
> > -#include "libavcodec/hevc.h"
> > -#include "libavcodec/mpegaudiodecheader.h"
> > -#include "libavcodec/mlp_parse.h"
> > #include "avformat.h"
> > #include "internal.h"
> > #include "avio_internal.h"
> > diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
> > index 3b19e0bd89..c4321a9436 100644
> > --- a/libavformat/oggdec.c
> > +++ b/libavformat/oggdec.c
> > @@ -29,6 +29,7 @@
> >  */
> >
> > #include 
> > +#include "libavcodec/defs.h"
> > #include "libavutil/avassert.h"
> > #include "libavutil/intreadwrite.h"
> > #include "avio_internal.h"
> > diff --git a/libavformat/riff.c b/libavformat/riff.c
> > index 7319406b39..b1cac3171b 100644
> > --- a/libavformat/riff.c
> > +++ b/libavformat/riff.c
> > @@ -22,6 +22,7 @@
> > #include 
> > #include "config.h"
> > #include "config_components.h"
> > +#include "libavcodec/codec_id.h"
> > #include "libavutil/macros.h"
> > #include "avformat.h"
> > #include "internal.h"
> > --
> > 2.38.1.windows.1
> >
>
> Please explain why the patch is needed. If chromium rewrite the build
> system
> of FFmpeg, I don’t think FFmpeg should support it.
> ___
> 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] avformat: fix use of undeclared identifier error when compiling Chromium

2022-11-08 Thread zhilizhao(赵志立)


> On Nov 9, 2022, at 10:41, 揚帆起航  wrote:
> 
> I encountered an error in the files included in this patch when compiling
> Chromium. When I followed this patch to modify the ffmpeg file in the
> Chromium source code, the compilation no longer reported errors.
> 
> Chromium regularly merges the latest revisions of ffmpeg through
> Cherry-Pick. I also submitted this patch to Chromium before submitting it
> to ffmpeg, but Chromium asked me to submit it to ffmpeg first

We can’t reproduce the issue, so more details of each ‘undeclared
identifier error’ should be given. For example, why

>>> +#include "libavcodec/defs.h”

is needed in flac_picture.c since it’s already included by avformat.h?

> 
> "zhilizhao(赵志立)"  於 2022年11月9日 週三 10:23 寫道:
> 
>> 
>> 
>>> On Nov 9, 2022, at 03:48, uiopt...@gmail.com wrote:
>>> 
>>> From: gz83 
>>> 
>>> Cross-compiling Chromium on Ubuntu 22.04 will encounter errors related
>>> to avformat, because Chromium regularly synchronizes upstream changes,
>>> so now submit code directly to upstream
>>> ---
>>> libavformat/flac_picture.c |  3 ++-
>>> libavformat/matroskadec.c  | 10 +-
>>> libavformat/mov.c  | 11 ++-
>>> libavformat/oggdec.c   |  1 +
>>> libavformat/riff.c |  1 +
>>> 5 files changed, 15 insertions(+), 11 deletions(-)
>>> 
>>> diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c
>>> index b33fee75b4..36d190fdc7 100644
>>> --- a/libavformat/flac_picture.c
>>> +++ b/libavformat/flac_picture.c
>>> @@ -19,9 +19,10 @@
>>> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>> 02110-1301 USA
>>> */
>>> 
>>> -#include "libavutil/intreadwrite.h"
>>> #include "libavcodec/bytestream.h"
>>> +#include "libavcodec/defs.h"
>>> #include "libavcodec/png.h"
>>> +#include "libavutil/intreadwrite.h"
>>> #include "avformat.h"
>>> #include "demux.h"
>>> #include "flac_picture.h"
>>> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
>>> index d582f566a2..f7bb962941 100644
>>> --- a/libavformat/matroskadec.c
>>> +++ b/libavformat/matroskadec.c
>>> @@ -34,6 +34,11 @@
>>> #include 
>>> #include 
>>> 
>>> +#include "libavcodec/bytestream.h"
>>> +#include "libavcodec/defs.h"
>>> +#include "libavcodec/flac.h"
>>> +#include "libavcodec/mpeg4audio.h"
>>> +#include "libavcodec/packet_internal.h"
>>> #include "libavutil/avstring.h"
>>> #include "libavutil/base64.h"
>>> #include "libavutil/bprint.h"
>>> @@ -50,11 +55,6 @@
>>> #include "libavutil/time_internal.h"
>>> #include "libavutil/spherical.h"
>>> 
>>> -#include "libavcodec/bytestream.h"
>>> -#include "libavcodec/flac.h"
>>> -#include "libavcodec/mpeg4audio.h"
>>> -#include "libavcodec/packet_internal.h"
>>> -
>>> #include "avformat.h"
>>> #include "avio_internal.h"
>>> #include "demux.h"
>>> diff --git a/libavformat/mov.c b/libavformat/mov.c
>>> index 1f436e21d6..39d2c71edb 100644
>>> --- a/libavformat/mov.c
>>> +++ b/libavformat/mov.c
>>> @@ -29,6 +29,12 @@
>>> #include 
>>> #include 
>>> 
>>> +#include "libavcodec/ac3tab.h"
>>> +#include "libavcodec/defs.h"
>>> +#include "libavcodec/flac.h"
>>> +#include "libavcodec/hevc.h"
>>> +#include "libavcodec/mpegaudiodecheader.h"
>>> +#include "libavcodec/mlp_parse.h"
>>> #include "libavutil/attributes.h"
>>> #include "libavutil/bprint.h"
>>> #include "libavutil/channel_layout.h"
>>> @@ -49,11 +55,6 @@
>>> #include "libavutil/stereo3d.h"
>>> #include "libavutil/timecode.h"
>>> #include "libavutil/uuid.h"
>>> -#include "libavcodec/ac3tab.h"
>>> -#include "libavcodec/flac.h"
>>> -#include "libavcodec/hevc.h"
>>> -#include "libavcodec/mpegaudiodecheader.h"
>>> -#include "libavcodec/mlp_parse.h"
>>> #include "avformat.h"
>>> #include "internal.h"
>>> #include "avio_internal.h"
>>> diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
>>> index 3b19e0bd89..c4321a9436 100644
>>> --- a/libavformat/oggdec.c
>>> +++ b/libavformat/oggdec.c
>>> @@ -29,6 +29,7 @@
>>> */
>>> 
>>> #include 
>>> +#include "libavcodec/defs.h"
>>> #include "libavutil/avassert.h"
>>> #include "libavutil/intreadwrite.h"
>>> #include "avio_internal.h"
>>> diff --git a/libavformat/riff.c b/libavformat/riff.c
>>> index 7319406b39..b1cac3171b 100644
>>> --- a/libavformat/riff.c
>>> +++ b/libavformat/riff.c
>>> @@ -22,6 +22,7 @@
>>> #include 
>>> #include "config.h"
>>> #include "config_components.h"
>>> +#include "libavcodec/codec_id.h"
>>> #include "libavutil/macros.h"
>>> #include "avformat.h"
>>> #include "internal.h"
>>> --
>>> 2.38.1.windows.1
>>> 
>> 
>> Please explain why the patch is needed. If chromium rewrite the build
>> system
>> of FFmpeg, I don’t think FFmpeg should support it.
>> ___
>> 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.or