From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 7620E447B1 for ; Mon, 22 Apr 2024 03:01:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7844F68D2A1; Mon, 22 Apr 2024 06:01:38 +0300 (EEST) 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-Google-Smtp-Source: AGHT+IGMIspola/mgdWZ6EqTs9SXsCVV0zc4QdNcmf6D2lzpM69eUnmZiENlfzjFXBhsJ0bzHUBc6Q== 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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; -- 2.44.0 _______________________________________________ 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".