Hello, I'm implementing ISO/IEC 23001-17:2024 (MPEGs uncompressed codec) and am looking for an FFmpeg developer to review/approve my contributions.
I started by writing the uncC box: On Tue, Sep 24, 2024 at 2:51 PM Devon Sookhoo <devonsookhoo14 at gmail.com <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>> wrote: >* From 5767e173414432d6079b1b581121622e874a26cd Mon Sep 17 00:00:00 2001 *>* From: dukesook <devonsookhoo14 at gmail.com <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>> *>* Date: Tue, 24 Sep 2024 12:27:31 -0600 *>* Subject: [PATCH] mov_write_uncC_tag() *>>* Initial function for writing the uncC, or uncopmressed codec box *>* --- *>* libavformat/movenc.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ *>* 1 file changed, 52 insertions(+) *>>* diff --git a/libavformat/movenc.c b/libavformat/movenc.c *>* index d20e45cf81..da40442726 100644 *>* --- a/libavformat/movenc.c *>* +++ b/libavformat/movenc.c *>* @@ -2602,6 +2602,58 @@ static int mov_write_aux_tag(AVIOContext *pb, const *>* char *aux_type) *>* return update_size(pb, pos); *>* } *>>* +static int mov_write_uncC_component(AVIOContext *pb, uint16_t index, *>* uint8_t bit_depth_minus_one, uint8_t format, uint8_t align_size) { *>* + avio_wb16(pb, index); *>* + avio_w8(pb, bit_depth_minus_one); *>* + avio_w8(pb, format); *>* + avio_w8(pb, align_size); *>* + return 0; *>* +} *>* + *>* +static int mov_write_uncC_tag(AVFormatContext *s, AVIOContext *pb, *>* MOVMuxContext *mov, MOVTrack *track) { *>* + int64_t pos = avio_tell(pb); *>* + uint8_t version = 0x0; *>* + *>* + avio_wb32(pb, 0); /* size */ *>* + ffio_wfourcc(pb, "uncC"); *>* + *>* + //FULL BOX *>* + avio_w8(pb, 0x00); // Flags *>* + avio_wb24(pb, 0x000000); // Version *>* + *>* + avio_wb32(pb, 0x00000000); // profile *>* + *>* + if (version == 1) { *>* + return update_size(pb, pos); *>* + } *>* + else if (version == 0) { *>* + avio_wb32(pb, 0x03); // component_count *>* + mov_write_uncC_component(pb, 0x0000, 0x07, 0x00, 0x00); //Red *>* + mov_write_uncC_component(pb, 0x0001, 0x07, 0x00, 0x00); //Green *>* + mov_write_uncC_component(pb, 0x0002, 0x07, 0x00, 0x00); //Blue *>* + *>* + avio_w8(pb, 0x00); //sampling_type. 0 = No subsampling *>* + avio_w8(pb, 0x00); //interleave_type. 0 = Planar, 1 = interleaved *>* + avio_w8(pb, 0x00); //block_size; *>* + *>* + // Pixel Layout Flags *>* + // bit(1) components_little_endian; *>* + // bit(1) block_pad_last; *>* + // bit(1) block_little_endian; *>* + // bit(1) block_reversed; *>* + // bit(1) pad_unknown; *>* + // bit(3) reserved = 0; *>* + avio_w8(pb, 0X00); *>* + *>* + avio_wb32(pb, 0x00000000); // pixel_size; *>* + avio_wb32(pb, 0x00000000); // row_align_size; *>* + avio_wb32(pb, 0x00000000); // tile_align_size; *>* + avio_wb32(pb, 0x00000000); // num_tile_cols_minus_one; *>* + avio_wb32(pb, 0x00000000); // num_tile_rows_minus_one; *>* + } *>* + return update_size(pb, pos); *>* +} *>* + *>* static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, *>* MOVMuxContext *mov, MOVTrack *track) *>* { *>* int ret = AVERROR_BUG; *>* -- *>* 2.34.1 *>>>>* *ISO/IEC 23001-17:2024 Section 5.2.2 Syntax* *>* aligned(8) class UncompressedFrameConfigBox extends FullBox('uncC', 0, 0) *>* { *>* unsigned int(32) profile; *>* unsigned int(16) component_count; *>* { *>* unsigned int(16) component_index; *>* unsigned int(8) component_bit_depth_minus_one; *>* unsigned int(8) component_format; *>* unsigned int(8) component_align_size; *>* } [component_count]; *>* unsigned int(8) sampling_type; *>* unsigned int(8) interleave_type; *>* unsigned int(8) block_size; *>* bit(1) components_little_endian; *>* bit(1) block_pad_lsb; *>* bit(1) block_little_endian; *>* bit(1) block_reversed; *>* bit(1) pad_unknown; *>* bit(3) reserved = 0; *>* unsigned int(8) pixel_size; *>* unsigned int(32) row_align_size; *>* unsigned int(32) tile_align_size; *>* unsigned int(32) num_tile_cols_minus_one; *>* unsigned int(32) num_tile_rows_minus_one; *>* }* _______________________________________________ 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".