[FFmpeg-cvslog] MAINTAINERS: remove myself from here

2024-02-04 Thread Paul B Mahol
ffmpeg | branch: master | Paul B Mahol  | Thu Dec  7 08:27:14 
2023 +0100| [d3111486f917f61df4100beb0cedc8e84cd7d2f7] | committer: Paul B Mahol

MAINTAINERS: remove myself from here

Once it became fully non-transparent and service of shady practices
behind closed doors, I can not be here any more.

Signed-off-by: Paul B Mahol 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d3111486f917f61df4100beb0cedc8e84cd7d2f7
---

 MAINTAINERS | 55 ---
 1 file changed, 55 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4677931211..cc7f564f48 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -144,7 +144,6 @@ Codecs:
   bgmc.c, bgmc.hThilo Borgmann
   binkaudio.c   Peter Ross
   cavs* Stefan Gehrer
-  cdxl.cPaul B Mahol
   celp_filters.*Vitor Sessak
   cinepak.c Roberto Togni
   cinepakenc.c  Rl / Aetey G.T. AB
@@ -163,7 +162,6 @@ Codecs:
   dv.c  Roman Shaposhnik
   dvbsubdec.c   Anshul Maheshwari
   eacmv*, eaidct*, eat* Peter Ross
-  evrc* Paul B Mahol
   exif.c, exif.hThilo Borgmann
   ffv1* Michael Niedermayer
   ffwavesynth.c Nicolas George
@@ -217,7 +215,6 @@ Codecs:
   nvdec*, nvenc*Timo Rothenpieler
   omx.c Martin Storsjo, Aman Gupta
   opus* Rostislav Pehlivanov
-  paf.* Paul B Mahol
   pcx.c Ivo van Poorten
   pgssubdec.c   Reimar Doeffinger
   ptx.c Ivo van Poorten
@@ -238,16 +235,13 @@ Codecs:
   srt*  Aurelien Jacobs
   sunrast.c Ivo van Poorten
   svq3.cMichael Niedermayer
-  tak*  Paul B Mahol
   truemotion1*  Mike Melanson
   tta.c Alex Beregszaszi, Jaikrishnan Menon
-  ttaenc.c  Paul B Mahol
   txd.c Ivo van Poorten
   v4l2_*Jorge Ramirez-Ortiz
   vc2*  Rostislav Pehlivanov
   vcr1.cMichael Niedermayer
   videotoolboxenc.c Rick Kern, Aman Gupta
-  vima.cPaul B Mahol
   vorbisdec.c   Denes Balatoni, David Conrad
   vorbisenc.c   Oded Shimon
   vp3*  Mike Melanson
@@ -261,9 +255,7 @@ Codecs:
   wmavoice.cRonald S. Bultje
   wmv2.cMichael Niedermayer
   xan.c Mike Melanson
-  xbm*  Paul B Mahol
   xface Stefano Sabatini
-  xwd*  Paul B Mahol
 
 Hardware acceleration:
   dxva2*Hendrik Leppkes, Laurent Aimar, Steve 
Lhomme
@@ -307,65 +299,34 @@ Generic parts:
   motion_estimation.c   Davinder Singh
 
 Filters:
-  f_drawgraph.c Paul B Mahol
-  af_adelay.c   Paul B Mahol
-  af_aecho.cPaul B Mahol
-  af_afade.cPaul B Mahol
   af_amerge.c   Nicolas George
-  af_aphaser.c  Paul B Mahol
   af_aresample.cMichael Niedermayer
-  af_astats.c   Paul B Mahol
   af_atempo.c   Pavel Koshevoy
-  af_biquads.c  Paul B Mahol
-  af_chorus.c   Paul B Mahol
-  af_compand.c  Paul B Mahol
   af_firequalizer.c Muhammad Faiz
   af_hdcd.c Burt P.
-  af_ladspa.c   Paul B Mahol
   af_loudnorm.c Kyle Swanson
   af_pan.c  Nicolas George
-  af_sidechaincompress.cPaul B Mahol
-  af_silenceremove.cPaul B Mahol
-  avf_aphasemeter.c Paul B Mahol
-  avf_avectorscope.cPaul B Mahol
   avf_showcqt.c Muhammad Faiz
-  vf_blend.cPaul B Mahol
   vf_bwdif  Thomas Mundt (CC )
   vf_chromakey.cTimo Rothenpieler
-  vf_colorchannelmixer.cPaul B Mahol
   vf_colorconstancy.c   Mina Sami(CC 
)
-  

[FFmpeg-cvslog] avcodec/vp8: Change criterion for calling ff_thread_finish_setup()

2024-02-04 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Tue Jan 30 21:42:37 2024 +0100| [d525dbb41f5236ed2dc74041e9db7022bcb5bb86] | 
committer: Andreas Rheinhardt

avcodec/vp8: Change criterion for calling ff_thread_finish_setup()

The current criterion is to check for the existence of
update_thread_context. Change this to check for whether
we are actually decoding VP8 (and not VP7 or VP8-in-WebP).
This is equivalent to the current criterion, but allows
the WebP decoder to evolve and to get its own update_thread_context.

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d525dbb41f5236ed2dc74041e9db7022bcb5bb86
---

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

diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index 6b49ec9fe7..dd6c1b361b 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -2754,7 +2754,7 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame 
*rframe, int *got_frame,
 
 s->next_framep[VP8_FRAME_CURRENT] = curframe;
 
