[FFmpeg-devel] [PATCH] configure: Check for the header sys/mmap.h when checking for mmap
Whenever mmap is used, we include sys/mmap.h unconditionally within HAVE_MMAP ifdefs. When building for a system (e.g. mingw) that normally lacks the mmap function, but if building with profiling enabled, the profiling runtime which gets linked in in each test executable, can contain a function named mmap, causing stray detection of it. This fixes an issue reported at https://github.com/mstorsjo/llvm-mingw/issues/390. --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 0b5e83bd20..99fa5260a4 100755 --- a/configure +++ b/configure @@ -6457,7 +6457,7 @@ check_func getrusage check_func gettimeofday check_func isatty check_func mkstemp -check_func mmap +check_func_headers sys/mman.h mmap check_func mprotect # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that check_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt -- 2.39.3 (Apple Git-145) ___ 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] configure: Check for the header sys/mmap.h when checking for mmap
There maybe a spelling mistake, which in "check_func_headers sys/mman.h mmap". It looks like should be "sys/mmap.h" Thanks -- Original -- From: "FFmpeg development discussions and patches" https://github.com/mstorsjo/llvm-mingw/issues/390. --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 0b5e83bd20..99fa5260a4 100755 --- a/configure +++ b/configure @@ -6457,7 +6457,7 @@ check_func getrusage check_func gettimeofday check_func isatty check_func mkstemp -check_func mmap +check_func_headers sys/mman.h mmap check_func mprotect # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that check_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt -- 2.39.3 (Apple Git-145) ___ 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] configure: Check for the header sys/mmap.h when checking for mmap
On Thu, 11 Jan 2024, 徐福隆 wrote: There maybe a spelling mistake, which in "check_func_headers sys/mman.h mmap". It looks like should be "sys/mmap.h" No, this is not a mistake, this is the name of the header. Have a look at libavutil/file.c or libswscale/utils.c, both which have this: #if HAVE_MMAP #include ... // 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".
Re: [FFmpeg-devel] [PATCH 4/4] fate: add raw IAMF tests
On 1/11/2024 12:17 AM, Michael Niedermayer wrote: On Wed, Jan 10, 2024 at 09:52:28AM -0300, James Almer wrote: On 1/10/2024 12:05 AM, Michael Niedermayer wrote: On Sun, Jan 07, 2024 at 06:31:00PM -0300, James Almer wrote: Covers muxing from raw pcm audio input into FLAC, using several scalable layouts, and demuxing the result. Signed-off-by: James Almer --- tests/Makefile | 7 +- tests/fate/iamf.mak| 31 ++ tests/filtergraphs/iamf_5_1| 4 + tests/filtergraphs/iamf_5_1_2 | 5 + tests/filtergraphs/iamf_5_1_4 | 6 ++ tests/filtergraphs/iamf_7_1_4 | 7 ++ tests/ref/fate/iamf-5_1_4 | 98 ++ tests/ref/fate/iamf-7_1_4 | 114 + tests/ref/fate/iamf-stereo | 18 tests/streamgroups/audio_element-5_1_4 | 7 ++ tests/streamgroups/audio_element-7_1_4 | 6 ++ tests/streamgroups/audio_element-stereo| 3 + tests/streamgroups/mix_presentation-5_1_4 | 2 + tests/streamgroups/mix_presentation-7_1_4 | 2 + tests/streamgroups/mix_presentation-stereo | 3 + 15 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 tests/fate/iamf.mak create mode 100644 tests/filtergraphs/iamf_5_1 create mode 100644 tests/filtergraphs/iamf_5_1_2 create mode 100644 tests/filtergraphs/iamf_5_1_4 create mode 100644 tests/filtergraphs/iamf_7_1_4 create mode 100644 tests/ref/fate/iamf-5_1_4 create mode 100644 tests/ref/fate/iamf-7_1_4 create mode 100644 tests/ref/fate/iamf-stereo create mode 100644 tests/streamgroups/audio_element-5_1_4 create mode 100644 tests/streamgroups/audio_element-7_1_4 create mode 100644 tests/streamgroups/audio_element-stereo create mode 100644 tests/streamgroups/mix_presentation-5_1_4 create mode 100644 tests/streamgroups/mix_presentation-7_1_4 create mode 100644 tests/streamgroups/mix_presentation-stereo Iam probably missing some dependancies but, reporting anyway this fails fate: [aist#0:0/pcm_s16le @ 0x5645f5820680] Guessed Channel Layout: stereo Input #0, wav, from 'ffmpeg/tests/data/asynth-44100-2.wav': Duration: 00:00:06.00, bitrate: 1411 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s [in#0/wav @ 0x5645f5812400] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream. [out#0/iamf @ 0x5645f585af80] Codec AVOption dct (DCT algorithm) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream. [out#0/iamf @ 0x5645f585af80] Codec AVOption idct (select IDCT implementation) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream. [out#0/iamf @ 0x5645f585af80] Invalid or missing stream group index in submix element specification "stg=0:parameter_id=100:headphones_rendering_mode=stereo:annotations=en-us=Scalable_Submix" Error opening output file ffmpeg/tests/data/fate/iamf-stereo.iamf. Error opening output files: Invalid argument threads=1 tests/Makefile:317: recipe for target 'fate-iamf-stereo' failed make: *** [fate-iamf-stereo] Error 234 thx I can't reproduce this. Tried with these four patches using current master and it works. Could it be strtoll misbehaving? Can you check what values are in idx, oc->nb_stream_groups, and endptr? didnt had time to look its 4am i need to eat and go to bed :) but a quick test with this: diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 1b42ac9a1d7..224e9e8268e 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -2113,8 +2113,10 @@ static int of_parse_iamf_submixes(Muxer *mux, AVStreamGroup *stg, char *ptr) char *endptr = NULL; int64_t idx = -1; -if (e = av_dict_get(dict, "stg", NULL, 0)) +if (e = av_dict_get(dict, "stg", NULL, 0)) { idx = strtoll(e->value, &endptr, 0); +av_log(0,0, "B idx:%"PRId64" NSG:%d endptr: %p endptr:%s value:%s\n", idx, oc->nb_stream_groups, endptr, endptr, e->value); +} av_dict_set(&dict, "stg", NULL, 0); I guess this called before the checks is what's wrong. if (!endptr || *endptr || idx < 0 || idx >= oc->nb_stream_groups - 1 || oc->stream_groups[idx]->type != AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT) { @@ -2245,6 +2247,
Re: [FFmpeg-devel] [PATCH v2] checkasm: Generalize crash handling
On Wed, 10 Jan 2024, Rémi Denis-Courmont wrote: Looks OK (not tested). Thanks, pushed now. // 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] checkasm: Test whether direct cycle counter access works
This should print a nicer error message than crashing due to an illegal instruction, if direct cycle counter access isn't allowed. This matches the dav1d checkasm commit 95a192549a448b70d9542e840c4e34b60d09b093. --- tests/checkasm/checkasm.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 994d64e96b..9c5abb53dc 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -754,6 +754,14 @@ static int bench_init_kperf(void) static int bench_init_ffmpeg(void) { #ifdef AV_READ_TIME +if (!checkasm_save_context()) { +checkasm_set_signal_handler_state(1); +AV_READ_TIME(); +checkasm_set_signal_handler_state(0); +} else { +fprintf(stderr, "checkasm: unable to access cycle counter\n"); +return -1; +} printf("benchmarking with native FFmpeg timers\n"); return 0; #else @@ -927,7 +935,9 @@ int checkasm_bench_func(void) /* Indicate that the current test has failed */ void checkasm_fail_func(const char *msg, ...) { -if (state.current_func_ver->cpu && state.current_func_ver->ok) { +if (state.current_func_ver && state.current_func_ver->cpu && +state.current_func_ver->ok) +{ va_list arg; print_cpu_name(); -- 2.39.3 (Apple Git-145) ___ 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 2/4] avformat/psxstr: fix demuxing I/O error at EOF
On Tue, Jan 02, 2024 at 02:52:11AM +, aybe aybe wrote: > This second patch fixes the following error at the end of a .STR stream > conversion: > > [in#0/psxstr @ 00681e80] Error during demuxing: I/O error > > It's been a bit of trial and error as I've never used ffmpeg, but returning > AVERROR_EOF appears to be the way to go (doesn't complain anymore). > > Signed-off-by: aybe > --- > libavformat/psxstr.c | 6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) will apply thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB If a bugfix only changes things apparently unrelated to the bug with no further explanation, that is a good sign that the bugfix is wrong. signature.asc Description: PGP signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH 3/4] avformat/psxstr: fix unknown sector type 00/80
On Tue, Jan 02, 2024 at 02:57:18AM +, aybe aybe wrote: > This third patch fixes warnings that are false positives (still on STRv1). > > That's because these sectors are simply empty ones as can be read in "System > Description CD-ROM XA, May 1991, > 4.3.2.3". > > Haven't attempted significant refactoring as it just works, left a comment > instead about the situation. > > The result is that there are no more false warnings when converting. > > Signed-off-by: aybe > --- > libavformat/psxstr.c | 7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/libavformat/psxstr.c b/libavformat/psxstr.c > index 72d14b9792..306a690f52 100644 > --- a/libavformat/psxstr.c > +++ b/libavformat/psxstr.c > @@ -48,6 +48,7 @@ > #define CDXA_TYPE_DATA 0x08 > #define CDXA_TYPE_AUDIO0x04 > #define CDXA_TYPE_VIDEO0x02 > +#define CDXA_TYPE_EMPTY0x00 > > #define STR_MAGIC (0x80010160) > > @@ -274,6 +275,12 @@ static int str_read_packet(AVFormatContext *s, > str->channels[channel].audio_stream_index; > pkt->duration = 1; > return 0; > +case CDXA_TYPE_EMPTY: /* CD-ROM XA, May 1991, 4.3.2.3 */ > +{ > +/* NOTE this also catches 0x80 (EOF bit) because of > CDXA_TYPE_MASK */ > +/* TODO consider refactoring so as to explicitly handle each > case? */ > +break; > +} will apply without unneeded {} thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB If you think the mosad wants you dead since a long time then you are either wrong or dead since a long time. signature.asc Description: PGP signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH] checkasm: Test whether direct cycle counter access works
Le torstaina 11. tammikuuta 2024, 14.53.05 EET Martin Storsjö a écrit : > This should print a nicer error message than crashing due to > an illegal instruction, if direct cycle counter access isn't > allowed. > > This matches the dav1d checkasm commit > 95a192549a448b70d9542e840c4e34b60d09b093. > --- > tests/checkasm/checkasm.c | 12 +++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c > index 994d64e96b..9c5abb53dc 100644 > --- a/tests/checkasm/checkasm.c > +++ b/tests/checkasm/checkasm.c > @@ -754,6 +754,14 @@ static int bench_init_kperf(void) > static int bench_init_ffmpeg(void) > { > #ifdef AV_READ_TIME > +if (!checkasm_save_context()) { > +checkasm_set_signal_handler_state(1); > +AV_READ_TIME(); > +checkasm_set_signal_handler_state(0); > +} else { > +fprintf(stderr, "checkasm: unable to access cycle counter\n"); AV_READ_TIME() reads time, not cycles. If we want cycle count, then we should add a separate macro, as the two are different performance counters at least on RISC-V. As things stand, this code won't do anything on RISC-V, sinec AV_READ_TIME() actually reads, well, time, not cycles. > +return -1; > +} > printf("benchmarking with native FFmpeg timers\n"); > return 0; > #else > @@ -927,7 +935,9 @@ int checkasm_bench_func(void) > /* Indicate that the current test has failed */ > void checkasm_fail_func(const char *msg, ...) > { > -if (state.current_func_ver->cpu && state.current_func_ver->ok) { > +if (state.current_func_ver && state.current_func_ver->cpu && > +state.current_func_ver->ok) > +{ > va_list arg; > > print_cpu_name(); -- 雷米‧德尼-库尔蒙 http://www.remlab.net/ ___ 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] checkasm: Test whether direct cycle counter access works
On Thu, 11 Jan 2024, Rémi Denis-Courmont wrote: Le torstaina 11. tammikuuta 2024, 14.53.05 EET Martin Storsjö a écrit : This should print a nicer error message than crashing due to an illegal instruction, if direct cycle counter access isn't allowed. This matches the dav1d checkasm commit 95a192549a448b70d9542e840c4e34b60d09b093. --- tests/checkasm/checkasm.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 994d64e96b..9c5abb53dc 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -754,6 +754,14 @@ static int bench_init_kperf(void) static int bench_init_ffmpeg(void) { #ifdef AV_READ_TIME +if (!checkasm_save_context()) { +checkasm_set_signal_handler_state(1); +AV_READ_TIME(); +checkasm_set_signal_handler_state(0); +} else { +fprintf(stderr, "checkasm: unable to access cycle counter\n"); AV_READ_TIME() reads time, not cycles. Right, I can adjust the wording. Exactly what kind of measurement AV_READ_TIME returns varies between architectures and environments indeed. What about: checkasm: unable to execute platform specific timer If we want cycle count, then we should add a separate macro, as the two are different performance counters at least on RISC-V. That's not what I try to do here, I just want to test whether the timer, whatever we have in AV_READ_TIME, is usable. As things stand, this code won't do anything on RISC-V, sinec AV_READ_TIME() actually reads, well, time, not cycles. Should I interpret this, as, the current AV_READ_TIME implementation on RISC-V always succeeds, contrary to the previous implementation (with rdcycle) which is unavailable on some systems, referencing 05115a77e012331b6ff5e24bab40e75848447c62? In that case - sure, this would be mostly a no-op for RISC-V, just like it is for x86, but for ARM/AArch64 it would provide a nicer error message if access to the relevant registers hasn't been configured. // 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".
Re: [FFmpeg-devel] [PATCH] checkasm: Test whether direct cycle counter access works
Le torstaina 11. tammikuuta 2024, 16.15.29 EET Martin Storsjö a écrit : > > AV_READ_TIME() reads time, not cycles. > > Right, I can adjust the wording. Exactly what kind of measurement > AV_READ_TIME returns varies between architectures and environments indeed. In practice, yes, but I would argue that it's a bug if it does not measure time. At the very least because, the name is extremely misleading. > What about: > > checkasm: unable to execute platform specific timer > > > If we want cycle count, then we should add a separate macro, as the two > > are different performance counters at least on RISC-V. > > That's not what I try to do here, I just want to test whether the timer, > whatever we have in AV_READ_TIME, is usable. Sure, I can live with that, but I thought that checkasm actually prefered to measure cycles than time periods. > > As things stand, this code won't do anything on RISC-V, sinec > > AV_READ_TIME() actually reads, well, time, not cycles. > > Should I interpret this, as, the current AV_READ_TIME implementation on > RISC-V always succeeds, contrary to the previous implementation (with > rdcycle) which is unavailable on some systems, referencing > 05115a77e012331b6ff5e24bab40e75848447c62? Yes. -- 雷米‧德尼-库尔蒙 http://www.remlab.net/ ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH v2 4/4] vvcdec: reuse h26x/h2656_deblock_template.c
> > > > > Yes. After we merge this, we will send out the mc x86 asm code for > review. > > It will share the same binary with HEVC. > > For SAO/Deblock, we will follow a similar approach, but it needs to be a > > little later than mc. > > For C code, we can share the binary as well, but it involves some > interface > > changes, better to do it after all asm is ready. > > > > OK, that sounds reasonable to me. > Thank you, Ronald. Pushed. > > Ronald > ___ > 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".
[FFmpeg-devel] [PATCH v3 1/2] avformat/flvdec: support enhanced flv PacketTypeMetadata
From: Zhu Pengfei <411294...@qq.com> Signed-off-by: Zhu Pengfei <411294...@qq.com> --- libavformat/flvdec.c | 178 ++- 1 file changed, 177 insertions(+), 1 deletion(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index e25b5bd163..65815e51f9 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -34,6 +34,7 @@ #include "libavutil/intfloat.h" #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" +#include "libavutil/mastering_display_metadata.h" #include "avformat.h" #include "demux.h" #include "internal.h" @@ -45,6 +46,28 @@ #define MAX_DEPTH 16 ///< arbitrary limit to prevent unbounded recursion +typedef struct FLVMasteringMeta { +double r_x; +double r_y; +double g_x; +double g_y; +double b_x; +double b_y; +double white_x; +double white_y; +double max_luminance; +double min_luminance; +} FLVMasteringMeta; + +typedef struct FLVMetaVideoColor { +uint64_t matrix_coefficients; +uint64_t transfer_characteristics; +uint64_t primaries; +uint64_t max_cll; +uint64_t max_fall; +FLVMasteringMeta mastering_meta; +} FLVMetaVideoColor; + typedef struct FLVContext { const AVClass *class; ///< Class for private options. int trust_metadata; ///< configure streams according onMetaData @@ -80,6 +103,8 @@ typedef struct FLVContext { int64_t time_offset; int64_t time_pos; +FLVMetaVideoColor *metaVideoColor; +int meta_color_info_flag; } FLVContext; /* AMF date type */ @@ -524,6 +549,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, FLVContext *flv = s->priv_data; AVIOContext *ioc; AMFDataType amf_type; +FLVMetaVideoColor *meta_video_color = flv->metaVideoColor; char str_val[1024]; double num_val; amf_date date; @@ -672,6 +698,43 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, } } +if (meta_video_color) { +if (amf_type == AMF_DATA_TYPE_NUMBER || +amf_type == AMF_DATA_TYPE_BOOL) { +if (!strcmp(key, "colorPrimaries")) { +meta_video_color->primaries = num_val; +} else if (!strcmp(key, "transferCharacteristics")) { +meta_video_color->transfer_characteristics = num_val; +} else if (!strcmp(key, "matrixCoefficients")) { +meta_video_color->matrix_coefficients = num_val; +} else if (!strcmp(key, "maxFall")) { +meta_video_color->max_fall = num_val; +} else if (!strcmp(key, "maxCLL")) { +meta_video_color->max_cll = num_val; +} else if (!strcmp(key, "redX")) { +meta_video_color->mastering_meta.r_x = num_val; +} else if (!strcmp(key, "redY")) { +meta_video_color->mastering_meta.r_y = num_val; +} else if (!strcmp(key, "greenX")) { +meta_video_color->mastering_meta.g_x = num_val; +} else if (!strcmp(key, "greenY")) { +meta_video_color->mastering_meta.g_y = num_val; +} else if (!strcmp(key, "blueX")) { +meta_video_color->mastering_meta.b_x = num_val; +} else if (!strcmp(key, "blueY")) { +meta_video_color->mastering_meta.b_y = num_val; +} else if (!strcmp(key, "whitePointX")) { +meta_video_color->mastering_meta.white_x = num_val; +} else if (!strcmp(key, "whitePointY")) { +meta_video_color->mastering_meta.white_y = num_val; +} else if (!strcmp(key, "maxLuminance")) { +meta_video_color->mastering_meta.max_luminance = num_val; +} else if (!strcmp(key, "minLuminance")) { +meta_video_color->mastering_meta.min_luminance = num_val; +} +} +} + if (amf_type == AMF_DATA_TYPE_OBJECT && s->nb_streams == 1 && ((!apar && !strcmp(key, "audiocodecid")) || (!vpar && !strcmp(key, "videocodecid" @@ -824,6 +887,7 @@ static int flv_read_close(AVFormatContext *s) av_freep(&flv->new_extradata[i]); av_freep(&flv->keyframe_times); av_freep(&flv->keyframe_filepositions); +av_freep(&flv->metaVideoColor); return 0; } @@ -1028,6 +1092,104 @@ static int resync(AVFormatContext *s) return AVERROR_EOF; } +static int flv_parse_video_color_info(AVFormatContext *s, AVStream *st, int64_t next_pos) +{ +FLVContext *flv = s->priv_data; +AMFDataType type; +AVIOContext *ioc; +char buffer[32]; +ioc = s->pb; + +// first object needs to be "colorInfo" string +type = avio_r8(ioc); +if (type != AMF_DATA_TYPE_STRING || +amf_get_string(ioc, buffer, sizeof(buffer)) < 0) +
[FFmpeg-devel] [PATCH v3 2/2] avformat/flvenc: support enhanced flv PacketTypeMetadata
From: Zhu Pengfei <411294...@qq.com> Signed-off-by: Zhu Pengfei <411294...@qq.com> --- libavformat/flvenc.c | 133 +++ 1 file changed, 133 insertions(+) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index f6d10f331c..4485aba03c 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -24,6 +24,7 @@ #include "libavutil/intfloat.h" #include "libavutil/avassert.h" #include "libavutil/mathematics.h" +#include "libavutil/mastering_display_metadata.h" #include "libavcodec/codec_desc.h" #include "libavcodec/mpeg4audio.h" #include "avio.h" @@ -124,6 +125,7 @@ typedef struct FLVContext { int flags; int64_t last_ts[FLV_STREAM_TYPE_NB]; +int write_metadata_pkt; } FLVContext; static int get_audio_flags(AVFormatContext *s, AVCodecParameters *par) @@ -478,6 +480,136 @@ static void write_metadata(AVFormatContext *s, unsigned int ts) avio_wb32(pb, flv->metadata_totalsize + 11); } +static void flv_write_metadata_packet(AVFormatContext *s, AVCodecParameters *par, unsigned int ts) +{ +AVIOContext *pb = s->pb; +FLVContext *flv = s->priv_data; +AVContentLightMetadata *lightMetadata = NULL; +AVMasteringDisplayMetadata *displayMetadata = NULL; +const int flags_size = 5; +int64_t metadata_size_pos = 0; +int64_t total_size = 0; +const AVPacketSideData *side_data = NULL; + +if (par->codec_id == AV_CODEC_ID_HEVC || par->codec_id == AV_CODEC_ID_AV1 || +par->codec_id == AV_CODEC_ID_VP9) { +if (flv->write_metadata_pkt) return; + +side_data = av_packet_side_data_get(par->coded_side_data, par->nb_coded_side_data, +AV_PKT_DATA_CONTENT_LIGHT_LEVEL); +if (side_data) +lightMetadata = (AVContentLightMetadata *)side_data->data; + +side_data = av_packet_side_data_get(par->coded_side_data, par->nb_coded_side_data, + AV_PKT_DATA_MASTERING_DISPLAY_METADATA); +if (side_data) +displayMetadata = (AVMasteringDisplayMetadata *)side_data->data; + +/* +* Reference Enhancing FLV +* https://github.com/veovera/enhanced-rtmp/blob/main/enhanced-rtmp.pdf +* */ +avio_w8(pb, FLV_TAG_TYPE_VIDEO); //write video tag type +metadata_size_pos = avio_tell(pb); +avio_wb24(pb, 0 + flags_size); +put_timestamp(pb, ts); //ts = pkt->dts, gen +avio_wb24(pb, flv->reserved); + +if (par->codec_id == AV_CODEC_ID_HEVC) { +avio_w8(pb, FLV_IS_EX_HEADER | PacketTypeMetadata| FLV_FRAME_VIDEO_INFO_CMD); // ExVideoTagHeader mode with PacketTypeMetadata +avio_write(pb, "hvc1", 4); +} else if (par->codec_id == AV_CODEC_ID_AV1 || par->codec_id == AV_CODEC_ID_VP9) { +avio_w8(pb, FLV_IS_EX_HEADER | PacketTypeMetadata| FLV_FRAME_VIDEO_INFO_CMD); +avio_write(pb, par->codec_id == AV_CODEC_ID_AV1 ? "av01" : "vp09", 4); +} + +avio_w8(pb, AMF_DATA_TYPE_STRING); +put_amf_string(pb, "colorInfo"); + +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "colorConfig"); // colorConfig + +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "transferCharacteristics"); // color_trc +put_amf_double(pb, par->color_trc); + +put_amf_string(pb, "matrixCoefficients"); // colorspace +put_amf_double(pb, par->color_space); + +put_amf_string(pb, "colorPrimaries"); // color_primaries +put_amf_double(pb, par->color_primaries); + +put_amf_string(pb, ""); +avio_w8(pb, AMF_END_OF_OBJECT); + +if (lightMetadata) { +put_amf_string(pb, "hdrCll"); +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "maxFall"); +put_amf_double(pb, lightMetadata->MaxFALL); + +put_amf_string(pb, "maxCLL"); +put_amf_double(pb, lightMetadata->MaxCLL); + +put_amf_string(pb, ""); +avio_w8(pb, AMF_END_OF_OBJECT); +} + +if (displayMetadata && (displayMetadata->has_primaries || displayMetadata->has_luminance)) { +put_amf_string(pb, "hdrMdcv"); +avio_w8(pb, AMF_DATA_TYPE_OBJECT); +if (displayMetadata->has_primaries) { +put_amf_string(pb, "redX"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[0][0])); + +put_amf_string(pb, "redY"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[0][1])); + +put_amf_string(pb, "greenX"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[1][0])); + +put_amf_string(pb, "greenY"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[1][1])); + +put_amf_string(pb, "blueX"); +put_amf_double(pb, av_q2d(disp
[FFmpeg-devel] [PATCH v3 2/2] avformat/flvenc: support enhanced flv PacketTypeMetadata
From: Zhu Pengfei <411294...@qq.com> Signed-off-by: Zhu Pengfei <411294...@qq.com> --- libavformat/flvenc.c | 133 +++ 1 file changed, 133 insertions(+) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index f6d10f331c..4485aba03c 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -24,6 +24,7 @@ #include "libavutil/intfloat.h" #include "libavutil/avassert.h" #include "libavutil/mathematics.h" +#include "libavutil/mastering_display_metadata.h" #include "libavcodec/codec_desc.h" #include "libavcodec/mpeg4audio.h" #include "avio.h" @@ -124,6 +125,7 @@ typedef struct FLVContext { int flags; int64_t last_ts[FLV_STREAM_TYPE_NB]; +int write_metadata_pkt; } FLVContext; static int get_audio_flags(AVFormatContext *s, AVCodecParameters *par) @@ -478,6 +480,136 @@ static void write_metadata(AVFormatContext *s, unsigned int ts) avio_wb32(pb, flv->metadata_totalsize + 11); } +static void flv_write_metadata_packet(AVFormatContext *s, AVCodecParameters *par, unsigned int ts) +{ +AVIOContext *pb = s->pb; +FLVContext *flv = s->priv_data; +AVContentLightMetadata *lightMetadata = NULL; +AVMasteringDisplayMetadata *displayMetadata = NULL; +const int flags_size = 5; +int64_t metadata_size_pos = 0; +int64_t total_size = 0; +const AVPacketSideData *side_data = NULL; + +if (par->codec_id == AV_CODEC_ID_HEVC || par->codec_id == AV_CODEC_ID_AV1 || +par->codec_id == AV_CODEC_ID_VP9) { +if (flv->write_metadata_pkt) return; + +side_data = av_packet_side_data_get(par->coded_side_data, par->nb_coded_side_data, +AV_PKT_DATA_CONTENT_LIGHT_LEVEL); +if (side_data) +lightMetadata = (AVContentLightMetadata *)side_data->data; + +side_data = av_packet_side_data_get(par->coded_side_data, par->nb_coded_side_data, + AV_PKT_DATA_MASTERING_DISPLAY_METADATA); +if (side_data) +displayMetadata = (AVMasteringDisplayMetadata *)side_data->data; + +/* +* Reference Enhancing FLV +* https://github.com/veovera/enhanced-rtmp/blob/main/enhanced-rtmp.pdf +* */ +avio_w8(pb, FLV_TAG_TYPE_VIDEO); //write video tag type +metadata_size_pos = avio_tell(pb); +avio_wb24(pb, 0 + flags_size); +put_timestamp(pb, ts); //ts = pkt->dts, gen +avio_wb24(pb, flv->reserved); + +if (par->codec_id == AV_CODEC_ID_HEVC) { +avio_w8(pb, FLV_IS_EX_HEADER | PacketTypeMetadata| FLV_FRAME_VIDEO_INFO_CMD); // ExVideoTagHeader mode with PacketTypeMetadata +avio_write(pb, "hvc1", 4); +} else if (par->codec_id == AV_CODEC_ID_AV1 || par->codec_id == AV_CODEC_ID_VP9) { +avio_w8(pb, FLV_IS_EX_HEADER | PacketTypeMetadata| FLV_FRAME_VIDEO_INFO_CMD); +avio_write(pb, par->codec_id == AV_CODEC_ID_AV1 ? "av01" : "vp09", 4); +} + +avio_w8(pb, AMF_DATA_TYPE_STRING); +put_amf_string(pb, "colorInfo"); + +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "colorConfig"); // colorConfig + +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "transferCharacteristics"); // color_trc +put_amf_double(pb, par->color_trc); + +put_amf_string(pb, "matrixCoefficients"); // colorspace +put_amf_double(pb, par->color_space); + +put_amf_string(pb, "colorPrimaries"); // color_primaries +put_amf_double(pb, par->color_primaries); + +put_amf_string(pb, ""); +avio_w8(pb, AMF_END_OF_OBJECT); + +if (lightMetadata) { +put_amf_string(pb, "hdrCll"); +avio_w8(pb, AMF_DATA_TYPE_OBJECT); + +put_amf_string(pb, "maxFall"); +put_amf_double(pb, lightMetadata->MaxFALL); + +put_amf_string(pb, "maxCLL"); +put_amf_double(pb, lightMetadata->MaxCLL); + +put_amf_string(pb, ""); +avio_w8(pb, AMF_END_OF_OBJECT); +} + +if (displayMetadata && (displayMetadata->has_primaries || displayMetadata->has_luminance)) { +put_amf_string(pb, "hdrMdcv"); +avio_w8(pb, AMF_DATA_TYPE_OBJECT); +if (displayMetadata->has_primaries) { +put_amf_string(pb, "redX"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[0][0])); + +put_amf_string(pb, "redY"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[0][1])); + +put_amf_string(pb, "greenX"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[1][0])); + +put_amf_string(pb, "greenY"); +put_amf_double(pb, av_q2d(displayMetadata->display_primaries[1][1])); + +put_amf_string(pb, "blueX"); +put_amf_double(pb, av_q2d(disp
Re: [FFmpeg-devel] [PATCH 3/3] lavc/h264dsp: R-V V h264_add_pixels8_clear
ping flow gg 于2023年12月25日周一 12:01写道: > C908 > h264_add_pixels8_clear_c: 262.0 > h264_add_pixels8_clear_rvv_i64: 59.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 v2] checkasm: Test whether the native FFmpeg timers work
On some platforms (in particular, ARM/AArch64), the implementation of AV_READ_TIME() may use a privileged instruction - in such cases, benchmarking just fails with a SIGILL. Instead of crashing, try executing AV_READ_TIME() once within a region with the signal handler active, to allow gracefully informing the user about the issue. This matches the dav1d checkasm commit 95a192549a448b70d9542e840c4e34b60d09b093. --- Reworded the commit message and the printed warning message, as the actual type of the timer is undefined and varies across platforms. --- tests/checkasm/checkasm.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 994d64e96b..05f23898d3 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -754,6 +754,14 @@ static int bench_init_kperf(void) static int bench_init_ffmpeg(void) { #ifdef AV_READ_TIME +if (!checkasm_save_context()) { +checkasm_set_signal_handler_state(1); +AV_READ_TIME(); +checkasm_set_signal_handler_state(0); +} else { +fprintf(stderr, "checkasm: unable to execute platform specific timer\n"); +return -1; +} printf("benchmarking with native FFmpeg timers\n"); return 0; #else @@ -927,7 +935,9 @@ int checkasm_bench_func(void) /* Indicate that the current test has failed */ void checkasm_fail_func(const char *msg, ...) { -if (state.current_func_ver->cpu && state.current_func_ver->ok) { +if (state.current_func_ver && state.current_func_ver->cpu && +state.current_func_ver->ok) +{ va_list arg; print_cpu_name(); -- 2.39.3 (Apple Git-145) ___ 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] libavformat/adxdec: remove erroneous whitespace
25th anniversary of the Dreamcast this year. Will follow up with FATE test. Signed-off-by: Marth64 --- libavformat/adxdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/adxdec.c b/libavformat/adxdec.c index b6bd3303a7..55eabceef0 100644 --- a/libavformat/adxdec.c +++ b/libavformat/adxdec.c @@ -105,7 +105,7 @@ static int adx_read_header(AVFormatContext *s) av_log(s, AV_LOG_ERROR, "Invalid extradata size.\n"); return AVERROR_INVALIDDATA; } -channels = AV_RB8 (par->extradata + 7); +channels = AV_RB8(par->extradata + 7); par->sample_rate = AV_RB32(par->extradata + 8); if (channels <= 0) { -- 2.34.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] fate/audio: add ADX demux and decode test
Necessary samples to fate-samples/adx : https://ufile.io/f/v306q Samples are re-encodes of luckynight from FATE suite. d3a67e1d21bbaa7afc8e3bd089545ad44685e0c7a4212a75f7d115b0b8d656eb luckynight.adx f994367773da8cadc5a41d7eab680a3f24685211d3564d8a806857cab47bdf25 luckynight.pcm Signed-off-by: Marth64 --- tests/fate/audio.mak | 5 + 1 file changed, 5 insertions(+) diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak index 65317c8d45..1c0f48ae0d 100644 --- a/tests/fate/audio.mak +++ b/tests/fate/audio.mak @@ -1,3 +1,8 @@ +FATE_SAMPLES_AUDIO-$(call DEMDEC, ADX, ADPCM_ADX) += fate-adx +fate-adx: CMD = pcm -i $(TARGET_SAMPLES)/adx/luckynight.adx +fate-adx: CMP = oneoff +fate-adx: REF = $(SAMPLES)/adx/luckynight.pcm + FATE_SAMPLES_AUDIO-$(call TRANSCODE, APTX, APTX, WAV_DEMUXER PCM_S16LE_DECODER ARESAMPLE_FILTER) += fate-aptx fate-aptx: CMD = transcode wav $(TARGET_SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav aptx "-af aresample -c aptx" "-af aresample -c:a pcm_s16le -t 0.25" "" "" "-f aptx -sample_rate 44100" -- 2.34.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] libavformat/hls: use avio_flush() to clear playlist buffer
Felt that this could be handled by avio_flush(). Traced the code and it seems logical. Seems to work fine for the only sample I have right now. But curious to others opinion. Signed-off-by: Marth64 --- libavformat/hls.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index a69430a457..8dabe86fb8 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -2495,9 +2495,7 @@ static int hls_read_seek(AVFormatContext *s, int stream_index, av_packet_unref(pls->pkt); pb->eof_reached = 0; /* Clear any buffered data */ -pb->buf_end = pb->buf_ptr = pb->buffer; -/* Reset the pos, to let the mpegts demuxer know we've seeked. */ -pb->pos = 0; +avio_flush(pb); /* Flush the packet queue of the subdemuxer. */ ff_read_frame_flush(pls->ctx); -- 2.34.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] configure: remove Bitrig OS
On 2023-12-31 2:23 a.m., Brad Smith wrote: configure: remove Bitrig OS Bitrig has been defunct for 7 years. Signed-off-by: Brad Smith --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 42786719e9..d96b47ebe5 100755 --- a/configure +++ b/configure @@ -5625,7 +5625,7 @@ case $target_os in oss_outdev_extralibs="-lossaudio" enabled gcc || check_ldflags -Wl,-zmuldefs ;; -openbsd|bitrig) +openbsd) disable symver enable section_data_rel_ro striptype="" ping. ___ 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] configure: remove Bitrig OS
> On Jan 12, 2024, at 08:56, Brad Smith wrote: > > On 2023-12-31 2:23 a.m., Brad Smith wrote: >> configure: remove Bitrig OS >> >> Bitrig has been defunct for 7 years. >> >> Signed-off-by: Brad Smith >> --- >> configure | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/configure b/configure >> index 42786719e9..d96b47ebe5 100755 >> --- a/configure >> +++ b/configure >> @@ -5625,7 +5625,7 @@ case $target_os in >> oss_outdev_extralibs="-lossaudio" >> enabled gcc || check_ldflags -Wl,-zmuldefs >> ;; >> -openbsd|bitrig) >> +openbsd) >> disable symver >> enable section_data_rel_ro >> striptype="" > > ping. Applied, thanks! > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". ___ 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".