From patchwork Wed Dec 7 19:02:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 39652 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp874233pzb; Wed, 7 Dec 2022 11:03:20 -0800 (PST) X-Google-Smtp-Source: AA0mqf5DSfiAsDOwCZDTzHl9MhGRgoNbEjSmk8kTaa5yD3cDZzWmGSN5g6Uvc749/KC4j/ubfzI7 X-Received: by 2002:a17:906:3a15:b0:7c1:b65:ad79 with SMTP id z21-20020a1709063a1500b007c10b65ad79mr6879400eje.402.1670439800272; Wed, 07 Dec 2022 11:03:20 -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 q20-20020a056402519400b0046b3407a453si5502980edd.162.2022.12.07.11.03.19; Wed, 07 Dec 2022 11:03:20 -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=fuDEasRH; 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 D3CB268AF4E; Wed, 7 Dec 2022 21:03:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2025.outbound.protection.outlook.com [40.92.59.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B49CB68AF4E for ; Wed, 7 Dec 2022 21:03:03 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D5UgcG1n7OhvxwBcfnPR8oFB5z7b7lDnT9DIHbo63eVsjWmr2GynH3Upz2ahM48IKl6Q6MshPb6DQD+ksE3u7H4vp5QB5eREUpAdGCrjzBkev0iYVT7rufagIE6ftzhRVV3JndtAUIcC40+wcukk+rWGuB5Q1rfWx4MMuEND8ka8xcYRShlyeWG1tg1e3OhTpLj+jXKkmGr/Rez53SfOhl50xJWACyFMnRTOnpd4+TcWQkHE4yOZSi5OH+WJLU/DevfiBhohN1zqoh4+pzryZA7kQEPx6Dc5JnKjQeQCblczhSPUwPIbjw4o5ux4Z3A/jAt+sV8TBtAbx8qzipVkHw== 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=jdyyLkDTqj4R/e8x8zqbRNQZvyN1a+PaRQBB9wbEd50=; b=MQ5u8pkhjBbOwFe/KDwZGLt/1KppLYNXsWe2B9nzfCgvwGIfVdWzureW7JUk+5ze3c/L5uouDdojdFUCK5n64oD0FCbovmOfnX1urgAXoZq3B3oGLTWce11vXHwQxBDVaW5YYJDOR1h4p2FC9d3Xo4mGwS8L3p9CTTETGWpIvpnPnZxQNWCTF1U9xWYoKyWckXjTKMmA182+vR4jb5SCE43nbutY1heQWuNFsXan4kNryOLGT5LIbR2G5vk3VgV47kSXHsVgXOR4Rd6nKiQ/RFxJh/pEAKxxDCKT424dA+XO+0TK/oVwTrTIFEThuNJ7f+9lRtQMLAsu2Iz+zYyuhQ== 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=jdyyLkDTqj4R/e8x8zqbRNQZvyN1a+PaRQBB9wbEd50=; b=fuDEasRHy/XpCzXBf8llgsk4golwon8Y1lixofmgNIER3V543PE8j6K8qQv4KKGoPobI0LqxQPYQTL+lkeY4bUaLj5XXOy/ApsuOFofUPHcddUXGIlh/aG4hRuNp+LKTnA2qU6l6ApFZoJrtQ+xW+/UaEvygDIyi+uovg/3xieeWRWQMe1XPUdXvz/72cxl5ta4Zp4IEHYBjNRbSB00R/BXmgLsSTtZeIuIBMOpsqeIGO8yqE1YzsVA+Tqbo0KZZhnKuQrfBf8tcWZ3sLE7ma1zBwMFdgJvnBShahUA+FcpYD0ldmYhzaziZw7x0DFjMXpsBYN4A+/CUNqzJyVJJUw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0462.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b1::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Wed, 7 Dec 2022 19:02:55 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::da14:61e3:630a:70b5]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::da14:61e3:630a:70b5%6]) with mapi id 15.20.5880.014; Wed, 7 Dec 2022 19:02:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Dec 2022 20:02:50 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [tV9c4ar+KLWBOKdyg0EbxZ6S/fG62qWB] X-ClientProxiedBy: ZR2P278CA0043.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:47::17) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20221207190250.1724895-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0462:EE_ X-MS-Office365-Filtering-Correlation-Id: 68c5df20-0522-4908-1c41-08dad885a5cf X-MS-Exchange-SLBlob-MailProps: feAVlmA1hHV/PwpqnNcqbRSsN4qoZ5B2d4eQL+0zFVQcVuczQY/CL0izQ6mInsFa4iTMZf8LX6ul7/stGpGhwnb/iiu0gMACTbzITODZHq6p/ObBCwUUZFgc+7jsT5EUYrbqN3locTcpGo9A1nOEJfVUKh3e93TcKhEwjuriCTru6yVWJfUtPJrC+B5Gm241OzS5Lat7UbMSDLqsnNKJbJRfOxSI4vmY6D+PEAF7nBu4WGJ/BWPM8IDnz1CMNxjSFur5cUO0o2XQeoZleYi/rZLujQt20TZvw2pnJVJH0Bzjoi8kG3Qlsh6k8RormOY0EHQNmhsGcUut4hm2cNLASl1tEWrqn/WdOK4HCIxzznjqSmHOJhmSe3SlsKvcFoXX2UzzRVsaV0BQcL9lDRy4joYgmIblBoRTsK5yM5Cyy3T799WvlC1Umpamv2MoKOKSgB8R8+yqn4Zf2JvOOHEXhV2IwHi1EFxWcDWCOBefPcOev9orz2rzCdIslb2DrCqw+So0JLl5loNKvByzMm661qBUJbJRbQg5ivFpKmhzMV/CvE60esoY7jQZLZBknG0E/kJwQG7FQvF7Rd/hgXnB1NDylWaVvjPygFuhrZZ5iSiZU4Dm0qxw3KI/dmyb5zndgHd50z2qiGB+bOzjeV5dGgWMefJrER683dGSKuQxeY+41GMH3JkObVZdycNgPiqee2L8hGqYh68emaCWhaqyWw== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: llVzDsSJbLcKZk1RQfgxNzHvzyjf8RV+RV9jZcu/0fBuT7sjYhi4KJJKKqBrS/h+VKUyM1EEGXR7JaHCayaeLR5yBrZKfkYgcnHKKxPBzVken48e06ok1XFF2uyd2nhPAoP7fn38K/H4AJTpMKkOAlFEKbvyYLkPbzOTH2hP2IPYSYlUO4Plf+5SSuoGtA6dO6s3fEvF3CX6HNM0qiIR/aZnAlDVsG8gWkrOArvawVPIKHZJgLG3si8kofOrTVMJqQhLyVCkArRuSRZicRXGlhiNmw2XpDF8wKFESf2I5gB6I9TqYhHzuouH04fQf+MEpJ28ULPxVebiQrl79rkHAZCihkDLohisL1L/iFXvy2asA+ALSxtla6ai4yScHW0gH0KC0jSWr32tqnMHAEVzq2oDZW/G5KP7/BTRHsu5/n0suCXBNIAAgxbB4Zi0yCloITGeB6kUsSLDOEWJwLT+vOa44IaMncPc8rK4pgQ028DWSeVGZHnwMppMLhcakj4/VppnwCqlr1zU2U/jsar/HkpZaE4aS1uq1Wq2Aan9uuzzJkOSeqcmvtqjgbUMpf8hRZ78B//qPiU1WwTKQ2jQI5+5E0rhQqUTnC1O8BfWfrNxUPVtRaHHLtwXBPE25CjaNMQh4AHIffV05vSCojAw6Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3dLFMGx8AmLOx1rdNm7vRZ+WibJT8a3T2sQpniWZt+A/uYg43OwLCfiP6kPcCrWyBw5z3T7OH1+bAB8hzSG5eFIUFlxudWu+UYMRDwPllMoDLmXM/vDX5TF9G1TajM09NRrYFra+50bFefwIdkrBAuhiIW6Wq/kS22TQrMcjjUR3M79vQX8UCpxC/y39zuVTyagTY76ko6DXtfiHEhxZ/NHSfr1nVRVzDK0aabRo3iS/K0iFVeth7A62l+5pwx7hDCRftxbMxo1W2dJduW/9ATmMwX2m+q2wXjD47sZ4PPt+rVl0rRt7l+YHium3GMCN6IjIL0GHURY6tMXvkzasrl8Z6iA1k61YkI0qiGV+/74cMHcsv7WvEtpp/t/K2UiNbeKB665DF9eOJcpqgVI+ZLnLcmcs16QZQL9rs0/wi79SGdrdoUM3JvyiUGvimMb521C6hv33JCEuRBIol+5CPH+0wQoQqWPFd2BfF6iSbEqJONHCVxQkA5JP0KxsU7D5xeHHLI69i+t5/xSsbMIJEbr/Xna7UeTs7EOziELZbA65jXAcoSOJ/HmgWULOFmNTDsbliR5sYLacREDJBGsqAk9F2cPp/6iFKS3PYCT9R8IBJ8qjtM9KsvtCWvR+bew8nCHl03/rJzmuIBls/h/tDPIHXXvP3JFn8DY7t6H+qtJwunk8pBvfVuzKLu+VNYWF72ArhfXv6FSSpKSsYK3Zbel+X2+jTYpou4Zz97y6U9XGsh8FWycJCpuqjRXTzVD2thXfXU2VxTzyJK9+Jq2dO/byLuRLB+UmYllbRiEK5Jc7Z/KMQKA1/ZlgkHxZh+TTdTxw0smDn/VpI6NxFbral75HRkINLBtX9BqMW6Up6+irg0tktO+oZ16buktE/Sz0rYCQi8W0WaU+rfoxOIBMKtD11iL9TxJegqsWFeR0cJ8ZarF0KX3Q55UvCvFEExjiYMZA6cvYE4PZJAbT1mCxKt0dxRyzzBcUjz9hGZVs+coh9TbIOWbymNZUlT8ZXEnnvowzb0cqmCdjNzDMS6bihMcuH9McTinQCoDF7dHLHYB8bJ4oLyZKFBzPudUCAUpFIXJerbm61HlIx9KhdknOBbT8DG/Oe1xuP9VSPCl9rNs+1LVit7yHqaRr9FpXWjyri+uRrtcd34M5m4W6TaTxZCwlhJqcjgTfHAJvVo+FNuDX6F/6CGib5DE0+AmI5G6BRi+3cpQXRHY1xlnGapUgrBJ0vTgKbIhUfzevbr+aY/H9MGPGuBqbUAykiA3RxqL/QxAC7WDOaPrwYFHyg3DK6D6CvYPWQTxzJhOqrn2O++A= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68c5df20-0522-4908-1c41-08dad885a5cf X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2022 19:02:55.2441 (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: AS4P250MB0462 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/mjpegdec: Move smv_process_frame() to other SMV stuff 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: 9UNjKLOipt4P Signed-off-by: Andreas Rheinhardt --- libavcodec/mjpegdec.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index aa1a6b5208..ea6f724049 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -2345,25 +2345,6 @@ static void reset_icc_profile(MJpegDecodeContext *s) s->iccnum = 0; } -// SMV JPEG just stacks several output frames into one JPEG picture -// we handle that by setting up the cropping parameters appropriately -static void smv_process_frame(AVCodecContext *avctx, AVFrame *frame) -{ - MJpegDecodeContext *s = avctx->priv_data; - - av_assert0((s->smv_next_frame + 1) * avctx->height <= avctx->coded_height); - - frame->width = avctx->coded_width; - frame->height = avctx->coded_height; - frame->crop_top = FFMIN(s->smv_next_frame * avctx->height, frame->height); - frame->crop_bottom = frame->height - (s->smv_next_frame + 1) * avctx->height; - - s->smv_next_frame = (s->smv_next_frame + 1) % s->smv_frames_per_jpeg; - - if (s->smv_next_frame == 0) - av_frame_unref(s->smv_frame); -} - int ff_mjpeg_decode_frame_from_buf(AVCodecContext *avctx, AVFrame *frame, int *got_frame, const AVPacket *avpkt, const uint8_t *buf, const int buf_size) @@ -3009,6 +2990,25 @@ const FFCodec ff_thp_decoder = { #endif #if CONFIG_SMVJPEG_DECODER +// SMV JPEG just stacks several output frames into one JPEG picture +// we handle that by setting up the cropping parameters appropriately +static void smv_process_frame(AVCodecContext *avctx, AVFrame *frame) +{ + MJpegDecodeContext *s = avctx->priv_data; + + av_assert0((s->smv_next_frame + 1) * avctx->height <= avctx->coded_height); + + frame->width = avctx->coded_width; + frame->height = avctx->coded_height; + frame->crop_top = FFMIN(s->smv_next_frame * avctx->height, frame->height); + frame->crop_bottom = frame->height - (s->smv_next_frame + 1) * avctx->height; + + s->smv_next_frame = (s->smv_next_frame + 1) % s->smv_frames_per_jpeg; + + if (s->smv_next_frame == 0) + av_frame_unref(s->smv_frame); +} + static int smvjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame) { MJpegDecodeContext *s = avctx->priv_data;