From patchwork Fri Jun 18 22:02:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 28580 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5e:c91a:0:0:0:0:0 with SMTP id z26csp2056630iol; Fri, 18 Jun 2021 15:09:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAkX2iQHNDTUf8Ue0OweFTb7oR/SFFF4r7Gz/XnWF81FBwpC2l3ax6FfAU0KgnlhYFUS3n X-Received: by 2002:a17:906:7d3:: with SMTP id m19mr12961039ejc.546.1624054146260; Fri, 18 Jun 2021 15:09:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624054146; cv=none; d=google.com; s=arc-20160816; b=j3gxGj68Fu7RDIZc//MjAybEYWoAiFDrk/3QOEq8ot9I4L3iTDx2lYXUllwmEWez/W 8rbubqCAzuI5rHn0GsoyEtsR75mMXwCVJLXfQnBZrxjNrSevAzzCU7DLCk4vHabfpHX3 dmQrRAnOA7RQPRGN1eBNccs1hyBEC4CA8VeVqoNFS5D8bis1uLu0LilL783mqK5u5lEF 3z+JCXZTHRZkHvXUmkfp0WP3JYl2WTpDKugJE/x764maEJBSDnO/r3VjlraowGhJ0Zp7 cRPL/PP7wcgue609/X9HOihBhVly4CUNV6m/sfKGWTa6/eU8RZJhj9JORT14kA18kTU/ DsKw== 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=1jEqkZvUTL/69l8jYMLTs2xxGc2teCTd0dxIrsMV6Kk=; b=pKT/lJKWZnazxM66V+N7FK9GVVh/wvKOu2yuGn7wwyyRfjNDjnHWcdlmnXGhSId9zS K8wWmPSl/w3tEfLvZoGERWGrqDu2FyZnEvvtYOKRTrBXze4bujNSQX3JlsTCyB9KpSHn rqxgVGe/MMHBXUw8YFznzbSmIzMWs7Gu2LLWugA7IiTjyzR9T6NReP7Kz1hTyI/TDt4e Seg04QzCkwqlp/Bb+va0rADh34ZR6DWVh7huelHijxCOTPA//uFdMfbvYi93niulOluE 62d/32v9uhjrbr0YJRyALZoUpGHrd2ylsVEb3EmvsCATYEFT+dAU5K2+m4JBOOPjcTEd bW6w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Cz3HRIz1; 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 c61si130738edd.310.2021.06.18.15.09.05; Fri, 18 Jun 2021 15:09:06 -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=20161025 header.b=Cz3HRIz1; 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 D818C689923; Sat, 19 Jun 2021 01:09:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4427C680815 for ; Sat, 19 Jun 2021 01:08:56 +0300 (EEST) Received: by mail-qk1-f180.google.com with SMTP id j62so14517125qke.10 for ; Fri, 18 Jun 2021 15:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=s3bvVEo9OrEDMeNk2v467BNdiKT0untpODqhYLTf1C8=; b=Cz3HRIz11irGxY4RnIENSPUXpjfZ6DLbGubwAtPWjmdWVA519T5M7G1pD+E16bUHf5 ovbvfBgSmoTH+FYQBsznKUR9PORlnrKf6SEjrCg9kaYk+0Gar5ad9aRfmJ6peBWOxeq2 Yjr6uk628Me5V9rwq4IWzmjUlptZBYLs/KAlUIjDEBt4DQSPlv0HvT3J+JyNbCc0nW7Y AgmFH+XccjKcVHtMIZWVYmhbquPPKcQ8jS4Xbu3hoZKZEbU0DP9S27n74x+uTuvBvysb DdtG5ET0GZPXR71S6tgmlhnQpiq5KHvQgrHBrwClB06TozZVGb/9lGPWXhIYqxu+/PCI 65Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=s3bvVEo9OrEDMeNk2v467BNdiKT0untpODqhYLTf1C8=; b=bBLOy10aRecLQCn9mbl2Lzq7y38YbQkjAeJy0a2v5d2eZdDIPiyAKzby6iMsKi1K7c oy8AiRr+a7GW1KlRfYWWm0I53cfF7wEhbCbTbyWYhSGGzRr/pKJr329RzpJXz2BjkoVw eOLIznHK39hWLlTaW2TTyPshkzx/mVj/hlhGwkob5B/q+gEkZsEjkFVB09RhpT9ChNLS oTfG6af3yEXHY1vqdyxdnJqBJTYFYDEoCSEgBXo5sC/YiuO7nlFJpa0DSafuLHGSRJQy VYbaUi0Hf1iTGT/LshQIlgKgYbRqIRwGtCaKGa7/KXamx//dgOx64Pc5+oIVnxQ6niSa ZryQ== X-Gm-Message-State: AOAM533NfBiAyNWssPujqPyQwI2K6E0/B/jPGBFPi+vRAYvN53yCiyD6 AEIdXV2Sb6xOS3wpMa0AAuUuV48kpa4= X-Received: by 2002:ac8:7699:: with SMTP id g25mr12417404qtr.309.1624053762277; Fri, 18 Jun 2021 15:02:42 -0700 (PDT) Received: from localhost.localdomain ([191.84.225.169]) by smtp.gmail.com with ESMTPSA id 5sm4975334qkj.99.2021.06.18.15.02.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jun 2021 15:02:41 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Jun 2021 19:02:11 -0300 Message-Id: <20210618220213.52768-1-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/decode: fetch packets from the pkt_props FIFO on every frame returned 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: OhceLUN+Sf6F Fixes memleaks on decoders that don't call ff_decode_frame_props(). Signed-off-by: James Almer --- libavcodec/decode.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 75bc7ad98e..44f0b11546 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -533,6 +533,10 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) if (ret == AVERROR_EOF) avci->draining_done = 1; + if (IS_EMPTY(avci->last_pkt_props) && av_fifo_size(avci->pkt_props) >= sizeof(*avci->last_pkt_props)) + av_fifo_generic_read(avci->pkt_props, + avci->last_pkt_props, sizeof(*avci->last_pkt_props), NULL); + if (!ret) { frame->best_effort_timestamp = guess_correct_pts(avctx, frame->pts, @@ -1490,10 +1494,6 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, }; - if (IS_EMPTY(pkt) && av_fifo_size(avctx->internal->pkt_props) >= sizeof(*pkt)) - av_fifo_generic_read(avctx->internal->pkt_props, - pkt, sizeof(*pkt), NULL); - frame->pts = pkt->pts; frame->pkt_pos = pkt->pos; frame->pkt_duration = pkt->duration;