Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/3 v3] avformat/vvc: fix writing general_constraint_info bytes
@ 2024-05-17 13:42 James Almer
  2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 2/3] avformat/vvc: include additional bits in general_constraint_info James Almer
  2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 3/3] configure: split ISOBMFF writer helpers into a separate component James Almer
  0 siblings, 2 replies; 3+ messages in thread
From: James Almer @ 2024-05-17 13:42 UTC (permalink / raw)
  To: ffmpeg-devel

The existing implementation was completely broken.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/Makefile    |  2 +-
 libavformat/bitstream.c |  1 +
 libavformat/vvc.c       | 38 ++++++++++++++++++++------------------
 tests/ref/fate/source   |  1 +
 4 files changed, 23 insertions(+), 19 deletions(-)
 create mode 100644 libavformat/bitstream.c

diff --git a/libavformat/Makefile b/libavformat/Makefile
index 2d4e0e0c95..211ccf45e5 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -727,7 +727,7 @@ OBJS-$(CONFIG_LIBSSH_PROTOCOL)           += libssh.o
 OBJS-$(CONFIG_LIBZMQ_PROTOCOL)           += libzmq.o
 
 # Objects duplicated from other libraries for shared builds
-SHLIBOBJS                                += log2_tab.o to_upper4.o
+SHLIBOBJS                                += log2_tab.o to_upper4.o bitstream.o
 SHLIBOBJS-$(CONFIG_ISO_MEDIA)            += mpegaudiotabs.o
 SHLIBOBJS-$(CONFIG_FLV_MUXER)            += mpeg4audio_sample_rates.o
 SHLIBOBJS-$(CONFIG_HLS_DEMUXER)          += ac3_channel_layout_tab.o
diff --git a/libavformat/bitstream.c b/libavformat/bitstream.c
new file mode 100644
index 0000000000..2afda37c30
--- /dev/null
+++ b/libavformat/bitstream.c
@@ -0,0 +1 @@
+#include "libavcodec/bitstream.c"
diff --git a/libavformat/vvc.c b/libavformat/vvc.c
index 3123cd8d83..98177a7ad8 100644
--- a/libavformat/vvc.c
+++ b/libavformat/vvc.c
@@ -21,6 +21,7 @@
  */
 
 #include "libavcodec/get_bits.h"
+#include "libavcodec/put_bits.h"
 #include "libavcodec/golomb.h"
 #include "libavcodec/vvc.h"
 #include "libavutil/intreadwrite.h"
@@ -138,9 +139,8 @@ static void vvcc_update_ptl(VVCDecoderConfigurationRecord *vvcc,
         vvcc->ptl.num_bytes_constraint_info = 9;
         memcpy(&vvcc->ptl.general_constraint_info[0],
                &ptl->gci_general_constraints[0], sizeof(uint8_t) * 9);
-
     } else {
-        vvcc->ptl.num_bytes_constraint_info = 1;
+        vvcc->ptl.num_bytes_constraint_info = 0;
         memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(uint8_t) * 9);
     }
 
