From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 10/15] avformat/matroskaenc: Avoid allocations when writing Dynamic HDR10+ Date: Tue, 8 Aug 2023 18:40:31 +0200 Message-ID: <AS8P250MB07444FCBA6B39F40BAA467018F0DA@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <AS8P250MB0744E8BE1C2515319ABA75A08F0FA@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> Possible since 61b27b15fc924d7fa35baa61cfbc91568945f5db. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavformat/matroskaenc.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 323379c8bc..12a28a6b5c 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2709,7 +2709,8 @@ static int mkv_write_block(void *logctx, MatroskaMuxContext *mkv, int keyframe, int64_t ts, uint64_t duration, int force_blockgroup, int64_t relative_packet_pos) { - uint8_t *side_data, *buf = NULL; + uint8_t t35_buf[6 + AV_HDR_PLUS_MAX_PAYLOAD_SIZE]; + uint8_t *side_data; size_t side_data_size; uint64_t additional_id; unsigned track_number = track->track_num; @@ -2765,17 +2766,8 @@ static int mkv_write_block(void *logctx, MatroskaMuxContext *mkv, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, &side_data_size); if (side_data && side_data_size) { - uint8_t *payload; - size_t payload_size, buf_size; - ret = av_dynamic_hdr_plus_to_t35((AVDynamicHDRPlus *)side_data, NULL, - &payload_size); - if (ret < 0) - return ret; - - buf_size = payload_size + 6; - buf = payload = av_malloc(buf_size); - if (!buf) - return AVERROR(ENOMEM); + uint8_t *payload = t35_buf; + size_t payload_size = sizeof(t35_buf) - 6; bytestream_put_byte(&payload, 0xB5); // country_code bytestream_put_be16(&payload, 0x3C); // provider_code @@ -2785,9 +2777,9 @@ static int mkv_write_block(void *logctx, MatroskaMuxContext *mkv, ret = av_dynamic_hdr_plus_to_t35((AVDynamicHDRPlus *)side_data, &payload, &payload_size); if (ret < 0) - goto fail; + return ret; - mkv_write_blockadditional(&writer, buf, buf_size, + mkv_write_blockadditional(&writer, t35_buf, payload_size + 6, MATROSKA_BLOCK_ADD_ID_ITU_T_T35); track->max_blockaddid = FFMAX(track->max_blockaddid, MATROSKA_BLOCK_ADD_ID_ITU_T_T35); @@ -2807,11 +2799,7 @@ static int mkv_write_block(void *logctx, MatroskaMuxContext *mkv, ebml_writer_add_sint(&writer, MATROSKA_ID_BLOCKREFERENCE, track->last_timestamp - ts); - ret = ebml_writer_write(&writer, pb); -fail: - av_free(buf); - - return ret; + return ebml_writer_write(&writer, pb); } static int mkv_end_cluster(AVFormatContext *s) -- 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-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-08-08 16:40 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-08-06 23:04 [FFmpeg-devel] [PATCH 1/5] avformat/matroskaenc: Support rotations Andreas Rheinhardt 2023-08-06 23:06 ` [FFmpeg-devel] [PATCH 2/5] avformat/matroskaenc: Don't reserve unnecessarily many EBML elements Andreas Rheinhardt 2023-08-06 23:06 ` [FFmpeg-devel] [PATCH 3/5] fate/matroska: Add ALAC remux test Andreas Rheinhardt 2023-08-06 23:06 ` [FFmpeg-devel] [PATCH 4/5] avformat/matroskaenc: Don't pretend to support unsupported codecs Andreas Rheinhardt 2023-08-06 23:06 ` [FFmpeg-devel] [PATCH 5/5] avformat/matroskaenc: Don't pretend to be able to mux RV30 Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 06/15] avformat/matroskaenc: Hoist check out of loop Andreas Rheinhardt 2023-08-10 7:48 ` Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 07/15] avformat/matroskaenc: Remove unnecessary check Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 08/15] avformat/matroskaenc: Use proper AVIOContext Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 09/15] avformat/matroskaenc: Use dedicated pointer for accesses Andreas Rheinhardt 2023-08-08 16:40 ` Andreas Rheinhardt [this message] 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 11/15] avformat/dovi_isom: Don't use AVFormatContext* for logctx Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 12/15] avformat/matroskaenc: Add const where appropriate Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 13/15] avformat/matroskaenc: Don't reserve space for HDR10+ when unnecessary Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 14/15] avformat/matroskaenc: Reindent after the previous commit Andreas Rheinhardt 2023-08-08 16:40 ` [FFmpeg-devel] [PATCH 15/15] avformat/matroskaenc: Don't write \0 unnecessarily Andreas Rheinhardt 2023-08-09 9:26 ` [FFmpeg-devel] [PATCH 1/5] avformat/matroskaenc: Support rotations Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8P250MB07444FCBA6B39F40BAA467018F0DA@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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