From patchwork Tue Dec 7 17:54:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Alex Xu (Hello71)" X-Patchwork-Id: 32109 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp6594634iog; Tue, 7 Dec 2021 09:54:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJy43TH2xM0vgwbOzW8AM5FqUbWJSRAqEEPC+8S690jvvtTfMoWw7yOXqtG0ttgCqwSbxO6V X-Received: by 2002:a50:ce46:: with SMTP id k6mr11039838edj.45.1638899697965; Tue, 07 Dec 2021 09:54:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638899697; cv=none; d=google.com; s=arc-20160816; b=vIi9+WfdDcu5rhpsb+nCD5KFsVvdmpF1REIjkhowRqtUG4lMYvGwIp66MVdT1g/b56 aS49MCROpi4pMuIZX171Dr/mQzYTDhzJ26+3P7g2gm3P+MU/+MVp97rQJYzYIOgtkUpa /ujH1oWxnRTJ/3m/33pGVdG7RNwp0op/zFGFdKWRvCSpu2mUYiYsbmz9ih0uOLsicCcn WueWWmilUbwZF6ZKzxFpI4h8Krmfj9l2IHscOJ6bzGL4YT+CStdymq4+fSDrrAv74SNu DsklPaw8mVjCgzVROD69JTOT3a8CvaVWACjfDEMikWrDTnX5q6UE9TKjtg8FftbrrS6J BhCA== 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:references:mime-version:message-id:date :to:from:dkim-signature:delivered-to; bh=IAo1nBQpyCdMOPDGsYJgML5L1BSyzrbZiW7ZNs5A85s=; b=jB276u3qnT/PkeFJ5VN3bui40e43qVs/l6fdMVyF3hr98JegWTMeM+0N1xrCnfsguI 5hogUyWIh8D5zVcc+fj6i08z53kD7SyaEj33kpPK7/3JqZWeWXhEfr2teMjWEXnmvR1s R+WOip2PeMTZx+Th2uSBcmU4wTTXprv31EIqfVWtuHErXUm9s/LStE/89rPZcLWSccMt CeQLcUmW4drgiAlxT7zmeM49IC/2irqC3aQlYJoEMVol7E6lkjp/v1dKzUZ9/v9TGHzk uvPCob+UEaSN40OySmYzRAvm1PmwYrflYhGD+ekQqGoh0BeGhN6+sj00RqWwjPzfJplW Mk0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@yahoo.ca header.s=s2048 header.b=Z4y9TP7D; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id yc22si286886ejb.643.2021.12.07.09.54.56; Tue, 07 Dec 2021 09:54:57 -0800 (PST) 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=@yahoo.ca header.s=s2048 header.b=Z4y9TP7D; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3930368AEE2; Tue, 7 Dec 2021 19:54:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from sonic313-20.consmr.mail.gq1.yahoo.com (sonic313-20.consmr.mail.gq1.yahoo.com [98.137.65.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 325D6689F08 for ; Tue, 7 Dec 2021 19:54:46 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s2048; t=1638899684; bh=CCP2li+owGt2LrOUbWJyaoCBgFoKnUL582nAXaxG1Vg=; h=From:To:Cc:Subject:Date:References:From:Subject:Reply-To; b=Z4y9TP7DTUJ/z1/kNHGwL5iOmUWIKgWjsPx3FtRd6FeFy6x6kamQMooB/rzoLCPG5OiKFdnT5Afth1ZYMB0lZJvJYzmaBeRHothGgnZnoONLezgVefUVAmSSRnRMMWMKDN+vDIaHjJPnI0/lRm/l6dJxz7SlNgDv8z+iVYGoRx4oSTE5B06rca1lfhAJdP/nSW5+fhTBRNgWGYUqH0lsEdq7gbU6nBn52X1cb4wPOXQaOO0dLe5eiKaBxrw/ONbU06pp/ISCY5E6OTxnXWVRWbWT/s4VUuIK4nG5erq0KJN3iiTt8hUIGU60QnSYboCP/OTlqE8SKdmzehCNekJLDA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1638899684; bh=YUmqf3hP3mZAVPMm0JrTdrpepTLlXDzma8z5G/+VRir=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=UsfdOoOu7oh+DoT3jb/pCa6wOuFEiEThqEWe2K+kXBsYrr9A/UZ1iRfjmEEXpXTKDNlEnFIsmGVxIX91TaxY32fy5BcMa3zDmngkZSuKMtdxcMEBup5CFetHlTquo4QgW8r+aVnqy/cvWHBFMwNaPwTOgI0dqKAOy5znj0A/b3PrQ50CEV4G5+tIq8lve/q1YAlhAiUieSMWWO5q0UIzroc2Yabb61VaDWcsoEysr0cHHczrerErrdAV/DTEAStmfbO1sBvukS4IaUy2iX+Xf8wGmzc0Ravxf1S1iFq0oaXtrGOxDzpjZTKkIJNVxxtVL+oQo27Mt5/1MEBFHCT1QQ== X-YMail-OSG: 6RnG3eQVM1nNXLE6vDt.TRR_OGVcB0uuT.iyISyF9rI4GP06Xul8nVClegpdEw5 wBAZfVW7Kc3Bj39tB02QWQ9RlZtc4TyJ78sH2yegx5N2JfSkd_XZlPphfVogs_1NKoWlCqyBSTZg 6QhlUqHqIzB8t4wu0wSrp0O2ZOfSG9z8Z6oooeXylxqCyfK5Q5sI5LPukK86g2ViXxHvAUspohTF gps4BdOasnrBVVoOfDd3pxgdTQjhVShq.db4GGSftDQCHXJB6Gv4EbYCwuVnkCnUMgKJfsvv0tK7 qfzKJO6SrBfqyJdBXt8vj0sWeJ2y.Xj2wHydUchcQRf.0u0T3tia_aN2qfA_3PryXTl.HC4K.nXC _1tdfhzCzmHonoPCS3YiuUDpsGSND2ImhjKvNUpc5kqY3iuq9MRgLyuVugVk__Y0yM7bKKsiS9Ig 8NJHkaK18UYehhqIB4YzDUDIJkxpeifnf2n1RgE7GNc2JHEcfILimqlW4XYaRskl06RjlVwaIh1M W0hTH.FXXsx7ptXRmfWVCwI4kGM7gQzc4b8dboQKGD6nfJmCsST5JaNAYYQrn7BruwQS9jeUcGFW 6cigwTlWeqGcISaaKatouVEBMIwwR3zqdPnql2VTi3y2cxGDWOlcFAwmuzEklbRsGJnmcchcAZxh _J6PNRA576bY4gIknbuRwi8uGLshTEiBSqA14u58xw_6hY1pN7ADpCJkgumelVQYbTypojLnCf10 UpSzuKkUs60L5UQtAl1.TTm9wgmR1g5yHgXCAwmI8NBt0h1szMSRMKZ5UeclkPiw.cvFTqnTrHTB 0Hbq1lioFFEx3zanIK_jYc6rtFCczTwG1vaAZeXUEFVImt3g6Fx.n54nv72ZMVXThQyOa4_td_K_ Culj3PLz5oenBs63dqrNxcIzuWw.bhAq8UyY9Po_XaB5DAWVlIUFWHFGObeNSOgd22KZ77RqsJrd A7uURGr90pmkxO9IEg9iD8ot8__B2SdD3_J9H811RbXG_5LgZpnGukwRWmNKIEsSF614ccqpAGke Q3GySV54mWKU905QbCuOshwrEx7t5q79NhZxjUHOM7q9VWhTS4eFJeWxHFI7.ueRh5LPhR2FOKtb 2viNc5HfrFzPL1Zh1omFePfV3k.7acJpdCutTEG_QR03aq0Wyer1ZexCcewfp6NhVPQEw7zTRgn1 C_EWwOc1teJeUHQAuwXdZ9KluJH6D4J80lDcEJ.ABCEfYwQi9E0G.n7zw8KAQJ3JwK7hf9WXsBDN QgF0C8dTfUTiQBVGD0VOVnb3JiY5rLMJxGwV9Q1XkZRPeoffxcE6LwYVYIopO2lxZVGe6sp5VBTS bhv.QX6nChnCTMkYPNZIRVKcyp6WU7Xl6nl3Y94BfaV5LwRdlgUjzNACkI3yzB7WArer0uv0CMOB 1xTt7IJiGtIvAc_BnQo8fL7M576UWNw4zsrDqybLJkIIoLbofYp0IvlI2_.abOMk_9yJUELZ9Dnv tWoPYNQwOORXcQvOGkcN7ZO7R0azuLoZdxsnelRWFTicEYCrxLK4MJA23JY_4uJ_zk8vDjA09sD4 QSiAH3B2Nq6dPyIbfn_nFW4.5BAWbd2CJRwm6goplgF9I5yskdVkVKRfMuZ2eOZmKdhqwYal3pxC JxmKF.8gFDxY9DDUd.gA.Qh2GopYoB62ZNghVxmsfcqposDrqX341RfrxTqEo02NClZMV79y3wBG Iv7flTcFRKGGa9kXg.ZejbmzdPfGGlmpWd7Avc_wGgWfzBWadNywVd76ys2u4fsvfCpCrt5kNsFJ sqNx.jGNey5Zz4OWjg_psM804xuwPHr1HOPXf4PzKJY.yQVS28XJqjB8uVtzwTyYlCrvrhSU_f9b SJwSIma39Hc3hSWdTpBTow7tVh4QFLdf0FHRBgTI4_LkE.TGosC7LVOX2C2W_aGeM_zuwgYelrDp r6qC8lQ8ESNl71BhmNwrL8oP_taYBXljJhPdAnbB4.QWr0U3gfovxDipqFXc39uvy9Majqv.fhll _EuuwDmP_BJUiaManj0en999xcYRngT1JzlOwqh4EkB_y_S4VU4hbctOlx2Dlzjt3JJg.P35_CmJ 31PDA4gPWD7RMfgkJGRIzd4N5hB9NCj4CJdtc3Kvys6XIt2XBWOQi4UQt9oheQ5SLiAtBQQLiXZr r9PKohhVfuXW.yfjqkbdmORbPKaowR0AmP9lAuKVU8MgPpiXlHp2gSKM0NN6K3Etfp520R.Wdv9P MdEWu5yfueLOIxzQEOZfbWhbv61tTsBMei8WFVWYAQjxo63nC9Huhxw-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.gq1.yahoo.com with HTTP; Tue, 7 Dec 2021 17:54:44 +0000 Received: by kubenode549.mail-prod1.omega.bf1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 3d971335fc2539562371d96b1a1dc123; Tue, 07 Dec 2021 17:54:42 +0000 (UTC) From: "Alex Xu (Hello71)" To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Dec 2021 12:54:39 -0500 Message-Id: <20211207175439.114132-1-alex_y_xu@yahoo.ca> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 References: <20211207175439.114132-1-alex_y_xu.ref@yahoo.ca> Subject: [FFmpeg-devel] [PATCH v2] webp: implement FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM 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: "Alex Xu \(Hello71\)" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ju5I9oqJdsJG Roughly doubles webp performance for common applications (ffmpeg, ffprobe, mpv) due to speeding up avformat_find_stream_info. Lossy needs no patches since vp8.c already implements skip_frame. Lossless needs hook to understand skip_frame. Also the "image data not found" message is fixed, which was already broken with manual -skip_frame but would now be exposed in default operation. --- libavcodec/webp.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/webp.c b/libavcodec/webp.c index d5a81fd527..e425bce3ff 100644 --- a/libavcodec/webp.c +++ b/libavcodec/webp.c @@ -1126,6 +1126,9 @@ static int vp8_lossless_decode_frame(AVCodecContext *avctx, AVFrame *p, h = s->height; } + if (avctx->skip_frame == AVDISCARD_ALL) + return data_size; + /* parse transformations */ s->nb_transforms = 0; s->reduced_width = s->width; @@ -1339,7 +1342,7 @@ static int webp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVFrame * const p = data; WebPContext *s = avctx->priv_data; GetByteContext gb; - int ret; + int ret, got_frame_chunk = 0; uint32_t chunk_type, chunk_size; int vp8x_flags = 0; @@ -1392,6 +1395,7 @@ static int webp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, chunk_size); if (ret < 0) return ret; + got_frame_chunk = 1; } bytestream2_skip(&gb, chunk_size); break; @@ -1403,6 +1407,7 @@ static int webp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (ret < 0) return ret; avctx->properties |= FF_CODEC_PROPERTY_LOSSLESS; + got_frame_chunk = 1; } bytestream2_skip(&gb, chunk_size); break; @@ -1524,7 +1529,7 @@ exif_end: } } - if (!*got_frame) { + if (!got_frame_chunk) { av_log(avctx, AV_LOG_ERROR, "image data not found\n"); return AVERROR_INVALIDDATA; } @@ -1565,5 +1570,5 @@ const AVCodec ff_webp_decoder = { .decode = webp_decode_frame, .close = webp_decode_close, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM, };