From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 855374E1EF for ; Wed, 14 Jan 2026 15:21:19 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'YJVlSP9Dn+XaBMyv8ZknqAsSDfkMoqjwptDSA2OxRhY=', expected b'U62+LxoSdm1CXKC5Ihl068IDn5GRFnTmpoXpY+jmRY4=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768404063; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=YJVlSP9Dn+XaBMyv8ZknqAsSDfkMoqjwptDSA2OxRhY=; b=2CCyui7M4/QH4cHYOh4GW42RWd03RjHRN5OusGx9BuIvAmKtJGOGf8xMTfQncaKIazxuU VyegYk0dXbef4WPSTEQdIGjreL6QPK97ve7s+0TRO3A0O+ukw3O7lQnQBHk8O+4fwtQo/5V dzVrEsDh0Pzlk6R/hrSDsK4ZXExVTk3VWm+crFDTIpO7g9uiCA3yPEpaUZgZi9PMSLz2M4Y +2wZdFnMUFOqUIAqKGLzWfPG8dtxwYDuS9IQYdETYV58FY9k9R4XyyLqclWthhwWLlsPTAQ 203ENXZKgrg0leeH/oWRoAjkDfe9QKFSDcAg1kR9qJnFqebQAsubSIZyVIew== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 95E5C690E19; Wed, 14 Jan 2026 17:21:03 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1768404047; b=DUeeIrWIpUjt+RZiqG9RcxdXIXZlojbKXH4GkeTjb+r7aFPsaxC8bgMCiIRqhhghMnY0q I3dSu704uxS5HNCcofMS/6nQjPu0IZfV50cAko+9l8sn8DFzpx79382U3d5NLIqx2p16l9r 7xB0BW7ndu3KAWOF20E7/TZuTnUE91N8hk3wuf2bzQOtv8Z7ScPJJWaAMT4bWKQtxTgHrut uSCct17zqj53+sAIN2DAo87bKhttsDHo1ydPTxrf/t8dwyrAy4UffW2PaSwl3VDuAMDHFO8 NpCZNeFt0bFVjC6rK9p6pHTCgDtip6xpf/BfDuNNr+d/1QtxT5nIRHR12ECw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1768404047; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=zR7OIZXqokoUNY/evcN+VJxfNN4AjVy1L459/R78qS0=; b=rJEIAQ+voZbBtsARLji48oDgcR/70qm2VXtQx8YJBlsirI3AM8YRj//d5ZgSpXm9a7Ede 6VrYY/t+TwQyv3qpm7w0RwXPfpREt4z1nzz9fe7LwwojpktLCAUqiOB4aVs047FhqSXjKWG gtXKEDeO9WH4kDUho3sEcCxojpulodCnROialIInlf1ziWhBKPe6vPFqx1n62LjD03Oknvz 3mB4QcvLb6KZqNBmO1ZQ12ja7qcEk6aLHeX3shEFXA3yjEtTrm9uW3QQRhyZsPDXC2opKpg 7B8N8euRgnXOaDLr97FLWkKk5IXhPrILgmtqkxJmtbo5BHI0VW7ZIOre0oiA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768404039; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=U62+LxoSdm1CXKC5Ihl068IDn5GRFnTmpoXpY+jmRY4=; b=kyLB0lRlErY3bJ+fdRrAS2org4EMPO/+ewFwVlKJOtFd5hSkPgRfBscSc1nYmQIhlcSc0 a/3SHuzemUj7086hWy+S3V07FPBT4ck3sAYvDv8/7Il82y8XuZrjp0vdOzNvHy/Pyq/crkF pIAKRg+oeDg5cNUm8K1r1VclVqipSIVV6iBHqJjRdM6K4gQ7M9Yh312g0FUIFMxchwlknZk 5/GEjo4lfcA6DNfEjRuySdcdusubaIfFN0MuG7MoBAcWNEIZ+nkSe6QSNySFPBnQYRi9n9g Qx4I+C7kXo2Tk0T2IcC4pA8a4YNaLibeYwbFAix3jRMWPcRIrN+aq/QMHc0A== Received: from f7c34508609e (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 58518690D2D for ; Wed, 14 Jan 2026 17:20:39 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Jan 2026 15:20:38 -0000 Message-ID: <176840403950.25.7456290735479724311@4457048688e7> Message-ID-Hash: ANTNAQBZK4QU5QKBO23OFDRG7ZCECUHV X-Message-ID-Hash: ANTNAQBZK4QU5QKBO23OFDRG7ZCECUHV X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] fix_av1 (PR #21468) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Jun Zhao via ffmpeg-devel Cc: Jun Zhao Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21468 opened by Jun Zhao (mypopydev) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21468 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21468.patch Two commits: the first fixes missing padding for AV1 extradata in movenc by replacing av_memdup() with av_mallocz() + memcpy(), and the second extracts SAR from render_size in the AV1 parser for proper aspect ratio handling. >>From 3147e75bac677d5e269e708f9e9960989bdfdeae Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Fri, 2 Jan 2026 10:35:22 +0800 Subject: [PATCH 1/2] lavc/av1_parser: Extract SAR from render_size Extract the Sample Aspect Ratio (SAR) from render_width_minus_1 and render_height_minus_1 in the sequence header. The AV1 specification defines the render dimensions, which can be used in conjunction with the coded dimensions to determine the pixel aspect ratio. This ensures consistent aspect ratio handling for AV1 streams encapsulated in containers like MP4 or MKV, as observed in the updated FATE tests where SAR changes from 0/1 to 1/1. Signed-off-by: Jun Zhao --- libavcodec/av1_parser.c | 7 +++++++ tests/ref/fate/av1-annexb-demux | 2 +- tests/ref/fate/enhanced-flv-av1 | 2 +- tests/ref/fate/enhanced-flv-multitrack | 2 +- tests/ref/lavf-fate/av1.mkv | 4 ++-- tests/ref/lavf-fate/av1.mp4 | 4 ++-- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index 32135a23cb..f221fee79f 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -134,6 +134,13 @@ static int av1_parser_parse(AVCodecParserContext *ctx, break; } ctx->picture_structure = AV_PICTURE_STRUCTURE_FRAME; + + /* Extract SAR from render_height_minus_1 & render_width_minus_1 */ + av_reduce(&avctx->sample_aspect_ratio.num, + &avctx->sample_aspect_ratio.den, + (int64_t)ctx->height * (frame->render_width_minus_1 + 1), + (int64_t)ctx->width * (frame->render_height_minus_1 + 1), + INT_MAX); } switch (av1->bit_depth) { diff --git a/tests/ref/fate/av1-annexb-demux b/tests/ref/fate/av1-annexb-demux index 139a893ec1..77e0e378ab 100644 --- a/tests/ref/fate/av1-annexb-demux +++ b/tests/ref/fate/av1-annexb-demux @@ -3,7 +3,7 @@ #media_type 0: video #codec_id 0: av1 #dimensions 0: 300x300 -#sar 0: 0/1 +#sar 0: 1/1 0, 0, 0, 48000, 12691, 0xf0adcc79 0, 48000, 48000, 48000, 4975, 0x1742a45f, F=0x0 0, 96000, 96000, 48000, 928, 0x7408be1a, F=0x0 diff --git a/tests/ref/fate/enhanced-flv-av1 b/tests/ref/fate/enhanced-flv-av1 index c50da5d430..b2a624e41e 100644 --- a/tests/ref/fate/enhanced-flv-av1 +++ b/tests/ref/fate/enhanced-flv-av1 @@ -3,7 +3,7 @@ #media_type 0: video #codec_id 0: av1 #dimensions 0: 320x176 -#sar 0: 0/1 +#sar 0: 1/1 0, 0, 0, 41, 4718, 0xc4d912ec 0, 42, 42, 41, 5109, 0xc065dd7d, F=0x0 0, 83, 83, 41, 192, 0x160c5335, F=0x0 diff --git a/tests/ref/fate/enhanced-flv-multitrack b/tests/ref/fate/enhanced-flv-multitrack index e3c5836bfa..f017e445ea 100644 --- a/tests/ref/fate/enhanced-flv-multitrack +++ b/tests/ref/fate/enhanced-flv-multitrack @@ -31,7 +31,7 @@ #media_type 4: video #codec_id 4: av1 #dimensions 4: 1920x1080 -#sar 4: 0/1 +#sar 4: 1/1 #tb 5: 1/1000 #media_type 5: audio #codec_id 5: flac diff --git a/tests/ref/lavf-fate/av1.mkv b/tests/ref/lavf-fate/av1.mkv index e6db3a814a..84924fe05c 100644 --- a/tests/ref/lavf-fate/av1.mkv +++ b/tests/ref/lavf-fate/av1.mkv @@ -1,3 +1,3 @@ -d875b42964dd55c8cea2e2752379d327 *tests/data/lavf-fate/lavf.av1.mkv -55660 tests/data/lavf-fate/lavf.av1.mkv +ba198efa114b4db3c9f772728f84978b *tests/data/lavf-fate/lavf.av1.mkv +55656 tests/data/lavf-fate/lavf.av1.mkv tests/data/lavf-fate/lavf.av1.mkv CRC=0x7c27cc15 diff --git a/tests/ref/lavf-fate/av1.mp4 b/tests/ref/lavf-fate/av1.mp4 index 53b0cbe637..ef174589ba 100644 --- a/tests/ref/lavf-fate/av1.mp4 +++ b/tests/ref/lavf-fate/av1.mp4 @@ -1,3 +1,3 @@ -194cd796f3d28a890b516b2507f57180 *tests/data/lavf-fate/lavf.av1.mp4 -55960 tests/data/lavf-fate/lavf.av1.mp4 +d6afef355cf1bcf1a71b9cfb98c32fba *tests/data/lavf-fate/lavf.av1.mp4 +55976 tests/data/lavf-fate/lavf.av1.mp4 tests/data/lavf-fate/lavf.av1.mp4 CRC=0x7c27cc15 -- 2.49.1 >>From 137b0370f371c76651395cdf505bf2a616aae7bb Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Mon, 5 Jan 2026 21:47:22 +0800 Subject: [PATCH 2/2] lavf/movenc: fix missing padding for AV1 extradata The extradata allocated in mov_write_single_packet() for AV1 was missing the required AV_INPUT_BUFFER_PADDING_SIZE padding bytes. This could lead to out-of-bounds reads when the extradata is parsed by bitstream readers. Replace av_memdup() with av_mallocz() + memcpy() to ensure proper padding is present and zeroed. Reproduced with: ./ffmpeg -y -f lavfi -i "testsrc=duration=1:size=320x240:rate=30" -c:v libaom-av1 -cpu-used 8 -crf 50 test-av1.mp4 Signed-off-by: Jun Zhao --- libavformat/movenc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index e844be483c..649b9501d3 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -7205,9 +7205,11 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt) uint8_t *side = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); /* Overwrite extradata only on flush packets or when no extradata was available during init */ if (side_size > 0 && (!pkt->size || !trk->extradata_size[trk->last_stsd_index])) { - void *newextra = av_memdup(side, side_size); + void *newextra; + newextra = av_mallocz(side_size + AV_INPUT_BUFFER_PADDING_SIZE); if (!newextra) return AVERROR(ENOMEM); + memcpy(newextra, side, side_size); av_free(trk->extradata[trk->last_stsd_index]); trk->extradata[trk->last_stsd_index] = newextra; trk->extradata_size[trk->last_stsd_index] = side_size; -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org