-if (ffcodec(avctx->codec)->update_thread_context)
+if (!is_vp7 && !s->actually_webp)
 ff_thread_finish_setup(avctx);
 
 if (avctx->hwaccel) {

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

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


[FFmpeg-cvslog] avformat/wavenc: use strtoull for UMID conversion

2024-02-04 Thread Gyan Doshi
ffmpeg | branch: master | Gyan Doshi  | Mon Jan 29 10:44:06 
2024 +0530| [7375a6ca7b4a4b223a71f85a772c64a34e60eabe] | committer: Gyan Doshi

avformat/wavenc: use strtoull for UMID conversion

Existing use of strtoll can lead to ERANGE errors leading to incorrect
storage of UMID.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7375a6ca7b4a4b223a71f85a772c64a34e60eabe
---

 libavformat/wavenc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c
index 82acb9ef0f..a41f40b449 100644
--- a/libavformat/wavenc.c
+++ b/libavformat/wavenc.c
@@ -129,7 +129,7 @@ static void bwf_write_bext_chunk(AVFormatContext *s)
 
 for (i = 0; i < len/16; i++) {
 memcpy(umidpart_str, tmp_tag->value + 2 + (i*16), 16);
-umidpart = strtoll(umidpart_str, NULL, 16);
+umidpart = strtoull(umidpart_str, NULL, 16);
 avio_wb64(s->pb, umidpart);
 }
 ffio_fill(s->pb, 0, 64 - i*8);

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

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


[FFmpeg-cvslog] avcodec/vp8: Enforce key-frame only for WebP

2024-02-04 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Tue Jan 30 21:04:43 2024 +0100| [4b8b1415ae7709351eeab4037d0ef2e20bf9f7bd] | 
committer: Andreas Rheinhardt

avcodec/vp8: Enforce key-frame only for WebP

VP8-in-WebP only uses key frame encoding (see [1]), yet this
is currently not enforced. This commit does so in order to
make output reproducible with frame-threading as the VP8 decoder's
update_thread_context is not called at all when using decoding
VP8-in-WebP (as this is unnecessary for key frame-only streams).

[1]: https://developers.google.com/speed/webp/docs/riff_container

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4b8b1415ae7709351eeab4037d0ef2e20bf9f7bd
---

 libavcodec/vp8.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index 83c60adeb0..7972775a1c 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -2665,7 +2665,11 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame 
*rframe, int *got_frame,
 if (ret < 0)
 goto err;
 
-if (s->actually_webp) {
+if (!is_vp7 && s->actually_webp) {
+// VP8 in WebP is supposed to be intra-only. Enforce this here
+// to ensure that output is reproducible with frame-threading.
+if (!s->keyframe)
+return AVERROR_INVALIDDATA;
 // avctx->pix_fmt already set in caller.
 } else if (!is_vp7 && s->pix_fmt == AV_PIX_FMT_NONE) {
 s->pix_fmt = get_pixel_format(s);

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

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


[FFmpeg-cvslog] avcodec/vp8: Remove write-only vp7 struct field

2024-02-04 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Tue Jan 30 21:37:52 2024 +0100| [e37e9d58f8161b8de0848646b4738e5caa5afb0d] | 
committer: Andreas Rheinhardt

avcodec/vp8: Remove write-only vp7 struct field

This decoder always inlines whether it is VP7 or VP8.

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e37e9d58f8161b8de0848646b4738e5caa5afb0d
---

 libavcodec/vp8.c | 1 -
 libavcodec/vp8.h | 2 --
 2 files changed, 3 deletions(-)

diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index 7972775a1c..6b49ec9fe7 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -2887,7 +2887,6 @@ int vp78_decode_init(AVCodecContext *avctx, int is_vp7)
 int ret;
 
 s->avctx = avctx;
-s->vp7   = avctx->codec->id == AV_CODEC_ID_VP7;
 s->pix_fmt = AV_PIX_FMT_NONE;
 avctx->pix_fmt = AV_PIX_FMT_YUV420P;
 
diff --git a/libavcodec/vp8.h b/libavcodec/vp8.h
index eb9fa2f166..798f67b3de 100644
--- a/libavcodec/vp8.h
+++ b/libavcodec/vp8.h
@@ -331,8 +331,6 @@ typedef struct VP8Context {
 int (*decode_mb_row_no_filter)(AVCodecContext *avctx, void *tdata, int 
jobnr, int threadnr);
 void (*filter_mb_row)(AVCodecContext *avctx, void *tdata, int jobnr, int 
threadnr);
 
-int vp7;
-
 /**
  * Interframe DC prediction (VP7)
  * [0] VP8_FRAME_PREVIOUS

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

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


[FFmpeg-cvslog] avformat/mov: rename rescale_mdcv

2024-02-04 Thread Cosmin Stejerean
ffmpeg | branch: master | Cosmin Stejerean  | Sun Feb  4 
15:14:11 2024 +| [dda4b25e2d92e3e72f500daef2de143587752126] | committer: 
James Almer

avformat/mov: rename rescale_mdcv

It's not specific to the mdcv box.

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dda4b25e2d92e3e72f500daef2de143587752126
---

 libavformat/movenc.c | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index b724bd5ebc..9e37781000 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -2208,7 +2208,7 @@ static int mov_write_clli_tag(AVIOContext *pb, MOVTrack 
*track)
 return 12;
 }
 
-static inline int64_t rescale_mdcv(AVRational q, int b)
+static inline int64_t rescale_rational(AVRational q, int b)
 {
 return av_rescale(q.num, b, q.den);
 }
@@ -2231,16 +2231,16 @@ static int mov_write_mdcv_tag(AVIOContext *pb, MOVTrack 
*track)
 
 avio_wb32(pb, 32); // size
 ffio_wfourcc(pb, "mdcv");
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[1][0], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[1][1], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[2][0], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[2][1], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[0][0], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->display_primaries[0][1], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->white_point[0], chroma_den));
-avio_wb16(pb, rescale_mdcv(metadata->white_point[1], chroma_den));
-avio_wb32(pb, rescale_mdcv(metadata->max_luminance, luma_den));
-avio_wb32(pb, rescale_mdcv(metadata->min_luminance, luma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[1][0], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[1][1], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[2][0], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[2][1], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[0][0], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->display_primaries[0][1], 
chroma_den));
+avio_wb16(pb, rescale_rational(metadata->white_point[0], chroma_den));
+avio_wb16(pb, rescale_rational(metadata->white_point[1], chroma_den));
+avio_wb32(pb, rescale_rational(metadata->max_luminance, luma_den));
+avio_wb32(pb, rescale_rational(metadata->min_luminance, luma_den));
 return 32;
 }
 

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

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


[FFmpeg-cvslog] avformat/mov: add support for 'amve' ambient viewing environment box

2024-02-04 Thread Damiano Galassi
ffmpeg | branch: master | Damiano Galassi  | Sun Feb  4 
15:14:12 2024 +| [112d3618ca47ac7a8243bb16eebdb2c4460d06d1] | committer: 
James Almer

avformat/mov: add support for 'amve' ambient viewing environment box

As defined in ISOBMFF (ISO/IEC 14496-12) document.

Co-Authored-By: Cosmin Stejerean 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=112d3618ca47ac7a8243bb16eebdb2c4460d06d1
---

 libavformat/dump.c   | 15 +++
 libavformat/isom.h   |  3 +++
 libavformat/mov.c| 35 +++
 libavformat/movenc.c | 28 
 4 files changed, 81 insertions(+)

diff --git a/libavformat/dump.c b/libavformat/dump.c
index aff51b43f6..add38914f2 100644
--- a/libavformat/dump.c
+++ b/libavformat/dump.c
@@ -28,6 +28,7 @@
 #include "libavutil/intreadwrite.h"
 #include "libavutil/log.h"
 #include "libavutil/mastering_display_metadata.h"
+#include "libavutil/ambient_viewing_environment.h"
 #include "libavutil/dovi_meta.h"
 #include "libavutil/mathematics.h"
 #include "libavutil/opt.h"
@@ -379,6 +380,17 @@ static void dump_content_light_metadata(void *ctx, const 
AVPacketSideData *sd,
metadata->MaxCLL, metadata->MaxFALL);
 }
 
+static void dump_ambient_viewing_environment_metadata(void *ctx, const 
AVPacketSideData *sd)
+{
+const AVAmbientViewingEnvironment *ambient =
+(const AVAmbientViewingEnvironment *)sd->data;
+av_log(ctx, AV_LOG_INFO, "Ambient Viewing Environment, "
+   "ambient_illuminance=%f, ambient_light_x=%f, ambient_light_y=%f",
+   av_q2d(ambient->ambient_illuminance),
+   av_q2d(ambient->ambient_light_x),
+   av_q2d(ambient->ambient_light_y));
+}
+
 static void dump_spherical(void *ctx, const AVCodecParameters *par,
const AVPacketSideData *sd, int log_level)
 {
@@ -513,6 +525,9 @@ static void dump_sidedata(void *ctx, const AVStream *st, 
const char *indent,
 av_log(ctx, log_level, "SMPTE ST 12-1:2014: ");
 dump_s12m_timecode(ctx, st, sd, log_level);
 break;
+case AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT:
+dump_ambient_viewing_environment_metadata(ctx, sd);
+break;
 default:
 av_log(ctx, log_level, "unknown side data type %d "
"(%"SIZE_SPECIFIER" bytes)", sd->type, sd->size);
diff --git a/libavformat/isom.h b/libavformat/isom.h
index 77221d06e4..a4cca4c798 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -29,6 +29,7 @@
 
 #include "libavutil/encryption_info.h"
 #include "libavutil/mastering_display_metadata.h"
+#include "libavutil/ambient_viewing_environment.h"
 #include "libavutil/spherical.h"
 #include "libavutil/stereo3d.h"
 
@@ -249,6 +250,8 @@ typedef struct MOVStreamContext {
 AVMasteringDisplayMetadata *mastering;
 AVContentLightMetadata *coll;
 size_t coll_size;
+AVAmbientViewingEnvironment *ambient;
+size_t ambient_size;
 
 uint32_t format;
 
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 5fae777adb..42b0135987 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -6039,6 +6039,31 @@ static int mov_read_clli(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
 return 0;
 }
 
+static int mov_read_amve(MOVContext *c, AVIOContext *pb, MOVAtom atom)
+{
+MOVStreamContext *sc;
+const int illuminance_den = 1;
+const int ambient_den = 5;
+if (c->fc->nb_streams < 1)
+return AVERROR_INVALIDDATA;
+sc = c->fc->streams[c->fc->nb_streams - 1]->priv_data;
+if (atom.size < 6) {
+av_log(c->fc, AV_LOG_ERROR, "Empty Ambient Viewing Environment Info 
box\n");
+return AVERROR_INVALIDDATA;
+}
+if (sc->ambient){
+av_log(c->fc, AV_LOG_WARNING, "Ignoring duplicate AMVE\n");
+return 0;
+}
+sc->ambient = av_ambient_viewing_environment_alloc(>ambient_size);
+if (!sc->ambient)
+return AVERROR(ENOMEM);
+sc->ambient->ambient_illuminance  = av_make_q(avio_rb32(pb), 
illuminance_den);
+sc->ambient->ambient_light_x = av_make_q(avio_rb16(pb), ambient_den);
+sc->ambient->ambient_light_y = av_make_q(avio_rb16(pb), ambient_den);
+return 0;
+}
+
 static int mov_read_st3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
 AVStream *st;
@@ -8215,6 +8240,7 @@ static const MOVParseTableEntry mov_default_parse_table[] 
= {
 { MKTAG('i','s','p','e'), mov_read_ispe },
 { MKTAG('i','p','r','p'), mov_read_iprp },
 { MKTAG('i','i','n','f'), mov_read_iinf },
+{ MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment box 
*/
 { 0, NULL }
 };
 
@@ -8680,6 +8706,7 @@ static void mov_free_stream_context(AVFormatContext *s, 
AVStream *st)
 av_freep(>spherical);
 av_freep(>mastering);
 av_freep(>coll);
+av_freep(>ambient);
 }
 
 static int mov_read_close(AVFormatContext *s)
@@ -9072,6 +9099,14 @@ static int mov_read_header(AVFormatContext *s)
 
 sc->coll = NULL;
 

[FFmpeg-cvslog] tests/fate/mov: add a test for reading and writing amve box

2024-02-04 Thread Cosmin Stejerean
ffmpeg | branch: master | Cosmin Stejerean  | Sun Feb  4 
15:14:13 2024 +| [976cf2343d8c624c243895c21585d3c7711ab8fe] | committer: 
James Almer

tests/fate/mov: add a test for reading and writing amve box

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=976cf2343d8c624c243895c21585d3c7711ab8fe
---

 tests/fate/mov.mak|  5 +
 tests/ref/fate/mov-read-amve  |  8 
 tests/ref/fate/mov-write-amve | 33 +
 3 files changed, 46 insertions(+)

diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
index f202f36d96..4850c8aa94 100644
--- a/tests/fate/mov.mak
+++ b/tests/fate/mov.mak
@@ -9,6 +9,7 @@ FATE_MOV = fate-mov-3elist \
fate-mov-frag-encrypted \
fate-mov-tenc-only-encrypted \
fate-mov-invalid-elst-entry-count \
+   fate-mov-write-amve \
fate-mov-gpmf-remux \
fate-mov-440hz-10ms \
fate-mov-ibi-elst-starts-b \
@@ -25,6 +26,7 @@ FATE_MOV_FFPROBE = fate-mov-neg-firstpts-discard \
fate-mov-zombie \
fate-mov-init-nonkeyframe \
fate-mov-displaymatrix \
+   fate-mov-read-amve \
fate-mov-spherical-mono \
fate-mov-guess-delay-1 \
fate-mov-guess-delay-2 \
@@ -109,6 +111,9 @@ fate-mov-init-nonkeyframe: CMD = run 
ffprobe$(PROGSSUF)$(EXESUF) -show_packets -
 
 fate-mov-displaymatrix: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries 
stream=display_aspect_ratio,sample_aspect_ratio:stream_side_data_list 
-select_streams v -v 0 $(TARGET_SAMPLES)/mov/displaymatrix.mov
 
+fate-mov-read-amve: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries 
stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mov/amve.mov
+fate-mov-write-amve: CMD = transcode mov $(TARGET_SAMPLES)/mov/amve.mov mp4 
"-c:v copy" "-c:v copy -t 0.5" "-show_entries stream_side_data_list"
+
 fate-mov-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries 
stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mov/spherical.mov
 
 fate-mov-gpmf-remux: CMD = md5 -i 
$(TARGET_SAMPLES)/mov/fake-gp-media-with-real-gpmf.mp4 -map 0 -c copy -fflags 
+bitexact -f mp4
diff --git a/tests/ref/fate/mov-read-amve b/tests/ref/fate/mov-read-amve
new file mode 100644
index 00..91d34d94dd
--- /dev/null
+++ b/tests/ref/fate/mov-read-amve
@@ -0,0 +1,8 @@
+[STREAM]
+[SIDE_DATA]
+side_data_type=Ambient viewing environment
+ambient_illuminance=314/1
+ambient_light_x=15635/5
+ambient_light_y=16450/5
+[/SIDE_DATA]
+[/STREAM]
diff --git a/tests/ref/fate/mov-write-amve b/tests/ref/fate/mov-write-amve
new file mode 100644
index 00..115cdbd9f0
--- /dev/null
+++ b/tests/ref/fate/mov-write-amve
@@ -0,0 +1,33 @@
+850c56be1114aa21a2e41bd4ea3da144 *tests/data/fate/mov-write-amve.mp4
+23677 tests/data/fate/mov-write-amve.mp4
+#extradata 0:   49, 0x7f8d1145
+#tb 0: 1/15360
+#media_type 0: video
+#codec_id 0: h264
+#dimensions 0: 640x360
+#sar 0: 0/1
+0,  -1024,  0,  512,11849, 0xf21aa1d0
+0,   -512,   2048,  512, 1572, 0xf0c41b68, F=0x0
+0,  0,   1024,  512,  347, 0x9b8daabf, F=0x0
+0,512,512,  512,  195, 0x557e58db, F=0x0
+0,   1024,   1536,  512,  134, 0x423541b4, F=0x0
+0,   1536,   3072,  512, 1454, 0xe5a2cdad, F=0x0
+0,   2048,   2560,  512,  168, 0xd0ef5402, F=0x0
+0,   2560,   5120,  512, 1395, 0x603eb602, F=0x0
+0,   3072,   4096,  512,  304, 0x69cc92a6, F=0x0
+0,   3584,   3584,  512,  145, 0x3f1a4462, F=0x0
+0,   4096,   4608,  512,  154, 0x953851d1, F=0x0
+0,   4608,   5632,  512,  876, 0xad65ace7, F=0x0
+0,   5120,   7680,  512,  742, 0x6b6d689f, F=0x0
+0,   5632,   6656,  512,  177, 0xa4f2573b, F=0x0
+0,   6144,   6144,  512,  101, 0xb0722d2b, F=0x0
+0,   6656,   7168,  512,  105, 0x1f6033ed, F=0x0
+0,   7168,   9728,  512,  589, 0xcd912063, F=0x0
+[STREAM]
+[SIDE_DATA]
+side_data_type=Ambient viewing environment
+ambient_illuminance=314/1
+ambient_light_x=15635/5
+ambient_light_y=16450/5
+[/SIDE_DATA]
+[/STREAM]

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

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


[FFmpeg-cvslog] avcodec: add ambient viewing environment packet side data.

2024-02-04 Thread Damiano Galassi
ffmpeg | branch: master | Damiano Galassi  | Sun Feb  4 
15:14:10 2024 +| [45697e6a51244e3393c8bf5e931ad86387fd8ec8] | committer: 
James Almer

avcodec: add ambient viewing environment packet side data.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=45697e6a51244e3393c8bf5e931ad86387fd8ec8
---

 doc/APIchanges| 3 +++
 fftools/ffprobe.c | 3 +++
 libavcodec/avpacket.c | 1 +
 libavcodec/decode.c   | 1 +
 libavcodec/packet.h   | 7 +++
 libavcodec/version.h  | 2 +-
 6 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index e477ed78e0..1f5724324a 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09
 
 API changes, most recent first:
 
+2024-02-04 - xx - lavc 60.39.100 - packet.h
+  Add AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT.
+
 2023-11-xx - xx - lavfi 9.16.100 - buffersink.h buffersrc.h
   Add av_buffersink_get_colorspace and av_buffersink_get_color_range.
   Add AVBufferSrcParameters.color_space and AVBufferSrcParameters.color_range.
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index f33e2471cb..aa1153e709 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -2392,6 +2392,9 @@ static void print_pkt_side_data(WriterContext *w,
 AVContentLightMetadata *metadata = (AVContentLightMetadata 
*)sd->data;
 print_int("max_content", metadata->MaxCLL);
 print_int("max_average", metadata->MaxFALL);
+} else if (sd->type == AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT) {
+print_ambient_viewing_environment(
+w, (const AVAmbientViewingEnvironment *)sd->data);
 } else if (sd->type == AV_PKT_DATA_DYNAMIC_HDR10_PLUS) {
 AVDynamicHDRPlus *metadata = (AVDynamicHDRPlus *)sd->data;
 print_dynamic_hdr10_plus(w, metadata);
diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index 0f8c9b77ae..e118bbaad1 100644
--- a/libavcodec/avpacket.c
+++ b/libavcodec/avpacket.c
@@ -301,6 +301,7 @@ const char *av_packet_side_data_name(enum 
AVPacketSideDataType type)
 case AV_PKT_DATA_DOVI_CONF:  return "DOVI configuration 
record";
 case AV_PKT_DATA_S12M_TIMECODE:  return "SMPTE ST 12-1:2014 
timecode";
 case AV_PKT_DATA_DYNAMIC_HDR10_PLUS: return "HDR10+ Dynamic 
Metadata (SMPTE 2094-40)";
+case AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT:return "Ambient viewing 
environment";
 case AV_PKT_DATA_IAMF_MIX_GAIN_PARAM:return "IAMF Mix Gain 
Parameter Data";
 case AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM:   return "IAMF Demixing Info 
Parameter Data";
 case AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM: return "IAMF Recon Gain Info 
Parameter Data";
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index 2cfb3fcf97..da6446d879 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1434,6 +1434,7 @@ static const struct {
 { AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
AV_FRAME_DATA_CONTENT_LIGHT_LEVEL },
 { AV_PKT_DATA_ICC_PROFILE,AV_FRAME_DATA_ICC_PROFILE },
 { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS },
+{ 
AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
 },
 };
 
 int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx,
diff --git a/libavcodec/packet.h b/libavcodec/packet.h
index 2c57d262c6..8558ae849e 100644
--- a/libavcodec/packet.h
+++ b/libavcodec/packet.h
@@ -323,6 +323,13 @@ enum AVPacketSideDataType {
  */
 AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM,
 
+/**
+ * Ambient viewing environment metadata, as defined by H.274. This metadata
+ * should be associated with a video stream and contains data in the form
+ * of the AVAmbientViewingEnvironment struct.
+*/
+AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,
+
 /**
  * The number of side data types.
  * This is not part of the public API/ABI in the sense that it may
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 0fae3d06d3..f2f14eaed1 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 
 #include "version_major.h"
 
-#define LIBAVCODEC_VERSION_MINOR  38
+#define LIBAVCODEC_VERSION_MINOR  39
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

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

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


[FFmpeg-cvslog] avfilter/yadif_common: factorize some part of the config_output and the uninit functions

2024-02-04 Thread Marton Balint
ffmpeg | branch: master | Marton Balint  | Thu Jan 25 23:08:52 
2024 +0100| [268062fa15e1c05310f9c3977e0b95ac07eca274] | committer: Marton 
Balint

avfilter/yadif_common: factorize some part of the config_output and the uninit 
functions

This unifies slightly diverged code and ensures that cc_fifo is always 
initialized.

Signed-off-by: Marton Balint 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=268062fa15e1c05310f9c3977e0b95ac07eca274
---

 libavfilter/vf_bwdif.c  | 30 
 libavfilter/vf_bwdif_cuda.c | 15 --
 libavfilter/vf_bwdif_vulkan.c   | 12 +--
 libavfilter/vf_yadif.c  | 33 +++---
 libavfilter/vf_yadif_cuda.c | 27 +++--
 libavfilter/vf_yadif_videotoolbox.m | 19 +++---
 libavfilter/yadif.h |  4 
 libavfilter/yadif_common.c  | 40 +
 8 files changed, 66 insertions(+), 114 deletions(-)

diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c
index 353cd0b61a..9042db8d7f 100644
--- a/libavfilter/vf_bwdif.c
+++ b/libavfilter/vf_bwdif.c
@@ -137,17 +137,6 @@ static void filter(AVFilterContext *ctx, AVFrame *dstpic,
 }
 }
 
-static av_cold void uninit(AVFilterContext *ctx)
-{
-BWDIFContext *bwdif = ctx->priv;
-YADIFContext *yadif = >yadif;
-
-av_frame_free(>prev);
-av_frame_free(>cur );
-av_frame_free(>next);
-ff_ccfifo_uninit(>cc_fifo);
-}
-
 static const enum AVPixelFormat pix_fmts[] = {
 AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV420P,
 AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
@@ -176,20 +165,9 @@ static int config_props(AVFilterLink *link)
 YADIFContext *yadif = >yadif;
 int ret;
 
-link->time_base = av_mul_q(ctx->inputs[0]->time_base, (AVRational){1, 2});
-link->w = link->src->inputs[0]->w;
-link->h = link->src->inputs[0]->h;
-
-if(yadif->mode&1)
-link->frame_rate = av_mul_q(link->src->inputs[0]->frame_rate, 
(AVRational){2,1});
-else
-link->frame_rate = ctx->inputs[0]->frame_rate;
-
-ret = ff_ccfifo_init(>cc_fifo, link->frame_rate, ctx);
-if (ret < 0 ) {
-av_log(ctx, AV_LOG_ERROR, "Failure to setup CC FIFO queue\n");
-return ret;
-}
+ret = ff_yadif_config_output_common(link);
+if (ret < 0)
+return AVERROR(EINVAL);
 
 yadif->csp = av_pix_fmt_desc_get(link->format);
 yadif->filter = filter;
@@ -251,7 +229,7 @@ const AVFilter ff_vf_bwdif = {
 .description   = NULL_IF_CONFIG_SMALL("Deinterlace the input image."),
 .priv_size = sizeof(BWDIFContext),
 .priv_class= _class,
-.uninit= uninit,
+.uninit= ff_yadif_uninit,
 FILTER_INPUTS(avfilter_vf_bwdif_inputs),
 FILTER_OUTPUTS(avfilter_vf_bwdif_outputs),
 FILTER_PIXFMTS_ARRAY(pix_fmts),
diff --git a/libavfilter/vf_bwdif_cuda.c b/libavfilter/vf_bwdif_cuda.c
index 418f15f989..7585d1fe25 100644
--- a/libavfilter/vf_bwdif_cuda.c
+++ b/libavfilter/vf_bwdif_cuda.c
@@ -208,9 +208,7 @@ static av_cold void deint_cuda_uninit(AVFilterContext *ctx)
 CHECK_CU(cu->cuCtxPopCurrent());
 }
 
-av_frame_free(>prev);
-av_frame_free(>cur);
-av_frame_free(>next);
+ff_yadif_uninit(ctx);
 
 av_buffer_unref(>device_ref);
 s->hwctx = NULL;
@@ -288,14 +286,9 @@ static int config_output(AVFilterLink *link)
 goto exit;
 }
 
-link->time_base = av_mul_q(ctx->inputs[0]->time_base, (AVRational){1, 2});
-link->w = ctx->inputs[0]->w;
-link->h = ctx->inputs[0]->h;
-
-if(y->mode & 1)
-link->frame_rate = av_mul_q(ctx->inputs[0]->frame_rate,
-(AVRational){2, 1});
-
+ret = ff_yadif_config_output_common(link);
+if (ret < 0)
+goto exit;
 
 y->csp = av_pix_fmt_desc_get(output_frames->sw_format);
 y->filter = filter;
diff --git a/libavfilter/vf_bwdif_vulkan.c b/libavfilter/vf_bwdif_vulkan.c
index c51df9aa26..57711fb672 100644
--- a/libavfilter/vf_bwdif_vulkan.c
+++ b/libavfilter/vf_bwdif_vulkan.c
@@ -296,6 +296,8 @@ static void bwdif_vulkan_uninit(AVFilterContext *avctx)
 
 ff_vk_uninit(>vkctx);
 
+ff_yadif_uninit(avctx);
+
 s->initialized = 0;
 }
 
@@ -354,13 +356,9 @@ static int bwdif_vulkan_config_output(AVFilterLink 
*outlink)
 if (!outlink->hw_frames_ctx)
 return AVERROR(ENOMEM);
 
-outlink->time_base = av_mul_q(avctx->inputs[0]->time_base, (AVRational){1, 
2});
-outlink->w = vkctx->output_width;
-outlink->h = vkctx->output_height;
-
-if (y->mode & 1)
-outlink->frame_rate = av_mul_q(avctx->inputs[0]->frame_rate,
-   (AVRational){2, 1});
+err = ff_yadif_config_output_common(outlink);
+if (err < 0)
+return err;
 
 y->csp = av_pix_fmt_desc_get(vkctx->frames->sw_format);
 

[FFmpeg-cvslog] avutil/rational: increase av_d2q precision

2024-02-04 Thread Marton Balint
ffmpeg | branch: master | Marton Balint  | Fri Jan 26 01:42:13 
2024 +0100| [8fccd6d510fe802c7d2dbe291676b0780cd4cf7f] | committer: Marton 
Balint

avutil/rational: increase av_d2q precision

Fixes parsing small timebases from expressions (where the expression API
converts the result to double), like in this command line:

ffprobe -f lavfi -i testsrc=d=1,settb=1/20 -show_streams -show_entries 
stream=time_base

Before the patch timebase was parsed as 1/19.

Signed-off-by: Marton Balint 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8fccd6d510fe802c7d2dbe291676b0780cd4cf7f
---

 libavutil/rational.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/rational.c b/libavutil/rational.c
index eb148ddb12..329fbf3302 100644
--- a/libavutil/rational.c
+++ b/libavutil/rational.c
@@ -114,7 +114,7 @@ AVRational av_d2q(double d, int max)
 return (AVRational) { d < 0 ? -1 : 1, 0 };
 frexp(d, );
 exponent = FFMAX(exponent-1, 0);
-den = 1LL << (61 - exponent);
+den = 1LL << (62 - exponent);
 // (int64_t)rint() and llrint() do not work with gcc on ia64 and sparc64,
 // see Ticket2713 for affected gcc/glibc versions
 av_reduce(, , floor(d * den + 0.5), den, max);

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

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


[FFmpeg-cvslog] avfilter/yadif_common: fix timestamps with very small timebases

2024-02-04 Thread Marton Balint
ffmpeg | branch: master | Marton Balint  | Sun Jan 28 02:45:35 
2024 +0100| [52cc89dc451f80fbcb0db9a5ade9bd41bd8594c8] | committer: Marton 
Balint

avfilter/yadif_common: fix timestamps with very small timebases

Yadif filter assumed that the output timebase is always half of the input
timebase. This is not true if halving the input time base is not representable
as an AVRational causing the output timestamps to be invalidly scaled in such a
case.

So let's use av_reduce instead of av_mul_q when calculating the output time
base and if the conversion is inexact then let's fall back to the original
timebase which probably makes more parctical sense than using x/INT_MAX.

Fixes invalidly scaled pts_time values in this command line:
ffmpeg -f lavfi -i testsrc -vf settb=tb=1/20,yadif,showinfo -f null none

Signed-off-by: Marton Balint 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=52cc89dc451f80fbcb0db9a5ade9bd41bd8594c8
---

 libavfilter/yadif.h|  2 ++
 libavfilter/yadif_common.c | 24 +++-
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/libavfilter/yadif.h b/libavfilter/yadif.h
index 2c4fed62d2..888ba12365 100644
--- a/libavfilter/yadif.h
+++ b/libavfilter/yadif.h
@@ -86,6 +86,8 @@ typedef struct YADIFContext {
  * the first field.
  */
 int current_field;  ///< YADIFCurrentField
+
+int pts_multiplier;
 } YADIFContext;
 
 void ff_yadif_init_x86(YADIFContext *yadif);
diff --git a/libavfilter/yadif_common.c b/libavfilter/yadif_common.c
index 933372529e..87303c0d64 100644
--- a/libavfilter/yadif_common.c
+++ b/libavfilter/yadif_common.c
@@ -62,6 +62,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
 
 if (next_pts != AV_NOPTS_VALUE && cur_pts != AV_NOPTS_VALUE) {
 yadif->out->pts = cur_pts + next_pts;
+if (yadif->pts_multiplier == 1) {
+yadif->out->pts >>= 1;
+yadif->out->duration >>= 1;
+}
 } else {
 yadif->out->pts = AV_NOPTS_VALUE;
 }
@@ -150,8 +154,8 @@ int ff_yadif_filter_frame(AVFilterLink *link, AVFrame 
*frame)
 ff_ccfifo_inject(>cc_fifo, yadif->out);
 av_frame_free(>prev);
 if (yadif->out->pts != AV_NOPTS_VALUE)
-yadif->out->pts *= 2;
-yadif->out->duration *= 2;
+yadif->out->pts *= yadif->pts_multiplier;
+yadif->out->duration *= yadif->pts_multiplier;
 return ff_filter_frame(ctx->outputs[0], yadif->out);
 }
 
@@ -168,9 +172,11 @@ FF_ENABLE_DEPRECATION_WARNINGS
 yadif->out->flags &= ~AV_FRAME_FLAG_INTERLACED;
 
 if (yadif->out->pts != AV_NOPTS_VALUE)
-yadif->out->pts *= 2;
+yadif->out->pts *= yadif->pts_multiplier;
 if (!(yadif->mode & 1))
-yadif->out->duration *= 2;
+yadif->out->duration *= yadif->pts_multiplier;
+else if (yadif->pts_multiplier == 1)
+yadif->out->duration >>= 1;
 
 return return_frame(ctx, 0);
 }
@@ -213,9 +219,17 @@ int ff_yadif_config_output_common(AVFilterLink *outlink)
 {
 AVFilterContext *ctx = outlink->src;
 YADIFContext *yadif = ctx->priv;
+AVRational tb = ctx->inputs[0]->time_base;
 int ret;
 
-outlink->time_base = av_mul_q(ctx->inputs[0]->time_base, (AVRational){1, 
2});
+if (av_reduce(>time_base.num, >time_base.den, tb.num, 
tb.den * 2LL, INT_MAX)) {
+yadif->pts_multiplier = 2;
+} else {
+av_log(ctx, AV_LOG_WARNING, "Cannot use exact output timebase\n");
+outlink->time_base = tb;
+yadif->pts_multiplier = 1;
+}
+
 outlink->w = ctx->inputs[0]->w;
 outlink->h = ctx->inputs[0]->h;
 

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

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


[FFmpeg-cvslog] lavc/d3d12va: Improve behaviour on missing decoder support

2024-02-04 Thread Mark Thompson
ffmpeg | branch: master | Mark Thompson  | Sun Feb  4 13:24:33 
2024 +| [fa580a0f17f72a54a2effe89bf10b00b28203d87] | committer: Mark 
Thompson

lavc/d3d12va: Improve behaviour on missing decoder support

Distinguish between a decoder being entirely missing and a decoder which
requires features which are not present in the incomplete implementation
in libavcodec and therefore can't be used.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa580a0f17f72a54a2effe89bf10b00b28203d87
---

 libavcodec/d3d12va_decode.c | 12 
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/libavcodec/d3d12va_decode.c b/libavcodec/d3d12va_decode.c
index f678b6f483..9bb8db1690 100644
--- a/libavcodec/d3d12va_decode.c
+++ b/libavcodec/d3d12va_decode.c
@@ -239,10 +239,14 @@ static int d3d12va_create_decoder(AVCodecContext *avctx)
 
 DX_CHECK(ID3D12VideoDevice_CheckFeatureSupport(device_hwctx->video_device, 
D3D12_FEATURE_VIDEO_DECODE_SUPPORT,
, sizeof(feature)));
-if (!(feature.SupportFlags & D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED) ||
-!(feature.DecodeTier >= D3D12_VIDEO_DECODE_TIER_2)) {
-av_log(avctx, AV_LOG_ERROR, "D3D12 decoder doesn't support on this 
device\n");
-return AVERROR(EINVAL);
+if (!(feature.SupportFlags & D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED)) {
+av_log(avctx, AV_LOG_ERROR, "D3D12 video decode is not supported on 
this device.\n");
+return AVERROR(ENOSYS);
+}
+if (!(feature.DecodeTier >= D3D12_VIDEO_DECODE_TIER_2)) {
+av_log(avctx, AV_LOG_ERROR, "D3D12 video decode on this device 
requires tier %d support, "
+   "but it is not implemented.\n", feature.DecodeTier);
+return AVERROR_PATCHWELCOME;
 }
 
 desc = (D3D12_VIDEO_DECODER_DESC) {

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

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


[FFmpeg-cvslog] avformat/flvenc: fix stereo flag when writing PCMA/PCMU

2024-02-04 Thread Alessandro Ros
ffmpeg | branch: master | Alessandro Ros  | Sun Jan 21 
16:16:20 2024 +0100| [49ab7f8997659b7d7140b54d814234e302843434] | committer: 
Marton Balint

avformat/flvenc: fix stereo flag when writing PCMA/PCMU

Currently, when writing PCMA or PCMU tracks with FLV or RTMP, the
stereo flag and sample rate flag inside RTMP audio messages are
overridden, making impossible to distinguish between mono and stereo
tracks. This patch fixes the issue by restoring the same flag mechanism
of all other codecs, that takes into consideration the right channel
count and sample rate.

Signed-off-by: Alessandro Ros 
Signed-off-by: Marton Balint 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=49ab7f8997659b7d7140b54d814234e302843434
---

 libavformat/flvenc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 874560fac1..772d891136 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -208,10 +208,10 @@ error:
 flags |= FLV_CODECID_NELLYMOSER| FLV_SAMPLESSIZE_16BIT;
 break;
 case AV_CODEC_ID_PCM_MULAW:
-flags = FLV_CODECID_PCM_MULAW | FLV_SAMPLERATE_SPECIAL | 
FLV_SAMPLESSIZE_16BIT;
+flags |= FLV_CODECID_PCM_MULAW | FLV_SAMPLESSIZE_16BIT;
 break;
 case AV_CODEC_ID_PCM_ALAW:
-flags = FLV_CODECID_PCM_ALAW  | FLV_SAMPLERATE_SPECIAL | 
FLV_SAMPLESSIZE_16BIT;
+flags |= FLV_CODECID_PCM_ALAW | FLV_SAMPLESSIZE_16BIT;
 break;
 case 0:
 flags |= par->codec_tag << 4;

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

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


[FFmpeg-cvslog] avutil/thread: add support for setting thread name on *bsd and solaris

2024-02-04 Thread Brad Smith
ffmpeg | branch: master | Brad Smith  | Sun 
Jan  7 00:55:51 2024 -0500| [fd16d8c68cd7b820eda76c407b0645b7cf470efd] | 
committer: Marton Balint

avutil/thread: add support for setting thread name on *bsd and solaris

FreeBSD/DragonFly/Solaris use pthread_setname_np(). OpenBSD uses 
pthread_set_name_np().

Signed-off-by: Brad Smith 
Signed-off-by: Marton Balint 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fd16d8c68cd7b820eda76c407b0645b7cf470efd
---

 configure  | 10 ++
 libavutil/thread.h | 14 --
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 68f675a4bc..f72533b7d2 100755
--- a/configure
+++ b/configure
@@ -2239,6 +2239,7 @@ HEADERS_LIST="
 opencv2_core_core_c_h
 OpenGL_gl3_h
 poll_h
+pthread_np_h
 sys_param_h
 sys_resource_h
 sys_select_h
@@ -2341,6 +2342,8 @@ SYSTEM_FUNCS="
 posix_memalign
 prctl
 pthread_cancel
+pthread_set_name_np
+pthread_setname_np
 sched_getaffinity
 SecItemImport
 SetConsoleTextAttribute
@@ -6524,6 +6527,7 @@ check_headers malloc.h
 check_headers mftransform.h
 check_headers net/udplite.h
 check_headers poll.h
+check_headers pthread_np.h
 check_headers sys/param.h
 check_headers sys/resource.h
 check_headers sys/select.h
@@ -6692,6 +6696,12 @@ if ! disabled pthreads && ! enabled w32threads && ! 
enabled os2threads; then
 if enabled pthreads; then
 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); 
sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
 check_func pthread_cancel $pthreads_extralibs
+hdrs=pthread.h
+if enabled pthread_np_h; then
+hdrs="$hdrs pthread_np.h"
+fi
+check_lib pthread_set_name_np "$hdrs" pthread_set_name_np -lpthread
+check_lib pthread_setname_np "$hdrs" pthread_setname_np -lpthread
 fi
 fi
 
diff --git a/libavutil/thread.h b/libavutil/thread.h
index 2ded498c89..fa74dd2ea7 100644
--- a/libavutil/thread.h
+++ b/libavutil/thread.h
@@ -26,6 +26,8 @@
 
 #if HAVE_PRCTL
 #include 
+#elif (HAVE_PTHREAD_SETNAME_NP || HAVE_PTHREAD_SET_NAME_NP) && 
HAVE_PTHREAD_NP_H
+#include 
 #endif
 
 #include "error.h"
@@ -213,11 +215,19 @@ static inline int ff_thread_once(char *control, void 
(*routine)(void))
 
 static inline int ff_thread_setname(const char *name)
 {
+int ret = 0;
+
 #if HAVE_PRCTL
-return AVERROR(prctl(PR_SET_NAME, name));
+ret = AVERROR(prctl(PR_SET_NAME, name));
+#elif HAVE_PTHREAD_SETNAME_NP
+ret = AVERROR(pthread_setname_np(pthread_self(), name));
+#elif HAVE_PTHREAD_SET_NAME_NP
+pthread_set_name_np(pthread_self(), name);
+#else
+ret = AVERROR(ENOSYS);
 #endif
 
-return AVERROR(ENOSYS);
+return ret;
 }
 
 #endif /* AVUTIL_THREAD_H */

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

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