From patchwork Mon Apr 22 03:01:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48210 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c906:b0:1a9:af23:56c1 with SMTP id gx6csp2025259pzb; Sun, 21 Apr 2024 20:01:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXGn5erlhhrIakROn1YjSHXfJry2GFNa5+oBcLUpZXbKQdROKq4fdZ7Yi4rXFcVq6MDEFs8xqaufjzrj45hhdjQMORL5t4vlDzo0g== X-Google-Smtp-Source: AGHT+IF8Ly2u0guox+kfNR0FnvPKZmMHR4ZqPu2/qpKq8hNEPyXiIMuWLExGkLKhvJqpikY+28dN X-Received: by 2002:a2e:950a:0:b0:2d8:e98d:131a with SMTP id f10-20020a2e950a000000b002d8e98d131amr6375841ljh.4.1713754902357; Sun, 21 Apr 2024 20:01:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1713754902; cv=none; d=google.com; s=arc-20160816; b=xn24NRYLg01LQC9+j2QTEoi32dbLL/VgcX/j5ZMvzdg6mmvnsenCdwcSSkK+63ghok gTyIE8VHrBvGEycEc7AqVEgorW6I85IgEtcApD0oy3v8MmooS4RreVFnIWYW2OX4XeLB noz3w2j6yVhd55CnztLTwBNK6JEYXysd+4ipLeAY52GoXUXwqz2Yhu5FX/Jfowm+mtgr xROi4AwxbhyL6WoIxA1OdVc2GAMqC3bakiwmBBHtdRLrTfoyvKSojWJ9aJPblWJIHDOg lwcrNLwjy+t4cpJHAtzpPouEwHzQH1afkiyZA5GuxEew884go2EtbND299/CDBKz/0p2 MjvQ== 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=18KifHp4SnFx1vFnV57win3OxVI/nJ5B6/hMIPS5eK0=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=LL/EjyJE9TYblowqjhIplfyEZtnIxC0DARMAmbznMOShhRt/cZ4hcNpHJ17DICkvZI 4dJkjf8ggaGUTAvb5+OWWt0hwMTaGj9sK9t4RYZXeojKgAfs4Yu7yG4Wd9WquqeoRf0Z 6Mjb8+rF43fogjloyyHa3Qzry1sv/KGgAlhCT/aXg9WzlmDRSjRinQ+0VYtPJ5W6Er7v eSfc+HyAn/ayMhLLmxSNjZM78tDphlkgLAfpo13drLrirhXNY1xH6v+4CJHhfnd03xCh IkSnY+kAK0h4CNXhL4pzhhXbQz8s8j1sup2CVU8WRBTGNhzLXdXnyeZUcmzTE+/jNvvc Okiw==; 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="O/7OzLKd"; 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 m10-20020a056402050a00b005702325590esi5076430edv.61.2024.04.21.20.01.41; Sun, 21 Apr 2024 20:01:42 -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="O/7OzLKd"; 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 BE2C568D2A2; Mon, 22 Apr 2024 06:01:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88DEB68D119 for ; Mon, 22 Apr 2024 06:01:32 +0300 (EEST) Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-1e3ff14f249so28208675ad.1 for ; Sun, 21 Apr 2024 20:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713754890; x=1714359690; 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=vrgh5ABlZbaWF2qHnvLxFTV740SamQEgCio5MMxa6yI=; b=O/7OzLKdgnZk+mVCED5QB5fIzPeIWmDF8sMTP+W28Fk5OimD3K7LVhEYbSJnX/QBuP p8WbJZniK/7wrIxN3iRmtfO9A3vTdHW+pZqLLDgxcxyWqtIa3b6ysfdprYX5YsuiE85L KO6iK6KarjjMn7pGK3ISlVf9GEkB8MD6wTJWmm8sWf7gHJdFb6csBJyho7etv4UQ7amV ltO+9r9NigOA+02rXoroKBNMr/RYAU/eQbDf2YT4d9ki6H9HOxTVh3HmbsYC2WavpFen +/CIjyfIO8gbFZGhbwX4q4+71c/CuGyrUSs3ndSlWydh0RuQKtDWiUvVesNoj6Ah56Ps S8Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713754890; x=1714359690; 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=vrgh5ABlZbaWF2qHnvLxFTV740SamQEgCio5MMxa6yI=; b=oEwdk/PJJKaOzgSYaxzVzqiRJ3f8plAXSisE+HM5MLA3avwjJvtX+kvfEQyUiVfKf5 OizBSVBLCrB95z40rhD8avarLq7nX7csnmwvOsSRyuk9A9SzZotSET+/PF/eX55Wy1Io PdJXoglTADgjFO3yjW7spyIcBF7IlhXW9ji7iCCMoG5AXpEKbkVj5DJj7dKPbxH1JSyv cFeoadEXeKmpsI4eBakrVp/cAynLkoCToBYfuwbHEFJEebEB6GWRXcyXdmXEEavwOO62 S6VtyXazEyT7zmb9tp5IR3PzWNnvq89gPE24oQ/yH0ID8aB+WOZVEiWHQyZ93cyCN4Bx 2yDw== X-Gm-Message-State: AOJu0YwSPcuv5/J4uMppyz2fNHeauxC0L1rWKxBNS65Sb6AimHz0twAR ZZK6H91+Kwe3Amzi2RE8/TnmyKi6EXCpSC5e/j9Vhlg/4ch0NLylpdKtfg== X-Received: by 2002:a17:902:e5c6:b0:1e5:e676:4b09 with SMTP id u6-20020a170902e5c600b001e5e6764b09mr13960229plf.25.1713754889937; Sun, 21 Apr 2024 20:01:29 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id c11-20020a170903234b00b001e87c6aaf33sm6863772plh.76.2024.04.21.20.01.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Apr 2024 20:01:29 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 22 Apr 2024 00:01:15 -0300 Message-ID: <20240422030115.1296-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2 v3] 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: OZWc0XjZ5gpE 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 attempting to preserve the old in some form. Signed-off-by: James Almer --- libavformat/demux.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libavformat/demux.c b/libavformat/demux.c index abfd5fee7d..ecefe7e0a7 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,16 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) return ret; } + if (!sti->avctx->extradata) { + sti->extract_extradata.inited = 0; + + ret = extract_extradata(si, st, pkt); + if (ret < 0) { + av_packet_unref(pkt); + return ret; + } + } + sti->codec_desc = avcodec_descriptor_get(sti->avctx->codec_id); sti->need_context_update = 0; @@ -2427,6 +2439,7 @@ static int extract_extradata_init(AVStream *st) if (!ret) goto finish; + av_bsf_free(&sti->extract_extradata.bsf); ret = av_bsf_alloc(f, &sti->extract_extradata.bsf); if (ret < 0) return ret;