@@ -185,7 +185,7 @@ static void vvcc_parse_ptl(GetBitContext *gb,
                            unsigned int profileTierPresentFlag,
                            unsigned int max_sub_layers_minus1)
 {
-    VVCCProfileTierLevel general_ptl;
+    VVCCProfileTierLevel general_ptl = { 0 };
     int j;
 
     if (profileTierPresentFlag) {
@@ -326,6 +326,7 @@ static int vvcc_parse_vps(GetBitContext *gb,
 
     for (int i = 0; i <= vps_num_ptls_minus1; i++)
         vvcc_parse_ptl(gb, vvcc, vps_pt_present_flag[i], vps_ptl_max_tid[i]);
+    vvcc->ptl_present_flag = 1;
 
     /* nothing useful for vvcc past this point */
     return 0;
@@ -356,8 +357,10 @@ static int vvcc_parse_sps(GetBitContext *gb,
     vvcc->chroma_format_idc = get_bits(gb, 2);
     sps_log2_ctu_size_minus5 = get_bits(gb, 2);
 
-    if (get_bits1(gb))          // sps_ptl_dpb_hrd_params_present_flag
+    if (get_bits1(gb)) {        // sps_ptl_dpb_hrd_params_present_flag
+        vvcc->ptl_present_flag = 1;
         vvcc_parse_ptl(gb, vvcc, 1, sps_max_sublayers_minus1);
+    }
 
     skip_bits1(gb);             // sps_gdr_enabled_flag
     if (get_bits(gb, 1))        // sps_ref_pic_resampling_enabled_flag
@@ -579,10 +582,6 @@ static void vvcc_init(VVCDecoderConfigurationRecord *vvcc)
 {
     memset(vvcc, 0, sizeof(VVCDecoderConfigurationRecord));
     vvcc->lengthSizeMinusOne = 3;       // 4 bytes
-
-    vvcc->ptl.num_bytes_constraint_info = 1;
-
-    vvcc->ptl_present_flag = 1;
 }
 
 static void vvcc_close(VVCDecoderConfigurationRecord *vvcc)
@@ -603,7 +602,6 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc)
 {
     uint8_t i;
     uint16_t j, vps_count = 0, sps_count = 0, pps_count = 0;
-    unsigned char *buf = NULL;
     /*
      * It's unclear how to properly compute these fields, so
      * let's always set them to values meaning 'unspecified'.
@@ -735,6 +733,10 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc)
     avio_w8(pb, vvcc->lengthSizeMinusOne << 1 | vvcc->ptl_present_flag | 0xf8);
 
     if (vvcc->ptl_present_flag) {
+        uint8_t buf[64];
+        PutBitContext pbc;
+
+        init_put_bits(&pbc, buf, sizeof(buf));
         /*
          * unsigned int(9) ols_idx;
          * unsigned int(3) num_sublayers;
@@ -766,15 +768,15 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc)
          * unsigned int (1) ptl_frame_only_constraint_flag
          * unsigned int (1) ptl_multilayer_enabled_flag
          * unsigned int (8*num_bytes_constraint_info -2) general_constraint_info */
-        buf =
-            (unsigned char *) malloc(sizeof(unsigned char) *
-                                     vvcc->ptl.num_bytes_constraint_info);
-        *buf = vvcc->ptl.ptl_frame_only_constraint_flag << vvcc->ptl.
-            num_bytes_constraint_info * 8 - 1 | vvcc->ptl.
-            ptl_multilayer_enabled_flag << vvcc->ptl.num_bytes_constraint_info *
-            8 - 2 | *vvcc->ptl.general_constraint_info >> 2;
-        avio_write(pb, buf, vvcc->ptl.num_bytes_constraint_info);
-        free(buf);
+        put_bits(&pbc, 1, vvcc->ptl.ptl_frame_only_constraint_flag);
+        put_bits(&pbc, 1, vvcc->ptl.ptl_multilayer_enabled_flag);
+        if (vvcc->ptl.num_bytes_constraint_info) {
+            ff_copy_bits(&pbc, vvcc->ptl.general_constraint_info, (vvcc->ptl.num_bytes_constraint_info - 1) * 8);
+            put_bits(&pbc, 6, vvcc->ptl.general_constraint_info[vvcc->ptl.num_bytes_constraint_info - 1] & 0x3f);
+        } else
+            put_bits(&pbc, 6, 0);
+        flush_put_bits(&pbc);
+        avio_write(pb, buf, put_bytes_count(&pbc, 1));
 
         if (vvcc->num_sublayers > 1) {
             uint8_t ptl_sublayer_level_present_flags = 0;
diff --git a/tests/ref/fate/source b/tests/ref/fate/source
index 7b5f14b4f0..d8d4224145 100644
--- a/tests/ref/fate/source
+++ b/tests/ref/fate/source
@@ -10,6 +10,7 @@ libavdevice/reverse.c
 libavfilter/af_arnndn.c
 libavfilter/file_open.c
 libavfilter/log2_tab.c
+libavformat/bitstream.c
 libavformat/file_open.c
 libavformat/golomb_tab.c
 libavformat/log2_tab.c
-- 
2.45.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [FFmpeg-devel] [PATCH 2/3] avformat/vvc: include additional bits in general_constraint_info
  2024-05-17 13:42 [FFmpeg-devel] [PATCH 1/3 v3] avformat/vvc: fix writing general_constraint_info bytes James Almer
@ 2024-05-17 13:42 ` James Almer
  2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 3/3] configure: split ISOBMFF writer helpers into a separate component James Almer
  1 sibling, 0 replies; 3+ messages in thread
From: James Almer @ 2024-05-17 13:42 UTC (permalink / raw)
  To: ffmpeg-devel

Based on code from cbs_h266.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/vvc.c | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/libavformat/vvc.c b/libavformat/vvc.c
index 98177a7ad8..e8301d4247 100644
--- a/libavformat/vvc.c
+++ b/libavformat/vvc.c
@@ -46,7 +46,7 @@ typedef struct VVCPTLRecord {
     uint8_t general_level_idc;
     uint8_t ptl_frame_only_constraint_flag;
     uint8_t ptl_multilayer_enabled_flag;
-    uint8_t general_constraint_info[9];
+    uint8_t general_constraint_info[10];
     uint8_t ptl_sublayer_level_present_flag[VVC_MAX_SUBLAYERS - 1];
     uint8_t sublayer_level_idc[VVC_MAX_SUBLAYERS - 1];
     uint8_t ptl_num_sub_profiles;
@@ -77,8 +77,8 @@ typedef struct VVCCProfileTierLevel {
     uint8_t ptl_multilayer_enabled_flag;
 // general_constraint_info
     uint8_t gci_present_flag;
-    uint8_t gci_general_constraints[9];
-    uint8_t gci_num_reserved_bits;
+    uint8_t gci_general_constraints[10];
+    uint8_t num_bytes_constraint_info;
 // end general_constraint_info
     uint8_t ptl_sublayer_level_present_flag[VVC_MAX_SUBLAYERS - 1];
     uint8_t sublayer_level_idc[VVC_MAX_SUBLAYERS - 1];
@@ -135,13 +135,12 @@ static void vvcc_update_ptl(VVCDecoderConfigurationRecord *vvcc,
     /*
      * Constraints Info
      */
+    vvcc->ptl.num_bytes_constraint_info = ptl->num_bytes_constraint_info;
     if (ptl->gci_present_flag) {
-        vvcc->ptl.num_bytes_constraint_info = 9;
         memcpy(&vvcc->ptl.general_constraint_info[0],
-               &ptl->gci_general_constraints[0], sizeof(uint8_t) * 9);
+               &ptl->gci_general_constraints[0], ptl->num_bytes_constraint_info);
     } else {
-        vvcc->ptl.num_bytes_constraint_info = 0;
-        memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(uint8_t) * 9);
+        memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(vvcc->ptl.general_constraint_info));
     }
 
     /*
@@ -186,7 +185,6 @@ static void vvcc_parse_ptl(GetBitContext *gb,
                            unsigned int max_sub_layers_minus1)
 {
     VVCCProfileTierLevel general_ptl = { 0 };
-    int j;
 
     if (profileTierPresentFlag) {
         general_ptl.profile_idc = get_bits(gb, 7);
@@ -199,12 +197,20 @@ static void vvcc_parse_ptl(GetBitContext *gb,
     if (profileTierPresentFlag) {       // parse constraint info
         general_ptl.gci_present_flag = get_bits1(gb);
         if (general_ptl.gci_present_flag) {
+            int gci_num_reserved_bits, j;
             for (j = 0; j < 8; j++)
                 general_ptl.gci_general_constraints[j] = get_bits(gb, 8);
-            general_ptl.gci_general_constraints[8] = get_bits(gb, 7);
-
-            general_ptl.gci_num_reserved_bits = get_bits(gb, 8);
-            skip_bits(gb, general_ptl.gci_num_reserved_bits);
+            general_ptl.gci_general_constraints[j++] = get_bits(gb, 7);
+
+            gci_num_reserved_bits = get_bits(gb, 8);
+            if (gci_num_reserved_bits > 5) {
+                general_ptl.gci_general_constraints[8] =
+                    (general_ptl.gci_general_constraints[8] << 1) | get_bits1(gb);
+                general_ptl.gci_general_constraints[j++] = get_bits(gb, 5);
+                gci_num_reserved_bits -= 6;
+            }
+            general_ptl.num_bytes_constraint_info = j;
+            skip_bits(gb, gci_num_reserved_bits);
         }
         while (gb->index % 8 != 0)
             skip_bits1(gb);
-- 
2.45.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [FFmpeg-devel] [PATCH 3/3] configure: split ISOBMFF writer helpers into a separate component
  2024-05-17 13:42 [FFmpeg-devel] [PATCH 1/3 v3] avformat/vvc: fix writing general_constraint_info bytes James Almer
  2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 2/3] avformat/vvc: include additional bits in general_constraint_info James Almer
@ 2024-05-17 13:42 ` James Almer
  1 sibling, 0 replies; 3+ messages in thread
From: James Almer @ 2024-05-17 13:42 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 configure            | 10 ++++++----
 libavformat/Makefile | 16 ++++++++--------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/configure b/configure
index 275fa59bfd..b16722d83d 100755
--- a/configure
+++ b/configure
@@ -2587,6 +2587,7 @@ CONFIG_EXTRA="
     inflate_wrapper
     intrax8
     iso_media
+    iso_writer
     ividsp
     jpegtables
     lgplv3
@@ -3611,7 +3612,7 @@ evc_demuxer_select="evc_frame_merge_bsf evc_parser"
 f4v_muxer_select="mov_muxer"
 fifo_muxer_deps="threads"
 flac_demuxer_select="flac_parser"
-flv_muxer_select="aac_adtstoasc_bsf"
+flv_muxer_select="aac_adtstoasc_bsf iso_writer"
 gxf_muxer_select="pcm_rechunk_bsf"
 hds_muxer_select="flv_muxer"
 hls_demuxer_select="aac_demuxer ac3_demuxer adts_header ac3_parser eac3_demuxer mov_demuxer mpegts_demuxer"
@@ -3629,12 +3630,12 @@ latm_muxer_select="aac_adtstoasc_bsf mpeg4audio"
 matroska_audio_muxer_select="matroska_muxer"
 matroska_demuxer_select="riffdec"
 matroska_demuxer_suggest="bzlib zlib"
-matroska_muxer_select="mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf"
+matroska_muxer_select="iso_writer mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf"
 mlp_demuxer_select="mlp_parser"
 mmf_muxer_select="riffenc"
 mov_demuxer_select="iso_media riffdec"
 mov_demuxer_suggest="iamfdec zlib"
-mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser"
+mov_muxer_select="iso_media iso_writer riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser"
 mov_muxer_suggest="iamfenc"
 mp3_demuxer_select="mpegaudio_parser"
 mp3_muxer_select="mpegaudioheader"
@@ -3642,7 +3643,7 @@ mp4_muxer_select="mov_muxer"
 mpegts_demuxer_select="iso_media"
 mpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf vvc_mp4toannexb_bsf"
 mpegtsraw_demuxer_select="mpegts_demuxer"
-mxf_muxer_select="pcm_rechunk_bsf rangecoder"
+mxf_muxer_select="iso_writer pcm_rechunk_bsf rangecoder"
 mxf_d10_muxer_select="mxf_muxer"
 mxf_opatom_muxer_select="mxf_muxer"
 nut_muxer_select="riffenc"
@@ -3655,6 +3656,7 @@ ogv_muxer_select="ogg_muxer"
 opus_muxer_select="ogg_muxer"
 psp_muxer_select="mov_muxer"
 rtp_demuxer_select="sdp_demuxer"
+rtp_muxer_select="iso_writer"
 rtp_mpegts_muxer_select="mpegts_muxer rtp_muxer"
 rtpdec_select="asf_demuxer mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
 rtsp_demuxer_select="http_protocol rtpdec"
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 211ccf45e5..1c4d9deccd 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -35,6 +35,7 @@ OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
 
 # subsystems
 OBJS-$(CONFIG_ISO_MEDIA)                 += isom.o
+OBJS-$(CONFIG_ISO_WRITER)                += av1.o avc.o hevc.o vvc.o vpcc.o
 OBJS-$(CONFIG_IAMFDEC)                   += iamf_reader.o iamf_parse.o iamf.o
 OBJS-$(CONFIG_IAMFENC)                   += iamf_writer.o iamf.o
 OBJS-$(CONFIG_NETWORK)                   += network.o
@@ -220,7 +221,7 @@ OBJS-$(CONFIG_FLAC_MUXER)                += flacenc.o flacenc_header.o \
 OBJS-$(CONFIG_FLIC_DEMUXER)              += flic.o
 OBJS-$(CONFIG_FLV_DEMUXER)               += flvdec.o
 OBJS-$(CONFIG_LIVE_FLV_DEMUXER)          += flvdec.o
-OBJS-$(CONFIG_FLV_MUXER)                 += flvenc.o avc.o hevc.o av1.o vpcc.o
+OBJS-$(CONFIG_FLV_MUXER)                 += flvenc.o
 OBJS-$(CONFIG_FOURXM_DEMUXER)            += 4xm.o
 OBJS-$(CONFIG_FRAMECRC_MUXER)            += framecrcenc.o framehash.o
 OBJS-$(CONFIG_FRAMEHASH_MUXER)           += hashenc.o framehash.o
@@ -260,7 +261,7 @@ OBJS-$(CONFIG_HEVC_MUXER)                += rawenc.o
 OBJS-$(CONFIG_EVC_DEMUXER)               += evcdec.o rawdec.o
 OBJS-$(CONFIG_EVC_MUXER)                 += rawenc.o
 OBJS-$(CONFIG_HLS_DEMUXER)               += hls.o hls_sample_encryption.o
-OBJS-$(CONFIG_HLS_MUXER)                 += hlsenc.o hlsplaylist.o avc.o
+OBJS-$(CONFIG_HLS_MUXER)                 += hlsenc.o hlsplaylist.o
 OBJS-$(CONFIG_HNM_DEMUXER)               += hnm.o
 OBJS-$(CONFIG_IAMF_DEMUXER)              += iamfdec.o
 OBJS-$(CONFIG_IAMF_MUXER)                += iamfenc.o
@@ -349,7 +350,6 @@ OBJS-$(CONFIG_MATROSKA_DEMUXER)          += matroskadec.o matroska.o  \
                                             oggparsevorbis.o vorbiscomment.o \
                                             qtpalette.o replaygain.o dovi_isom.o
 OBJS-$(CONFIG_MATROSKA_MUXER)            += matroskaenc.o matroska.o \
-                                            av1.o avc.o hevc.o vvc.o\
                                             flacenc_header.o avlanguage.o \
                                             vorbiscomment.o wv.o dovi_isom.o
 OBJS-$(CONFIG_MCA_DEMUXER)               += mca.o
@@ -371,7 +371,7 @@ OBJS-$(CONFIG_MODS_DEMUXER)              += mods.o
 OBJS-$(CONFIG_MOFLEX_DEMUXER)            += moflex.o
 OBJS-$(CONFIG_MOV_DEMUXER)               += mov.o mov_chan.o mov_esds.o \
                                             qtpalette.o replaygain.o dovi_isom.o
-OBJS-$(CONFIG_MOV_MUXER)                 += movenc.o av1.o avc.o hevc.o vvc.o vpcc.o \
+OBJS-$(CONFIG_MOV_MUXER)                 += movenc.o \
                                             movenchint.o mov_chan.o rtp.o \
                                             movenccenc.o movenc_ttml.o rawutils.o \
                                             dovi_isom.o evc.o
@@ -404,7 +404,7 @@ OBJS-$(CONFIG_MUSX_DEMUXER)              += musx.o
 OBJS-$(CONFIG_MV_DEMUXER)                += mvdec.o
 OBJS-$(CONFIG_MVI_DEMUXER)               += mvi.o
 OBJS-$(CONFIG_MXF_DEMUXER)               += mxfdec.o mxf.o avlanguage.o
-OBJS-$(CONFIG_MXF_MUXER)                 += mxfenc.o mxf.o avc.o
+OBJS-$(CONFIG_MXF_MUXER)                 += mxfenc.o mxf.o
 OBJS-$(CONFIG_MXG_DEMUXER)               += mxg.o
 OBJS-$(CONFIG_NC_DEMUXER)                += ncdec.o
 OBJS-$(CONFIG_NISTSPHERE_DEMUXER)        += nistspheredec.o pcm.o
@@ -526,8 +526,7 @@ OBJS-$(CONFIG_RTP_MUXER)                 += rtp.o         \
                                             rtpenc_vc2hq.o              \
                                             rtpenc_vp8.o  \
                                             rtpenc_vp9.o                \
-                                            rtpenc_xiph.o \
-                                            avc.o hevc.o vvc.o
+                                            rtpenc_xiph.o
 OBJS-$(CONFIG_RTSP_DEMUXER)              += rtsp.o rtspdec.o httpauth.o \
                                             urldecode.o
 OBJS-$(CONFIG_RTSP_MUXER)                += rtsp.o rtspenc.o httpauth.o \
@@ -727,8 +726,9 @@ OBJS-$(CONFIG_LIBSSH_PROTOCOL)           += libssh.o
 OBJS-$(CONFIG_LIBZMQ_PROTOCOL)           += libzmq.o
 
 # Objects duplicated from other libraries for shared builds
-SHLIBOBJS                                += log2_tab.o to_upper4.o bitstream.o
+SHLIBOBJS                                += log2_tab.o to_upper4.o
 SHLIBOBJS-$(CONFIG_ISO_MEDIA)            += mpegaudiotabs.o
+SHLIBOBJS-$(CONFIG_ISO_WRITER)           += bitstream.o
 SHLIBOBJS-$(CONFIG_FLV_MUXER)            += mpeg4audio_sample_rates.o
 SHLIBOBJS-$(CONFIG_HLS_DEMUXER)          += ac3_channel_layout_tab.o
 SHLIBOBJS-$(CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER)    += jpegxl_parse.o
-- 
2.45.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-05-17 13:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-17 13:42 [FFmpeg-devel] [PATCH 1/3 v3] avformat/vvc: fix writing general_constraint_info bytes James Almer
2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 2/3] avformat/vvc: include additional bits in general_constraint_info James Almer
2024-05-17 13:42 ` [FFmpeg-devel] [PATCH 3/3] configure: split ISOBMFF writer helpers into a separate component James Almer

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git