From patchwork Tue Nov 24 14:41:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24024 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8123E44BE45 for ; Tue, 24 Nov 2020 16:41:41 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4FFBB68BC63; Tue, 24 Nov 2020 16:41:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1F1E168BAD4 for ; Tue, 24 Nov 2020 16:41:34 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id p22so2624538wmg.3 for ; Tue, 24 Nov 2020 06:41:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Z1V88FwuMlgKnS9hRtkLeDXA8Vs2jJqcH4PEusY0mo0=; b=GOSA5i7J3HAJDsxLdQqi5u6z9DY6INyAzcUCs4Xzx3HNXQfee0dwFFhvTpQaPJG1Qd jUhKglFZif8lQ2cQHmALlZHhuUh3IwOkHohpZQ6TL9r+HDEaep5l8wP7M+ZAvKHFYXbt wJ+KmTEEvqkni9lizUtPbW2sl4DHc7b1KQhjz0Dr2eWh8nuQFN1iT3KMNDrs/e62QNrc liff0oj4VCRyTTwI5gm3Iy9zXs6naItPOSBZLyCWjx72/WiWVqbVx3B5wCBXoPuxx+pk qkGXHpVz1VXex4BuH1KGyesn5Y0DVAa1Rd3Fa+SlPG51sZhtdP0wLvLt/LBTMrXcIN2k yJKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Z1V88FwuMlgKnS9hRtkLeDXA8Vs2jJqcH4PEusY0mo0=; b=AkPng5a3/9yj/ftUlee6+3zryxD2VliJHrPkLUAnOIRG8x2uW4jW6YX+m2luP/CJts tpAf6tm/6bqHVm1saRlJjPJYoWK58s6L5rcgj//lsBzWzYvu1uHqCMaFQnh/hlukiUW2 cIkqQHCPj6AhYDFVFV4bRfVhLXcGyYVnfRL0/VKz84RUWDExuSNjeyj6kL3apeN5cX3o hCPl+IGite51231lLwaJAMQZPjJ/Jpa9sJWdQYoXhrt52RtSbcrG7lGwQBwvzrLQj6mI J0xuARKrhgrWc4GHubKPvDsz6H/85QWBRL7WCYQwtGvnC4zXnjMNYXXJ4oKSSyB+O9+2 EGtg== X-Gm-Message-State: AOAM532GTFnNjuJyag9nkiboBLOg+YNErP9AX+9MYKLgLc8j6rGW6gA/ Vmy+8oeZfb+4gMJzGHPhQlCaSkgPVp8ctw== X-Google-Smtp-Source: ABdhPJx/WKUUur7Jtkf7IF+MXYIB3vdiE4h+/5UuWMRLnRThLGcNiFCzI6CRDXoErNbbeIG22Pz3Tw== X-Received: by 2002:a05:600c:22d7:: with SMTP id 23mr4843236wmg.61.1606228890354; Tue, 24 Nov 2020 06:41:30 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id 90sm26453232wrl.60.2020.11.24.06.41.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 06:41:29 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Nov 2020 15:41:19 +0100 Message-Id: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avcodec/mpeg12enc: Always initialize MPEG-2 intra VLC table lengths X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The MPEG-1/2 encoders initialize several tables once during the first time one of the encoders is initialized; the table for MPEG-2 intra VLC lengths is only initialized if it is used for this encoder instance. This implies that if the first MPEG-1/2 encoder to be initialized does not use it, it will never be initialized even if a later encoder instance makes use of them. Fix this by initializing this table unconditionally. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 46c3424de9..eee4af0adc 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1055,7 +1055,6 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) } init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); - if (s->intra_vlc_format) init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); /* build unified dc encoding tables */ From patchwork Tue Nov 24 14:41:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24025 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E696144BE5C for ; Tue, 24 Nov 2020 16:42:10 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D0F2C68BC8B; Tue, 24 Nov 2020 16:42:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 80BD368BC7E for ; Tue, 24 Nov 2020 16:42:04 +0200 (EET) Received: by mail-wm1-f65.google.com with SMTP id 1so3107249wme.3 for ; Tue, 24 Nov 2020 06:42:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qaxVUsrc2wKSYW4KV6iWRQCNCb161SWgA9JFQyKaCnY=; b=CALaSBRwPbDGubd1BTuAFwJ25RfZpmitlsNgmEndGGv/om+z8Fcl1JrPQvM1cIqmrx 7fjQCk7E1ovSz3c0LsR3b85rcn9yNoFhol6W1dR/LsIXUIgCgbDwBhDmLc0b+aIupH+G qRfzldz3Jj83P7dsWDeE0iSarMgLQKs9qoBlPCWXITEpY7ciuuIShIJFwL1ENbZXXaUA kO48p5F6lhELRuFGcfNQQ0fMLJYpSNGc3eXzBIj4XHR+nxmR5zSruk6mHc0ia4qOtkKR +ozEud4NeSlPNjqDbglb8qdzikcJ+eSGFRN9hKnTiZxDZR06LzXW+ihb7rSJ7Q65zN9M Iokw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qaxVUsrc2wKSYW4KV6iWRQCNCb161SWgA9JFQyKaCnY=; b=HOa18Su1pVyuaA7pRH1BKGJCunbXwWBynltQRySQKzKOa6TcZ89bpRDZlSSbUZCxzW WGQhSjfGqViptLqxH25VBX/nSwgz/Pf7cN7GJ+CALKTsJtzRynUYjKRRR1/haa/Vtgvn cYYdalTGcK8yC1wgsJINao84EXJH8PFhS7rPeZvsM86lBBYEYLZsBwrQt95NE4LT3Ivi oKZObd0sqRMUI5K2IXetLPTCdhF0NEqojQjxZkFtQtgnHE93OQgb8AsjNfCSS+zjSBvy 0CqJusilazKM17pieAZfI40vIu8e4WsymQTZzkbKiSrVQfUtW9UcZbd8id1/jvmcEfOF exxw== X-Gm-Message-State: AOAM532BZGO+IFb60AqiIJ5S4sTFvXixcNLIsww2WijVWviVGtn3i8M7 Q7SYndSZwV/n3U9wTgqinaM6zt9sukQsAg== X-Google-Smtp-Source: ABdhPJyO6fpqV2moJ/N+Ig+9jVN64nhEjKxSTLaEsH5aIqj90KKtWsuVgcojMKuTFyzKf2XSO1IjIg== X-Received: by 2002:a1c:4d13:: with SMTP id o19mr3407279wmh.58.1606228923789; Tue, 24 Nov 2020 06:42:03 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id 90sm26453232wrl.60.2020.11.24.06.42.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 06:42:03 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Nov 2020 15:41:20 +0100 Message-Id: <20201124144122.1994769-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> References: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/4] avcodec/mpeg12enc: Use ff_thread_once() for static initializations X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index eee4af0adc..b069f2db64 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -31,6 +31,7 @@ #include "libavutil/avassert.h" #include "libavutil/log.h" #include "libavutil/opt.h" +#include "libavutil/thread.h" #include "libavutil/timecode.h" #include "libavutil/stereo3d.h" @@ -1034,18 +1035,12 @@ void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64], mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 8); } -av_cold void ff_mpeg1_encode_init(MpegEncContext *s) +static av_cold void mpeg12_encode_init_static(void) { - static int done = 0; - - ff_mpeg12_common_init(s); - - if (!done) { int f_code; int mv; int i; - done = 1; ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); @@ -1110,7 +1105,14 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) for (f_code = MAX_FCODE; f_code > 0; f_code--) for (mv = -(8 << f_code); mv < (8 << f_code); mv++) fcode_tab[mv + MAX_MV] = f_code; - } +} + +av_cold void ff_mpeg1_encode_init(MpegEncContext *s) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + + ff_mpeg12_common_init(s); + s->me.mv_penalty = mv_penalty; s->fcode_tab = fcode_tab; if (s->codec_id == AV_CODEC_ID_MPEG1VIDEO) { @@ -1129,6 +1131,8 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) } s->inter_ac_vlc_length = s->inter_ac_vlc_last_length = uni_mpeg1_ac_vlc_len; + + ff_thread_once(&init_static_once, mpeg12_encode_init_static); } #define OFFSET(x) offsetof(MpegEncContext, x) From patchwork Tue Nov 24 14:41:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24026 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0030944BE5C for ; Tue, 24 Nov 2020 16:42:13 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D80CD68BC9D; Tue, 24 Nov 2020 16:42:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 764C168BC7E for ; Tue, 24 Nov 2020 16:42:05 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id e7so5031922wrv.6 for ; Tue, 24 Nov 2020 06:42:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4Zympk01EwygHEwjYFFvo8D9Ghuvf5SjFSA6ymvwFRo=; b=YJTl/akfbOar7NhKt3feAfzNrZzLXI7FDKf+QMPCjwe/VdQ7cjc3RcNsMb8hwiypqw NtzskzOpFBi2bEARSyKNz1hiZt0m0fuGxLpD9HpGknou/bXTWv+6a5XQvJkv1ev07hHS DW2RiS8JD2QMQBRaDI6nFPrStcIQUdt02lUQBYOl3buSZIJabJxGN8FL3cFeeMVeGOlK Vc+5a2xA8fnVpJ5xyk5eQtDViBP0MAtJSs4J+vg/Zi8KKP21qrxWuHUUvkC+E1jA51o4 pCKqm7vRuZahdFbFA7zGU/bDH0IojKjH7RWHHMvCrvH2Kdx7s421CeMqTK2xa2uE8H5S a7nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4Zympk01EwygHEwjYFFvo8D9Ghuvf5SjFSA6ymvwFRo=; b=BNNLRD3ESMeNrFdEb+L3OdtLjs+LRjQ1MALC0LdWDAZ9Kys630H15/Dl/0gkLdkuFu K5VWB9HbLdOMw1pwZJTWi3yTNE7LkQInrTn1xNV36TBP+XhI7QLyJ+YsRbOvAFbg910X KW3ToJLv2JEsIoJKrMc2VpaymHDo2G2n1srKem/EsvYR9cSbKmygvhuDwTBORxoUT8Iq /qveU9VqTYQgMmafd0mh3DkvStL6qUMdnLdo/iGEqYkWBN3IKUr3xNywZcQYAqz90p/S cTNCb2XMQKNMOrxv4JkiDGpW17WuDQeGOEnPLmtG44OvDU21Hd9WX2EcfzAEQIQ6lhPT GANA== X-Gm-Message-State: AOAM5333NfOzEZWJRYYWqDRnmB2sp0JFmnnc5/bKUk1dMMevPsFobtdT TSRQOmEKJ2h2HK+NTKLqVHQHqhnRJ8whjw== X-Google-Smtp-Source: ABdhPJzif+liV+aizObnXsJaUP9FdopbzvMx7wx3sjJ84IU6gYGNrO+QsNBjoxuQVOZdX5VIyqLi8A== X-Received: by 2002:a5d:65c5:: with SMTP id e5mr4859687wrw.113.1606228924625; Tue, 24 Nov 2020 06:42:04 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id 90sm26453232wrl.60.2020.11.24.06.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 06:42:04 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Nov 2020 15:41:21 +0100 Message-Id: <20201124144122.1994769-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> References: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/4] avcodec/mpeg12enc: Reindentation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 114 ++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index b069f2db64..2466db8a91 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1037,74 +1037,70 @@ void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64], static av_cold void mpeg12_encode_init_static(void) { - int f_code; - int mv; - int i; + ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); + ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); - ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); - ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); + for (int i = 0; i < 64; i++) { + mpeg1_max_level[0][i] = ff_rl_mpeg1.max_level[0][i]; + mpeg1_index_run[0][i] = ff_rl_mpeg1.index_run[0][i]; + } - for (i = 0; i < 64; i++) { - mpeg1_max_level[0][i] = ff_rl_mpeg1.max_level[0][i]; - mpeg1_index_run[0][i] = ff_rl_mpeg1.index_run[0][i]; - } + init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); + init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); - init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); - init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); - - /* build unified dc encoding tables */ - for (i = -255; i < 256; i++) { - int adiff, index; - int bits, code; - int diff = i; - - adiff = FFABS(diff); - if (diff < 0) - diff--; - index = av_log2(2 * adiff); - - bits = ff_mpeg12_vlc_dc_lum_bits[index] + index; - code = (ff_mpeg12_vlc_dc_lum_code[index] << index) + - av_mod_uintp2(diff, index); - mpeg1_lum_dc_uni[i + 255] = bits + (code << 8); - - bits = ff_mpeg12_vlc_dc_chroma_bits[index] + index; - code = (ff_mpeg12_vlc_dc_chroma_code[index] << index) + - av_mod_uintp2(diff, index); - mpeg1_chr_dc_uni[i + 255] = bits + (code << 8); - } + /* build unified dc encoding tables */ + for (int i = -255; i < 256; i++) { + int adiff, index; + int bits, code; + int diff = i; - for (f_code = 1; f_code <= MAX_FCODE; f_code++) - for (mv = -MAX_DMV; mv <= MAX_DMV; mv++) { - int len; + adiff = FFABS(diff); + if (diff < 0) + diff--; + index = av_log2(2 * adiff); - if (mv == 0) { - len = ff_mpeg12_mbMotionVectorTable[0][1]; - } else { - int val, bit_size, code; - - bit_size = f_code - 1; - - val = mv; - if (val < 0) - val = -val; - val--; - code = (val >> bit_size) + 1; - if (code < 17) - len = ff_mpeg12_mbMotionVectorTable[code][1] + - 1 + bit_size; - else - len = ff_mpeg12_mbMotionVectorTable[16][1] + - 2 + bit_size; - } + bits = ff_mpeg12_vlc_dc_lum_bits[index] + index; + code = (ff_mpeg12_vlc_dc_lum_code[index] << index) + + av_mod_uintp2(diff, index); + mpeg1_lum_dc_uni[i + 255] = bits + (code << 8); - mv_penalty[f_code][mv + MAX_DMV] = len; + bits = ff_mpeg12_vlc_dc_chroma_bits[index] + index; + code = (ff_mpeg12_vlc_dc_chroma_code[index] << index) + + av_mod_uintp2(diff, index); + mpeg1_chr_dc_uni[i + 255] = bits + (code << 8); + } + + for (int f_code = 1; f_code <= MAX_FCODE; f_code++) + for (int mv = -MAX_DMV; mv <= MAX_DMV; mv++) { + int len; + + if (mv == 0) { + len = ff_mpeg12_mbMotionVectorTable[0][1]; + } else { + int val, bit_size, code; + + bit_size = f_code - 1; + + val = mv; + if (val < 0) + val = -val; + val--; + code = (val >> bit_size) + 1; + if (code < 17) + len = ff_mpeg12_mbMotionVectorTable[code][1] + + 1 + bit_size; + else + len = ff_mpeg12_mbMotionVectorTable[16][1] + + 2 + bit_size; } + mv_penalty[f_code][mv + MAX_DMV] = len; + } + - for (f_code = MAX_FCODE; f_code > 0; f_code--) - for (mv = -(8 << f_code); mv < (8 << f_code); mv++) - fcode_tab[mv + MAX_MV] = f_code; + for (int f_code = MAX_FCODE; f_code > 0; f_code--) + for (int mv = -(8 << f_code); mv < (8 << f_code); mv++) + fcode_tab[mv + MAX_MV] = f_code; } av_cold void ff_mpeg1_encode_init(MpegEncContext *s) From patchwork Tue Nov 24 14:41:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24027 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1B61C44BE5C for ; Tue, 24 Nov 2020 16:42:15 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 049FC68BCA6; Tue, 24 Nov 2020 16:42:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7CAFB68BC99 for ; Tue, 24 Nov 2020 16:42:06 +0200 (EET) Received: by mail-wr1-f50.google.com with SMTP id m6so22553407wrg.7 for ; Tue, 24 Nov 2020 06:42:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wQdiRJrQkQWvOrDpCKIIBK5mIkZoIWYO7iQWNV60hcw=; b=ARSIYMqYSpINz/2vCUOLB/DNq27FncWcNdyxUHsldsgjLKG+aRTGBPcyyjxVcgCSNd ynUa7JEtbruEeBmdp3o/p9KxY37ELfJxwJnRmjKNPb4JbJjZSxTg76OD4H2Y30BrVK65 YDGUyY80hnQaHPpkd3MLsyyhE3s0fui6m9AMiw8SRsKYWHpC6i95MgEsywFNS3KT0fsO gji2Fe7Su4hKOAHQAUKB3Q5Ket2A8bNcgULvveKcF00cVwwAjxv5ulWbCZq8iD+t2OLs qwg1T+qTSv3yku03zfp8t6aaRs88/qlJE9E6raLttVTH2A3L1Waw5iXMvsU78LGgIq+D lUkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wQdiRJrQkQWvOrDpCKIIBK5mIkZoIWYO7iQWNV60hcw=; b=tzQpV+3E16HZ5RnpzunpWFiXjEpD5/G0tgqgue2Db7giDnYUZ56IAqqSG9rX9MoRxN 9f6pPG5e/aEurhT+9JRulm6aZ01Ipksdwd30lkGOfKZAFH/hLcgp7CbqZJ8HaI1pAtUv bmzJ6gDlOpH1ngc4TOMmUQ++221IiBYG2qAfQFJPL0pQd5H+694/k3U0njX+WpCGNeyx swFUEYyuoB0sp/417MFyMsp3ZDL02BUYB0JKEaKWLsB5ikd0v8hNIsfucaCiuNjYeIkB 0A5B+jaQG1O18VKyFAF2c0hBislGCGaNAteWfxezPdt9L6NJM+/q2IuADxbtsTMi2IiV 3YPw== X-Gm-Message-State: AOAM53188sFpF9azSNrAlsIYsBxmr7DlSsRh7jQJYFxNEJhieX+HLnZy HvLrwKYLYYjwPoyjb43zYG/co0exOM9ksQ== X-Google-Smtp-Source: ABdhPJxHlG3/SoMZoIkbvkSkvoRSc/liup7Dai5rFaaJFCQCV5ljZTyqPpZTVS+BeSL3d8hEjSErZw== X-Received: by 2002:a05:6000:10d2:: with SMTP id b18mr2328324wrx.344.1606228925637; Tue, 24 Nov 2020 06:42:05 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id 90sm26453232wrl.60.2020.11.24.06.42.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 06:42:04 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Nov 2020 15:41:22 +0100 Message-Id: <20201124144122.1994769-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> References: <20201124144122.1994769-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/mpeg12enc: Deprecate using MPEG-2 intra VLC table for mpeg1video X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" This option just creates broken output because an MPEG-1 bitstream can't signal whether MPEG-2 intra VLC tables have been used. Signed-off-by: Andreas Rheinhardt --- Missing version bump. doc/APIchanges | 3 +++ libavcodec/mpeg12enc.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index b70c78a483..dea54c4415 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-xx-xx - xxxxxxxxxx - lavc 58.xx.100 - avcodec.h + Deprecate the "intra_vlc" option for the mpeg1video encoder. + 2020-xx-xx - xxxxxxxxxx - lavf 58.64.100 - avformat.h Add AVSTREAM_EVENT_FLAG_NEW_PACKETS. diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 2466db8a91..0b5badde3c 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1114,6 +1114,7 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) if (s->codec_id == AV_CODEC_ID_MPEG1VIDEO) { s->min_qcoeff = -255; s->max_qcoeff = 255; + s->intra_vlc_format = 0; } else { s->min_qcoeff = -2047; s->max_qcoeff = 2047; @@ -1136,8 +1137,6 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) #define COMMON_OPTS \ { "gop_timecode", "MPEG GOP Timecode in hh:mm:ss[:;.]ff format. Overrides timecode_frame_start.", \ OFFSET(tc_opt_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, VE },\ - { "intra_vlc", "Use MPEG-2 intra VLC table.", \ - OFFSET(intra_vlc_format), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, \ { "drop_frame_timecode", "Timecode is in drop frame format.", \ OFFSET(drop_frame_timecode), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, \ { "scan_offset", "Reserve space for SVCD scan offset user data.", \ @@ -1147,12 +1146,16 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) static const AVOption mpeg1_options[] = { COMMON_OPTS + { "intra_vlc", "deprecated, does nothing", + OFFSET(intra_vlc_format), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE | AV_OPT_FLAG_DEPRECATED }, FF_MPV_COMMON_OPTS { NULL }, }; static const AVOption mpeg2_options[] = { COMMON_OPTS + { "intra_vlc", "Use MPEG-2 intra VLC table.", + OFFSET(intra_vlc_format), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "non_linear_quant", "Use nonlinear quantizer.", OFFSET(q_scale_type), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "alternate_scan", "Enable alternate scantable.", OFFSET(alternate_scan), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "seq_disp_ext", "Write sequence_display_extension blocks.", OFFSET(seq_disp_ext), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE, "seq_disp_ext" },