From patchwork Sat Apr 20 23:43:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48197 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c906:b0:1a9:af23:56c1 with SMTP id gx6csp1467907pzb; Sat, 20 Apr 2024 16:43:33 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWO/oeICviZu/iSjpZkxmCKQd+PYQCKdt2bObeBIPCfhnrxRAe6ZfCNoclBwMcY/AF+2yqL5B098MAgcP0ekKEoN5I3zRx8G8oEJw== X-Google-Smtp-Source: AGHT+IEpBdp57AFGgkz+A1Koyqlcc+3KShPcC7LITdj6RiVpt8I+nCT7+jc000Lw8WDSCBeSNFVm X-Received: by 2002:a50:d60f:0:b0:56e:87b3:a333 with SMTP id x15-20020a50d60f000000b0056e87b3a333mr3695823edi.3.1713656613463; Sat, 20 Apr 2024 16:43:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1713656613; cv=none; d=google.com; s=arc-20160816; b=clRasqDtFtxwRM/xJ6OJtZxLNDy074ROV/z3pougCL67beELA921IMn/1Bd4VD9Hh2 tW4zTxNk5Gcp3yJVBZ1H1ZdBGYVywX3fmJ+oFT4P6yxsvXc+V9UiW2/KXffIYZtu7NO/ ShyV2nBlL/mOPpMhI3268o/rqHubSTzIa6f6y4qX71WNzdL6gKz9EVtED97juv8P5Hei QEAXLCPcPbu+xFxhgZRFwx+y0jE/utOm3vXykpv7iqAQtEN/ZmXusiodoWUOXcMpD78h ut43qGDKk6A46ut67SzCAhscSK6R8LH2EQi46g4ERupHqTwKa2zoKSxBGR+6G8eI0Vbm LApA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=xyirZdsaGS7L1Kt0PU9J6okILv99WLAlLiA3YYzpVgo=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=QyVbAxz9J+5Enan52tYLBdM5yLdoX+KEY1nW2E1w+RhHhRAx6C2aHasKuQIiYNLsvO qc9E0207eV3mtiHCpLQmNyXsZwjP+MO4+WZaOLZti0MO/qXgpsLiWEm9qxUH27M4Q5Xe 0k+Z/mfH+nE9fh93j/MtUF4YldNNbCRywsu+4y+dDTW7MSV01v23qorO71FTx3JRBwOw UFpoBzKxo1bUKXYT114oNwFC4G3rPk2wOI/AfqA4Su2MPg5wCiRFYcj2ThK9EUIhxAnv nYbTyM7FFhPlytpCG2HsnoFmidmK0L3E4aeJj70JO7BnUQygpDlpd5eOhepu6S4f9k+M fpIw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="Ky3zaR/Y"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y73-20020a50bb4f000000b0056e310e665csi4138328ede.2.2024.04.20.16.43.33; Sat, 20 Apr 2024 16:43:33 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="Ky3zaR/Y"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9F23168D241; Sun, 21 Apr 2024 02:43:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0B2A68CBEB for ; Sun, 21 Apr 2024 02:43:23 +0300 (EEST) Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-2a559928f46so2122023a91.0 for ; Sat, 20 Apr 2024 16:43:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713656601; x=1714261401; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=RA5N+SRFwQfE9EOxapKJO85rmAyR0xA4/PUeCNeL+tE=; b=Ky3zaR/Ym6O68w2eRJ63RhzsKLx1T85H+kJoRjoVJMQFwxVvPy6xS4UeDTpk8EjYvZ Ysv9JmLa/ug2tgxwwbGEWzvItd0ZUoncmF8Mx3Y6/ncK5kef9Tn3iEYCeElyo8RzrGL0 lESLvqaAicHJC1gL6ecyhVpceSt0EumfkL+1N6ndikYBjLIm+QBHQgtXYyjT9qWGKM6X O93jsUQZvy2wnaxxzbSg0T78n8haBl8GWbgiu2T3CyPwClZAmoAmflI19uvtktYlh2gc EOba4T+cHv76UiehvWgpRnnFxarr9ePWW0utrmdHTyk8+uFTt08W6UoI4GOHw45iEtlS Ij6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713656601; x=1714261401; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=RA5N+SRFwQfE9EOxapKJO85rmAyR0xA4/PUeCNeL+tE=; b=kbu+unyTPMGzHW+fEn/blOeVgGpQO9YwuHw7Kw/eB7g6FBXPrL8BiAYT3UxWSZn4Tc vChUqZhCv2dykABb2elh0pp1ESoPAox4Id5lXwTRgjLnXizoih858d4BdxWulEP2pZkf gF/ak60io4CW/NXDX+R4/q8ol1NawWB/0AFWv5kS7zXvLkiLs666XmEGNMX1hTQsOciV sxv7EaR8i6LN8wA0V5gjRaeDrqrY1JlHwRs8G6H8/ruif4IDurjRQd2NX5ue80y2Eyd2 jNVu8S24/ncUHM9hPbCzQBGG65jytAA56cFZJ+9GzXXVxlL03EeNNZ88IQUI9kmyBoEX 8sow== X-Gm-Message-State: AOJu0YyEdnLPYxH5nfjenqf9SSUO+cNyv4ENpluIQbeLCFXj3ZZmQQSA 1fIqIZZmLx0r9IxhBpxFlyXxMIWmNGZIztYvX2DdfbQ7LxxSqLu0+szgzQ== X-Received: by 2002:a17:90b:688:b0:2ad:41ff:2846 with SMTP id m8-20020a17090b068800b002ad41ff2846mr1425457pjz.9.1713656600922; Sat, 20 Apr 2024 16:43:20 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id x5-20020a17090a388500b002a53b33afa3sm7561867pjb.8.2024.04.20.16.43.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Apr 2024 16:43:20 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Apr 2024 20:43:11 -0300 Message-ID: <20240420234312.36464-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/codec_par: always clear extradata_size in avcodec_parameters_to_context() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 7vC/VjB+o9N6 Missed in d383ae43c266b160348db04f2fd17ccf30286784. Signed-off-by: James Almer --- libavcodec/codec_par.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/codec_par.c b/libavcodec/codec_par.c index 212cb97d77..790ea01d10 100644 --- a/libavcodec/codec_par.c +++ b/libavcodec/codec_par.c @@ -250,6 +250,7 @@ int avcodec_parameters_to_context(AVCodecContext *codec, } av_freep(&codec->extradata); + codec->extradata_size = 0; if (par->extradata) { codec->extradata = av_mallocz(par->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); if (!codec->extradata) From patchwork Sat Apr 20 23:43:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48198 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c906:b0:1a9:af23:56c1 with SMTP id gx6csp1467935pzb; Sat, 20 Apr 2024 16:43:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUvlDF4a6GcKZpK8IEtF5OmoFI32GKmdZjCnUGeLIu5EiGLh/qUziEct3t4/AuiY610YgKlctcC5IsTOOdx/Hnn43P9cquB/KgRkQ== X-Google-Smtp-Source: AGHT+IGKxbLI4NB7TkOtlMk+vW7fcBcPCuspzJxyIVHfP251YapVf9BvILwwYDmkuRCrbEP3hPNM X-Received: by 2002:a17:906:584e:b0:a51:e05f:2455 with SMTP id h14-20020a170906584e00b00a51e05f2455mr4404864ejs.48.1713656621800; Sat, 20 Apr 2024 16:43:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1713656621; cv=none; d=google.com; s=arc-20160816; b=pbO3qZEoAzLyWsLkhxlg1FRUSSz6lpxiuigTHdRFYYU6Cq4ZUwcUwwfAgE03Jb+g7X AsR9Vvkyiiye/Xyvh27WMtBSD4jtF20LzzJwc5hNdZDn3KhUt6C/YnpBjshmAXXxyPLv 9t2VN2by1EA6psr+st+tiG/1/cyuUUAOoadsagrIKv8y1/8MGw4PICpwuOe4lZb7QmFV B9xUuN8xjUqK/20miOmldPLB0hxMre8fPZchvCmNR5N2vfW91uhpcsbk3gwJARZGRiKs 8eTAHlWjzx/yX8yq1ssldt+IkG4AzpLfdfyqwfRFNr11M/RpyZ3uUk+ONVOSfdBErumP XxOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=X/qS+filPXO2bI2ocNFeiP7oDVbfMNsYIvHjs5Vec8U=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=Cego+6AYtrH36UGeJE7FiC9UMM8WSNZdSgcbytorOr5MxpBWfEj3IGvRRSrPz9YL4P BGym1kMbH17Ujrs1MObNw9gsxNabVBFVIvTLyQ1qz+PDMCarH3/RmkPL4KN0lxh8EyaH ZY8pRhCbXewKd5yfQPdBUoHV8WynJAeDZCC2T1rKPJCIcDvcEs4r7DnALbjN97YAbioR 1Qs45jeIlnAj9pUjM7L4SpVjcjM7727MWkIzbtDnpeh5MytiBQ4m3DMnV/oIm1yoV1en RvVm+SvRTHlIui/tM686QX+JUbXcqYU5d5Thjbaw0CzOdpZE1HsvIiwGC+iW7dVOjmEP 8rmw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="EOw/8vpC"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ht9-20020a170907608900b00a5219524f69si4404261ejc.31.2024.04.20.16.43.41; Sat, 20 Apr 2024 16:43:41 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="EOw/8vpC"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B97AA68D255; Sun, 21 Apr 2024 02:43:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6343768D241 for ; Sun, 21 Apr 2024 02:43:25 +0300 (EEST) Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-5d4d15ec7c5so2627350a12.1 for ; Sat, 20 Apr 2024 16:43:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713656602; x=1714261402; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=fbF/RccjhunfTcBJdFyeAoz5tv4nyOFdOzUaGj/Mk4U=; b=EOw/8vpCYgt+wSABGFZyxs9lC+J6Bk7haMUuAK7KZw5h9JuuB3PWhMU6Zo3nXRbTOq rxmV3ePZ/bnEgTUvCqLk67k1qi3z4nwOkmOCrKFyNLtJFZfG155B7M1tkZGtWZ9Qq5It wKoJOR1h1NBX9j7jaXjm/H6r4i0A3CW5hzS3arfCX7Fh3p8x0VMfThPx2F33imp9sRqe molM/c2hZRwXcYUM4H08HaeIhg8sy/B6RX6PBa7+8upmEc3rHII/trkWBseMyaJeVXUo Nfvuxq6qzL5Yzt0gjcgs3tCJ8mV2fYSi10eHXkl+l6O0iIoqkPZnnmwYV21d5j84xY8b wsmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713656602; x=1714261402; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fbF/RccjhunfTcBJdFyeAoz5tv4nyOFdOzUaGj/Mk4U=; b=m91sLm1VAINirEIQkgsGRYnVQ6HGH6omY7r2tonJ5I7dPm1HHN0Oj/UCMGRE4F0J7x NNXLbPtGjFobFT6xCSkxcByKIt1pRj203yGkYbUEytGaP2azJfRz7sFlz/4TTkHImu6t FF1fuvd3sT9/itjGuQljf9vReGMqtPeA5XwQOsrfP/vBzgGGf/Nu9klEgbO9T2jkYW7P sgOTJHd4BJK+X03uxbRmkL3G64gNTNRUR7bKcetA6C/23slnUSrqdTKbjf5dBbZ4h1y5 cvuBFobNIdvIecGqjBByp+8FQGz8WbptJL+sahALVrmRLNPGaKxn1zTVYG5k6mr75mmf NrTg== X-Gm-Message-State: AOJu0YzeS/WA5ZNCwswsTbBVuNM07gY8HvLffyCmw4tItkzBRMmN/Asp 4MacrkGnBixpv+GMGEYqmHuAOXV+3xLwsnK6VBAAmdUT2e7FsKzJiYZrGQ== X-Received: by 2002:a17:90a:8d0f:b0:2ac:5d2d:12ac with SMTP id c15-20020a17090a8d0f00b002ac5d2d12acmr5852211pjo.5.1713656602591; Sat, 20 Apr 2024 16:43:22 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id x5-20020a17090a388500b002a53b33afa3sm7561867pjb.8.2024.04.20.16.43.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Apr 2024 16:43:22 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Apr 2024 20:43:12 -0300 Message-ID: <20240420234312.36464-2-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240420234312.36464-1-jamrial@gmail.com> References: <20240420234312.36464-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/demux: extract extradata from packets when context update is requested X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YkflPFOi8jvs If the demuxer doesn't set extradata in the stream's codecpar, a need_context_update request will delete the previously extracted extradata in the stream's internal AVCodecContext. As we can't ensure the old extradata is valid for the stream in its post context update request state, try to get extradata from the new packet instead of preserving the old in some form. Signed-off-by: James Almer --- libavformat/demux.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavformat/demux.c b/libavformat/demux.c index abfd5fee7d..253a4783c4 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1319,6 +1319,8 @@ fail: return ret; } +static int extract_extradata(FFFormatContext *si, AVStream *st, const AVPacket *pkt); + static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) { FFFormatContext *const si = ffformatcontext(s); @@ -1373,6 +1375,11 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) return ret; } + if (!sti->avctx->extradata && + (ret = extract_extradata(si, st, pkt)) < 0) { + av_packet_unref(pkt); + return ret; + } sti->codec_desc = avcodec_descriptor_get(sti->avctx->codec_id); sti->need_context_update = 0; @@ -2470,6 +2477,8 @@ static int extract_extradata(FFFormatContext *si, AVStream *st, const AVPacket * if (ret < 0) return ret; + av_bsf_flush(sti->extract_extradata.bsf); + ret = av_bsf_send_packet(sti->extract_extradata.bsf, pkt_ref); if (ret < 0) { av_packet_unref(pkt_ref);