From patchwork Wed May 27 04:10:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19888 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A3B294495CE for ; Wed, 27 May 2020 07:10:56 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9072B68AB65; Wed, 27 May 2020 07:10:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1A7BC68AA08 for ; Wed, 27 May 2020 07:10:50 +0300 (EEST) Received: by mail-pf1-f194.google.com with SMTP id y198so11264719pfb.4 for ; Tue, 26 May 2020 21:10:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HrRHME01xcEYLq0lCS/TSKVMNoUbso7uo6rNvrX1cCI=; b=NABxXD9TBJ68JzxqHMXlLB28uiIex/KIHMwl//gt+cw72l9ic/bT+Jym3lS2F1aTox yIJTGFhMDV9MWA2IKqBGhDoXYczvXA0e6zlp5f4/yZhdZwE2XQuCcXriFObYnjGK0gku kLAnuKWCSX+ZLQzDlvIUhBvvieNy4HwahrSpvPLp5kTjvypLCUdWMivO+RWXKauMzHL6 iI8BCZT18I3shdr9Wg8KlATlp2jakQyni2n0jdVA9tMUdi5a6dtUSFzUjArhgK/9ZtbF 3oFPWXIEGC7Fm26ftXjW2XPsLJr4nCVqhVL0BxusKpwmyYJHcI1Ty31y7tPyO9lYZswu Jirg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=HrRHME01xcEYLq0lCS/TSKVMNoUbso7uo6rNvrX1cCI=; b=Gl4LN+Lx4d1YIChscCTT6QTaykWjd4jMmQwQQLCGDqLjvcYbiQrCTHAFFWQ2QAfCPU QyBr+44rMeGO8pEqq3BxZz5dNOqzt7CfZ97MYzS7dYC+V5cC0Y4p1I9FuP30nSPcZ5jG gwVfK1Y+nt1j1JlO9/XHA7m/20C368HYtwL0Je6ZVid92T0U2SqeZciS9vulzszsszIe yHxRtq3cnqjCuM+ySvMYFuhZBmem483Yvc12upOXfT6tcVji3E4eWCH3qmn9Rk4R5AMz adMkOwzaHh34sBLC8/52GOLKSk0o9X2ztE4N+HNWe8wSv/RtZTmf7VoLuI4eCFe+FYuw RxOQ== X-Gm-Message-State: AOAM530i7PKtrxlbJo3UKtBISyqcjREKKM8ZWkv7OYzAfTi4nbOqfYsn B9o3UChINWZhs8nv8m3YXa5I5w6U X-Google-Smtp-Source: ABdhPJwhcHjasnLzbhlgs45Qi7jCHZrFJffDLxUjL8aetjHBLVsVFlmWypR5rPh5neixO+rij/j4+A== X-Received: by 2002:a62:a518:: with SMTP id v24mr1869679pfm.295.1590552648208; Tue, 26 May 2020 21:10:48 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id 131sm871988pgf.49.2020.05.26.21.10.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 May 2020 21:10:47 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 May 2020 12:10:34 +0800 Message-Id: <1590552634-15101-3-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590552634-15101-1-git-send-email-lance.lmwang@gmail.com> References: <1589800269-30359-1-git-send-email-lance.lmwang@gmail.com> <1590552634-15101-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v2 3/3] avcodec/h264dec: Add FF_CODEC_CAP_INIT_CLEANUP X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang then ff_h264_free_tables() and h264_decode_end() can be removed in h264_decode_init() if it's failed. The FF_CODEC_CAP_INIT_CLEANUP flag is need for single thread, For multithread, it'll be cleanup still by AV_CODEC_CAP_FRAME_THREADS flag if have. Signed-off-by: Limin Wang --- libavcodec/h264dec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 47d7cbf..1b46660 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -228,7 +228,6 @@ int ff_h264_alloc_tables(H264Context *h) return 0; fail: - ff_h264_free_tables(h); return AVERROR(ENOMEM); } @@ -420,7 +419,6 @@ static av_cold int h264_decode_init(AVCodecContext *avctx) av_log(avctx, explode ? AV_LOG_ERROR: AV_LOG_WARNING, "Error decoding the extradata\n"); if (explode) { - h264_decode_end(avctx); return ret; } ret = 0; @@ -1082,6 +1080,7 @@ AVCodec ff_h264_decoder = { .capabilities = /*AV_CODEC_CAP_DRAW_HORIZ_BAND |*/ AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .hw_configs = (const AVCodecHWConfigInternal*[]) { #if CONFIG_H264_DXVA2_HWACCEL HWACCEL_DXVA2(h264),