From patchwork Wed Apr 17 04:37:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 48098 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ce4e:b0:1a9:af23:56c1 with SMTP id id14csp776586pzb; Tue, 16 Apr 2024 21:39:01 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXa29u2hbGnZCApb/ac/bzdm1dNQHRSytcmkW0yXJmjebABKwjxL92pNixotJeAXFSZmQ44aSDxupbQyoXgvosEZgGXMGBbQ/MKFQ== X-Google-Smtp-Source: AGHT+IHy/s2MYUmU7vQYwJpj07es6erwyRXgDqmu1dcJNcRGA5QnG6pQIehY1NFWL9zA/m1dumST X-Received: by 2002:a50:d611:0:b0:56f:e609:743 with SMTP id x17-20020a50d611000000b0056fe6090743mr10716957edi.35.1713328741684; Tue, 16 Apr 2024 21:39:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1713328741; cv=none; d=google.com; s=arc-20160816; b=GSyoxkx+C+DvrO9D10sb22PR/HLcZ/aJprnyQC/wvFJkDojjANxB2eCWy0gti1X4+0 tGf2JpZmEM1CjAfeAPBf5EVEILuP4ieios6ViHSCFp4JrJsIAPX66qmb57CAr5Ewxnjw yWrlF4sZ07Wa1WDSqSbYbp5+zlT9TYmvsp7/Cs7tjVmMUwOnTzrVSSJCsKr0OAGfJARj SkpWu8xN7w5ce8Fezg18Bi1VF2l/j6kMbuTi5eR/HFrrufVe8UXGow+esIihVX9L9Z79 YkPh6omPbps7zrMvTDrluLHKSJUnpx1bCmF0IjlQfuIB0DDhtxJLiAs0/Ky+BbGVGZXa xfBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=r/Rd0wEEMmPYC+8w7iJe5Ys6Kko2QIv67uoJ35CcGfE=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=RYMcww9E3yRcuRAPTPSZwnampjDNK1Xa6NgYERnUu8jjA5aq4gI1mVNw4XEVpahrv7 7CLaDB3zRJbwMUXJ2n2rZ24Dn6XFb25ywRK/jfrqpUr1UTbensT+cI/xeCNkBUB+q0RR 6WmQS7zuFNC2a9IbVRBo+TVaB3KVq9q5M7z8zPgImEaTacswrbBJUUI2SmHVCmGWISuQ OfQG0+LoZz1+Gdc68V/WZqowMqD8ztFgWXmEmNDDke21LIBAtbTxLYD7Kh4CoxiwsFUz qGNKx21I9csfVWw94qBmLM/uZb/+rcZ/JXh15kAHlG7JaGgdJ9Tcr26OjbnaHiviOeVu PrRA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b="cJ9PW/zo"; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ew5-20020a056402538500b0056df9d6b14asi6364854edb.442.2024.04.16.21.39.01; Tue, 16 Apr 2024 21:39:01 -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=@foxmail.com header.s=s201512 header.b="cJ9PW/zo"; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E59468D2CE; Wed, 17 Apr 2024 07:38:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-192.mail.qq.com (out203-205-221-192.mail.qq.com [203.205.221.192]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DF42B68D02E for ; Wed, 17 Apr 2024 07:37:54 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1713328666; bh=Yp+obAj1bIdedzU0YwBoKdR4rOC+yWg4F4J9N/6Zveo=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cJ9PW/zofxRln1NTx1yVO00JM5pNQwJM4g42/uxmJYyn9Q8IzF2ZVZ/QjdWIF0a2+ PoaxZLtWtAdv0XVB/qRJsCmcnzIMDWnuUKlo4drt1aZ6OodfTGv873QAvPaL2p5scJ 2h2Vi7WDUhRgY0htrFcvHfyrZm16Tc6DAio6ZgvU= Received: from localhost.localdomain ([119.147.10.204]) by newxmesmtplogicsvrsza30-0.qq.com (NewEsmtp) with SMTP id 96A0DC1B; Wed, 17 Apr 2024 12:37:42 +0800 X-QQ-mid: xmsmtpt1713328665tfxm4e6c7 Message-ID: X-QQ-XMAILINFO: MmPNY57tR1Xnz9xIJ2y+iWjAGO3V0cOIJpUYayCHQ4ey+yvx5grFx4eCf/gftT KgL/wt19ii6ZhL99t/DCysNbpNlTk8i8LPt1F9WkOlMSYvxM8kG1SJmDIwywUtB3hhW0mRvThvTy dlPNllkUtpu1TppxnirLfnaeuvLsJ0NFnsAOJsd9D4Rf92oCwDckn9yP8RJm0rw5iZhgjnrsaURD uh6OVXdKj+R2m5XWm2tRGamLWk8bst3IXCl15BpOCEow/v/AX2CkKMXejXu0Xc2rkfAC2bqFIniH iGoiz0pL1KkLRvhTlzBT4wx3aKyz88XFvIezlFMkJBhUki1gnLtkldtpExbMZ270Ak/Hrn6qXSb/ xFpmzB8hk96uRhFgB7eLfjgAj+2QWX7S+h5JCs0seJRNI/X0zG/iKHMra3kBbiBRWvszGHU6QFKc iIg+LODxL9WP7S4YjnrwnKqbiBz4vpCSKBpzAWkHsbAvvqRIpGrWuIWFxk3ErWQ/D3i/HDNXE+UP uI468gkeBPtOF60WX4/O7HyfhYVnbV3xgZ11fYl0dlq1yzqXf0MMQ21Mq6H05veMrP5diObelepU seICxV/2w05UBlFMTKBQYgnTQtFxKZllQwUEbSr8UFxSr4G/7RM4NoWcAYmn6HspKNTdcqmMMzaX JLveEIqly5W5GHakOz8VDlW/iDoX9MUZU6ifsWgkBf6AtOoLhuRp9l7VNGojoP+SJmQQT/NRnTjN 63csxquCl0BxOeK4KQpITUnHyzLX22HuovCqXl9WF/KL8gLcYVWP76/BMSkiggJY2T5nlbHRTrIF uElSLbCNujUmwVFZXm/eSdXZai48bHPGs+Ws/LYS+ll/r1ZIwEupP8JJ72PprZy+XErsbw2bqZzJ mbPHAbyNualBZ+TyVqLo+miwZg1bJ103uGFwh1A2CUCe6SPUrTF3a8rkDCVOxXtLAsJgKQGS6wxo Z33/OwUnyEXeZmcOUPz7Rqs/3wEN9MdYfgvPRe+0BcallwTBwl+GQlNF/w7a8Q X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Apr 2024 12:37:41 +0800 X-OQ-MSGID: <20240417043742.505853-7-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240417043742.505853-1-quinkblack@foxmail.com> References: <20240417043742.505853-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/8] avcodec/mediacodecenc: add AV_CODEC_CAP_ENCODER_FLUSH support 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 Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 0Aa+1zDR9qYs From: Zhao Zhili Signed-off-by: Zhao Zhili --- libavcodec/mediacodecenc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index 64816ccf0a..c87a0d86c5 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -705,6 +705,15 @@ static av_cold int mediacodec_close(AVCodecContext *avctx) return 0; } +static av_cold void mediacodec_flush(AVCodecContext *avctx) +{ + MediaCodecEncContext *s = avctx->priv_data; + if (s->bsf) + av_bsf_flush(s->bsf); + av_frame_unref(s->frame); + ff_AMediaCodec_flush(s->codec); +} + static const AVCodecHWConfigInternal *const mediacodec_hw_configs[] = { &(const AVCodecHWConfigInternal) { .public = { @@ -755,13 +764,15 @@ const FFCodec ff_ ## short_name ## _mediacodec_encoder = { \ CODEC_LONG_NAME(long_name " Android MediaCodec encoder"), \ .p.type = AVMEDIA_TYPE_VIDEO, \ .p.id = codec_id, \ - .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY \ - | AV_CODEC_CAP_HARDWARE, \ + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | \ + AV_CODEC_CAP_HARDWARE | \ + AV_CODEC_CAP_ENCODER_FLUSH, \ .priv_data_size = sizeof(MediaCodecEncContext), \ .p.pix_fmts = avc_pix_fmts, \ .init = mediacodec_init, \ FF_CODEC_RECEIVE_PACKET_CB(mediacodec_encode), \ .close = mediacodec_close, \ + .flush = mediacodec_flush, \ .p.priv_class = &short_name ## _mediacodec_class, \ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, \ .p.wrapper_name = "mediacodec", \