From patchwork Wed Dec 22 03:19:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32818 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp6019554iog; Tue, 21 Dec 2021 19:20:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJxjkqAPu6JdhSAlP0fM0YAJsjOQK8KChr70vsApRXhKwRcz0Liq9nMCV4Vei3+RshrUhkWt X-Received: by 2002:a17:907:7f9e:: with SMTP id qk30mr934247ejc.238.1640143202027; Tue, 21 Dec 2021 19:20:02 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hp19si335930ejc.348.2021.12.21.19.20.01; Tue, 21 Dec 2021 19:20:02 -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=@outlook.com header.s=selector1 header.b=DeNucTNP; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 158BA68AF78; Wed, 22 Dec 2021 05:19:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2070.outbound.protection.outlook.com [40.92.91.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5FF7B68A306 for ; Wed, 22 Dec 2021 05:19:50 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kfJP4J7wXX2zFMhnHan5WhFvD6S/xiob3qoSJCeDwXimElDZjchvGbP5Lmq+xqu89SBIEq3h3BpLEkUMOCN2Ma66/GAjTwcNPxUPbkKg9I/e5wSIETJIddCwNVGNk9TR6uM6UcRebD9FZfj3hWVZOillVhVg3coWySB/0grh/1WeMA+szzKRTUyyG4Wyy87zCkWF03aubTsyHse2YHtHwLQ5MSZN8sh5z/zfYgQbwPeuJ0Bd9iw/h3LLdmHGvL7r+y8GSIfUAhU5OBXn7HZk2ZIT2k9coXGosCpoJSVgfvUxIqonx2NIWuD0FXlyngYlywqR+NHArZwAcOUVUwQ9Kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eR8EyPUYNJk2pIxIkxBXmSrWqrbz1Rw7Ko8nymNju34=; b=aDnAo8oRfIbtBKHCS/HQh7Gw+54fH9w8ndimMKiROOOa4oStF6RpfaR/sFciIeYCWiVWQQkIhqYR2mY9SA6c2l4I1OkBhQ2B4U1tL6F+LfSlkg/EElXX4uingJdor4JFbZbn57Cn7OB+HzKmd47EenXa2bjeyTvWU8hQXG5z56iOrmpWAftfyH8VYM8EyrkbNrYHZxGD10LsxfUkQ/iVgwvCDrEPNc0ZhJCBDnTuaFmfuzUppm1LNbAeIz5JvfGt3BPVAvhrvTVDJWzOV33E32sk0cJ+GozYIJd2LkBGXMRWEA1fZHIzADZNtupm8E83skH2stf5swqO2cjNh3OjGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eR8EyPUYNJk2pIxIkxBXmSrWqrbz1Rw7Ko8nymNju34=; b=DeNucTNPUOd4Fh+x3lxmdDzClTHe3IzDVzFe5sYMool2sNyxEMpQJ2t3lkkFHyhACvN6/kno+o0VgITtmOtKmk3x0cZDCAaATiDxSeYVMTd0LRDvEWVRn/VUnbuhorxkAjz5nxcm71f7nU0WBB6S5dMVvkuavSvzwyNfUHJ93Q10u6HFoVRVM+w9FAa1tjqZZvjkMIo5mLU5Y4LYSuhAjFGfDhWHNHVjV5IQxzrLSiwOff/a5Jo+8kZ/p3ymRmrsdHhlbeaBIvsszYGgSVh09+iYnME7QmP9HzSX7C9bQxiFKEbsYh13LMgyttnwJQwsrrbRWau8KGdfYSbzrnQsNA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4455.eurprd03.prod.outlook.com (2603:10a6:20b:6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.14; Wed, 22 Dec 2021 03:19:47 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%6]) with mapi id 15.20.4801.022; Wed, 22 Dec 2021 03:19:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Dec 2021 04:19:27 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [sMpUnv41JULQiYh8kcaaYa6vkkRki/ux] X-ClientProxiedBy: AM5PR0701CA0014.eurprd07.prod.outlook.com (2603:10a6:203:51::24) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211222031940.895592-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78408208-e781-43c0-0b52-08d9c4f9e866 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWm3GLoeUntTG6KfWWWbWhlyE7upGJhzyvBYLHBbYdjmcCKWb2ASNfNdmn6YTkdOQxY9iz169jtEN8chCHaXl2wyH0hEr0DCOsuHwAZYE8t2Z+lWx8/dVMK53uhblEayd8smPkF6PIiEHiNClLlJLSjUlRWEdcL+JtEd7dlt5EhUK/aO/Rs64V6Q+5elBAwzoy3x8dovVy0HwJ+1Qn+R5Vfie9LBkJxOCLPY+I5QloHAkmeq57FoId/ArQ1WgvnlNHFw7JPXMinkLZCeRkLlfD1L6UftBGfoFZ3muxQ1hZ4oAsHl6TKLQp0cjH2Yv2AduzYTbSeNOXpF2zCbLyENhQwL/UJaBxvFnVDlVL5fxGk1/iZvqvZ1RyL7LqzV8BGA/vsTAoe+91urtZzqmmPelouLrNMWF1KNSgAyT8yPPN9Pf2jBfnYZIh518bB7gItxymEdZnUft8Qy4pMUaVA5HuQ0LpYcwlW/0yBdgm3p7Kpxr4SBWObfHDhmt0jdHOwN5ANonvB9u65mOQp3e2Jg3B/McJuKXkdUdfTnYAi5nh/0KYpP3Y+r2s0DbH1hsltyaKZ9fJwrRFBot9U/s86R8pYqstSXkYLM1BOtoOMFAcCtANlWZfYgUiRz/x2fylL+jMzOibgVU7Ql1A9+oSYe7Ho9ebiKKlvtES1u3vf1q/pLfMrHKyuS2SIeto4d3l8LduobuIO2MGwiAvTuJE3cq6BBZ+MmWfp8DY= X-MS-TrafficTypeDiagnostic: AM6PR03MB4455:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Znn0zrq+3CmIrqweH+RJM6jblrLElkBoFa6F0a8+WvEge0BSFRqvLn+Ypv1igiFORPeLhrQaJ/FFHZaW+0HW0HBj5tYBAnpi4K4ux9pv3ht1eB9fO28e/JnVp+2y2DvUri07veA9oLcJjXfZ6VyvlKd7kkVGO+l2TdoO9kHRpRBngWJjJNfw2t1vPPl2rAEI8MJPDz10QGBfussFLMm9b1jyIvz9jmmzjaxzx/Iva9BxCwyuUaDLW2tPWoVMg5jUzngnTha67Ukp90nY2qwhZb46XmNcnwL3TDun/wVSzCiBQf/fLSFOfiDRahovl9nhN8gHioDyxmjIWIGdiTq4WJzABJ5VMuYL6nNwTzTOjk/7FF0Timc+QdMUtBysk/XYQcmH/bMU12fhGsYhPk3PxLxTWpBQfBSr5zv3X47mwJbckpctyhM5y8QO+dhWILL60sFIRHo9c9NYvwhDXsJo1FN5lXltz+co50mOPtcr+A5NimBIeDuAU8QnyETush0iZ0lN2iKmkrhkA/9YF1M+GGBOhvl6jrS15g0JZ6fy3e2tprZuBz1Ihr18uEaAT0e+DlcQCJiIu3qNGZaZO8B7sw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t+I4gXeA1KakXajDO2RmAC0/k7v++i3u/Rkf4QKvn0Axu6BJ71b3SASFvbfgxiVQTspfi2/FTp+OBcDHpq8DAvVO8tvMqCQqeQLQ8rYq/rxnYYJmUnMhdm/vayiVqNtx5KRzBXMkUeKGX7V8LjIZvwR2tgeLZftOX1cihyB5pJSqLsL2xU8Eds5tF0x4hMOEyEMUNpMJJGw1SDNB1H++m3Y1SeOFh0IqMInWsiuhgL1VGrUAFcYn9fgJ3mm+DHEMHHxlIH7+6H+ztr/7CMgd3LUPNaKdclGLDVnF1+bROFZiY/5XHZJL/v+z4z9o9zSA6aJHkPRl/49DnibMk8AFL21dwQlDcEV43Xpt4yQEajDDBfV97Xc51h/iOyyZ1yx1ABF3FuCok0L8xvJQJx+HJWBwY4dviKEnHQ3W6ev0nGsqDGDlfKO7E/AsegHsd3Zlivfe5dDTYlQB4DAnNeGVgMP/2zvlPuOAQ23lQ0n0Pc5597l06rx+jkGBXihEkNx3sfX3A8VjBHeYsQCY4nxoOk1Qq7zTmMRlpA34aEz0fpePN+HhjhpNd9gcPXP7wW2EZAZ9YOBHGBVs6LXMLQGwdiRUklAR8j6zktAENl9dBMe6x4rz+X2acIoqrA60uaRjCP9+o7GuZzaWdUxVk4nkTRTtSRaqTWbMMsbI+8w/nCAlVD6RvwG2+SUROWsNZXqSfYWbtoZVkJ94WXg/y2Gacj4E2QotOF0QUSPdnOgXv27KqsIBp4bBh5DU0YjWd5q5N8bVhqMYlK2a+m7XkFuLIEu0OYk4PzRXQ5013tCpEQcWSZHkz5M0OhBinkR5XIPQIW4DBkFEjZG7vBnkZOgSk1OeihFf7VBGOLdnAraQbjvnKEFEMJa+UNndL4MtUGc2MSrBgSipuLM7+ORTL7kWo0BL67rUzsPoOpNxAGhK32p2Pk7goQuTkVVSjhYCvOxgdT1xoi1IsprRPQ3fETGWIg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78408208-e781-43c0-0b52-08d9c4f9e866 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2021 03:19:47.8600 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB4455 Subject: [FFmpeg-devel] [PATCH 01/14] avcodec/mjpegenc: Use custom close function directly 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kHW9OEyw+Wtu Currently, ff_mpv_encode_end() is the close function of the two MJPEG-based encoders; it calls ff_mjpeg_encode_close() for them which adds a check to the generic code. This commit reverses the order of this relationship: The MJPEG encoders directly use a custom close function which in turn calls ff_mpv_encode_end(). This avoids the branch in ff_mpv_encode_end() and makes the generic code more generic. Signed-off-by: Andreas Rheinhardt --- libavcodec/mjpegenc.c | 9 ++++++--- libavcodec/mjpegenc.h | 1 - libavcodec/mpegvideo_enc.c | 3 --- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index 0ade66bc5f..5bd25b4f3b 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -320,12 +320,15 @@ av_cold int ff_mjpeg_encode_init(MpegEncContext *s) return 0; } -av_cold void ff_mjpeg_encode_close(MpegEncContext *s) +static av_cold int mjpeg_encode_close(AVCodecContext *avctx) { + MpegEncContext *const s = avctx->priv_data; if (s->mjpeg_ctx) { av_freep(&s->mjpeg_ctx->huff_buffer); av_freep(&s->mjpeg_ctx); } + ff_mpv_encode_end(avctx); + return 0; } /** @@ -618,7 +621,7 @@ const AVCodec ff_mjpeg_encoder = { .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, - .close = ff_mpv_encode_end, + .close = mjpeg_encode_close, .capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { @@ -647,7 +650,7 @@ const AVCodec ff_amv_encoder = { .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, .encode2 = amv_encode_picture, - .close = ff_mpv_encode_end, + .close = mjpeg_encode_close, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE diff --git a/libavcodec/mjpegenc.h b/libavcodec/mjpegenc.h index 2e92511276..bc9b017e7a 100644 --- a/libavcodec/mjpegenc.h +++ b/libavcodec/mjpegenc.h @@ -105,7 +105,6 @@ static inline void put_marker(PutBitContext *p, enum JpegMarker code) } int ff_mjpeg_encode_init(MpegEncContext *s); -void ff_mjpeg_encode_close(MpegEncContext *s); void ff_mjpeg_encode_mb(MpegEncContext *s, int16_t block[12][64]); int ff_mjpeg_encode_stuffing(MpegEncContext *s); diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 128d1a327c..d2520368e1 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -970,9 +970,6 @@ av_cold int ff_mpv_encode_end(AVCodecContext *avctx) ff_rate_control_uninit(s); ff_mpv_common_end(s); - if ((CONFIG_MJPEG_ENCODER || CONFIG_AMV_ENCODER) && - s->out_format == FMT_MJPEG) - ff_mjpeg_encode_close(s); for (i = 0; i < FF_ARRAY_ELEMS(s->tmp_frames); i++) av_frame_free(&s->tmp_frames[i]);