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 A2FD7488AF for ; Sat, 20 Apr 2024 23:43:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 87AAA68D243; Sun, 21 Apr 2024 02:43:31 +0300 (EEST) 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-Google-Smtp-Source: AGHT+IFpBtPNa0ReE7/pPYVercJEMNSz8eKfXTwbpiCZgbrknJatff/NQYL9KSTBdkFrBtS5h4kjQg== 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 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 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); -- 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".