From patchwork Tue Feb 1 13:06:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34008 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp607125iov; Tue, 1 Feb 2022 05:15:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJzIlI17uWfCyPd9eLiXL6g4yzOr3XXV/n2MDJ2nxBDeAmAHPS68Wdu3Ylc3LGDWdhqNNrcd X-Received: by 2002:a05:6402:1d49:: with SMTP id dz9mr25090284edb.238.1643721330269; Tue, 01 Feb 2022 05:15:30 -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 l9si9289750edq.371.2022.02.01.05.15.29; Tue, 01 Feb 2022 05:15:30 -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=DMYo0oKZ; 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 711F068B39B; Tue, 1 Feb 2022 15:08:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075035.outbound.protection.outlook.com [40.92.75.35]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 61CA368B317 for ; Tue, 1 Feb 2022 15:08:34 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WdQ25ui/m5lEgXIfxXGlSBXgLjhI7v51YBut53xjyWrZnBweKhd0t6oc7+pprimSMH5gMCvuiVmjmTdJuB0qpDqMGImGOo9RmB+gLZNpIBEg1A7F0ioivsFc+uHoRtxFW2Oykw6nUGf4OXszl+OCCOugDVDHWpZUr64ZKEdScDS0PztXmR64REvIs4pzKhJyjVLgRKXGbX12e6vFxAK+dcjyHKBDLEL1APg9U3CalArHiYcmmD4Z0fT2DzibUakmjpOAHqQKTrGDcnX7JgrbhF6xkEWnsITfjy3F8rueq4yjuMQtUhV+/2RzTDRXi1JQk8EHyB/HFPZLf8fWreM0WA== 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=/6gMQQRovV6JdZl1wgXniQ0MBAoSg2NpjeZpmR3WwSc=; b=VfzB2A3c74XlHO7pGmA+xt0yxYQaJbDJZLacH3cBowMmwQuWfJPyYWtys7BgTIvjzBfTShKaEDAeDN4a8FrcmOxLc7sS+IxVxxWh3V8pEzMCOH7R5qKM0URAWRZcMZnyoDgnCV1/718OeUjhmnYNCw1YnMKe3x5C3UxuY2Vr8x+v2W3XetcsnSvq4D7IT0JKGHKft+b1U+QH4pKzjQxpEmYpKzoXz32kHWKKq36bU+DfSE6SR9CEIL4KbZVMJ64NGlbbLnXNHiUFOUiqg1zGqs5P5dK4oh7EsaB2GIhsP8gaeoAvNaZ079DMb2rQ1prX4Enoa7ePniXZlhX7JZSm9Q== 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=/6gMQQRovV6JdZl1wgXniQ0MBAoSg2NpjeZpmR3WwSc=; b=DMYo0oKZEvVZQXr2NGET7W/r56TRHpkijHskwVrtMX05mlByZx3FnCfLwBDq6AEHwr7zJ1igqUsI7wZ5fCVuZP0hDMyKY+oXgbeewnROqgTinghu9xw6k0f/kDrO0+dC6edaSAGSmWPvLyn0ZbGh4L2+u3x7KZW1HLIY59Asz794oREtIzCYVZweTe8RFx8KI/KCZZyMvGuuTb6YFvOt8BdIu572lXOSTIrLgQGeVTU1JWKLadbx9mGurO6U9Zv2B7GfrKzFyOjfbLZlYp5G+//DC+3rAbj7PerIlZmXyIO+JusOjderQfhAwjKGTGk3CmUKm16DeCh/AsHUVfKDYw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by HE1PR0301MB2330.eurprd03.prod.outlook.com (2603:10a6:3:73::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.22; Tue, 1 Feb 2022 13:08:33 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%6]) with mapi id 15.20.4951.011; Tue, 1 Feb 2022 13:08:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 14:06:31 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [tocQ/tblljAYxCxGzhV4VZ3dgwsrQkCu] X-ClientProxiedBy: AM6P195CA0092.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::33) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220201130706.1420875-33-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 714ce9c8-4e6d-4173-a68e-08d9e583e11b X-MS-TrafficTypeDiagnostic: HE1PR0301MB2330:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YMTrppuTj/ITSo4V/PwuL8ak1Jym1hHBnMEuwJaqLb7SE1l3YyzwiIWsZxuxj6bNEcfX2UmmIYesLEvXtctXAhRjMG5A1FTqigVUe2e/Mkh0arAfADjlHS9EcbAmn/RRZi6Smp5d9oeCe6gWXcnykuh066nC+Zms2rooOu9Tfau8qmhaztxlkYoh3/Pz8yqhw5o/D/lBCV7axmMHq9hHg6RNYke/pMhwcE1f+yFZq6o+lNy7Ykuzm+/8cCiscpvFXdhrmMXk36c/rIfn5FgVcGY9VS4WTghHTXzApnWrJV2kqBeDaqZmuS+ZpyKuhwH8mxaYD0/xh5dITBRwJS2XKRj+9KOUT4sg0DKTcU4GQ7vKfq+eWgWXhF8ewOgZAhTDCcVNccpJ797yHFhZ3xX/NwJ4ATUmsesQm2m7YvZQXhyJobmlrpY20xBpKYqGiRF19Y/T2LKm6fVE9uMiTGDaIEkCiYwlbEO+t1N8UANLCfKkJxUTe0O92CBn5eGGM0/QrlD7PBYUXGpos1prsikqL1I0yyn1LkjGtD1iP+905oHC3bXs7bYQbNt7rrGAt+2w X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 05RwZiiD8IlyIU0kXhuC+1H7yXuBcBSPW3ypDLB5MIc3M2V9+RaZWCr3TV9L6mthMHpvvcFPlpgGSUoHX+dx6NmzwxVOswuHxp4NCFQ5sipvQ1Bvp+M2YAQWOs/5QzDYgsOXI7/OaZfIrOuup9GCuyLVX3AqweXSJ1mtgJ2AK4bWSfj+Y9kbP1YjxmjrTFlHfElg+uRFedAsG/cgPLbWXYY4mPEm/mtC4wpHq+ZgFRGi4RlmJAwQw6fwreuyNkX9CHeyUb8Gm77quYUrTRkn9h49bvnsVIdVNaj9c9iK2nykvW6NR+CyFUOZVrV/lrF6oG3rPkEY5v7jFqwAJ9/sGNaS/KZxEGCHTt+njYqn1FNq9Q3g0ciWgfX+kRBOl3z0ng3lx4KNaBzXGme9ryrUYrzTW3xpH95TRGs3Qg5knxtw5AnalSp/18mvaqcanPdjNNiXcOStJdjdSVV/940moG4MaaPzIc9e4X1st4diZT6JBnu6/fMIJljhYGSRb/tTB+eiYpk0q00sLI4V8VmCAbm1UOJ0an/b1wfRVeZbhFTrAZ6/ZYBQzaGZfVCbS21SoUdLldc6WLRxvBnh1gxNFq9gSrZkHcp1QDaxP2zbZIPNPLzUPw0Xx10AUHJ1ZEyrhNs7dOPmHR5WyM6JKHMyjB+nwIqiUiIku59Ofz2aHqJGwyqaOA7nYnGUCvJo7kslqsfci50hkxWTOiZMLkW1fXaUfjctaIqdD+bBHnoUX7vid17ZydpbKSSE05GSwUavW/+8GMHRNgzZJZdAu4n/LtAWFcTFK9TVBlXqgMlUAe7FKnaEiT9Md3o6zPTezyfBQ2w7hVBnucDVc7CO0i52D/IcZactGx402xDgGFHg78oOu4DqNX40CBRHlOc0h7rEsTzMTbB7Hzt8rzCfZbmbzfT939yNQlJy0yf54aUzg9Edm9Q3tKyqZRnx/qGLAWomvExAfBGNQOXztJRlhw+HBg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 714ce9c8-4e6d-4173-a68e-08d9e583e11b X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2022 13:08:03.0891 (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: HE1PR0301MB2330 Subject: [FFmpeg-devel] [PATCH v2 34/69] avcodec/mpegvideo: Move picture_in_gop_number to MPVMainEncContext 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: WQLqcgyo+pdM Only ever used by the main encoding thread. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.h | 1 - libavcodec/mpegvideo_enc.c | 14 +++++++------- libavcodec/mpegvideoenc.h | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 50c0fa42c4..08c795ba17 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -107,7 +107,6 @@ typedef struct MPVContext { int input_picture_number; ///< used to set pic->display_picture_number, should not be used for/by anything else int coded_picture_number; ///< used to set pic->coded_picture_number, should not be used for/by anything else int picture_number; //FIXME remove, unclear definition - int picture_in_gop_number; ///< 0-> first pic in gop, ... int mb_width, mb_height; ///< number of MBs horizontally & vertically int mb_stride; ///< mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 int b8_stride; ///< 2*mb_width+1 used for some 8x8 block arrays to allow simple addressing diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index fd3f458fb7..86f2b5fcb1 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -292,7 +292,7 @@ static void mpv_encode_defaults(MPVMainEncContext *m) s->fcode_tab = default_fcode_tab; s->input_picture_number = 0; - s->picture_in_gop_number = 0; + m->picture_in_gop_number = 0; } av_cold int ff_dct_encode_init(MPVEncContext *s) @@ -1381,7 +1381,7 @@ static int select_input_picture(MPVMainEncContext *m) /* set next picture type & ordering */ if (!s->reordered_input_picture[0] && s->input_picture[0]) { if (s->frame_skip_threshold || s->frame_skip_factor) { - if (s->picture_in_gop_number < m->gop_size && + if (m->picture_in_gop_number < m->gop_size && s->next_picture_ptr && skip_check(m, s->input_picture[0], s->next_picture_ptr)) { // FIXME check that the gop check above is +-1 correct @@ -1465,10 +1465,10 @@ static int select_input_picture(MPVMainEncContext *m) "warning, too many B-frames in a row\n"); } - if (s->picture_in_gop_number + b_frames >= m->gop_size) { + if (m->picture_in_gop_number + b_frames >= m->gop_size) { if ((s->mpv_flags & FF_MPV_FLAG_STRICT_GOP) && - m->gop_size > s->picture_in_gop_number) { - b_frames = m->gop_size - s->picture_in_gop_number - 1; + m->gop_size > m->picture_in_gop_number) { + b_frames = m->gop_size - m->picture_in_gop_number - 1; } else { if (s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) b_frames = 0; @@ -1689,7 +1689,7 @@ int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, s->vbv_ignore_qmax = 0; - s->picture_in_gop_number++; + m->picture_in_gop_number++; if (load_input_picture(m, pic_arg) < 0) return -1; @@ -3719,7 +3719,7 @@ static int encode_picture(MPVMainEncContext *m, int picture_number) s->current_picture.f->pict_type = s->pict_type; if (s->current_picture.f->key_frame) - s->picture_in_gop_number=0; + m->picture_in_gop_number=0; s->mb_x = s->mb_y = 0; s->last_bits= put_bits_count(&s->pb); diff --git a/libavcodec/mpegvideoenc.h b/libavcodec/mpegvideoenc.h index 09dabee223..a177b2d6c6 100644 --- a/libavcodec/mpegvideoenc.h +++ b/libavcodec/mpegvideoenc.h @@ -43,6 +43,7 @@ typedef struct MPVMainEncContext { int me_pre; ///< prepass for motion estimation int gop_size; + int picture_in_gop_number; ///< 0-> first pic in gop, ... /* bit rate control */ int64_t total_bits;