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);