From patchwork Tue Mar 26 05:26:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47484 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c889:b0:1a3:b6bb:3029 with SMTP id hb9csp1608255pzb; Mon, 25 Mar 2024 22:26:52 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVw5nL/IleUH5Sf6bnjNO3iXCAhePdpdOc16QPa6a0O9T4aJ5NqJFUpJ8yMX9mYx3SZnS/N/kBat4kuR1Rukz0EygoWSJ05L8483g== X-Google-Smtp-Source: AGHT+IFRLGT/I9vXm5lhRbdJfOGcdOWrKrIgUFCi76LuGX1G/npTARwMtF2F3D+3Go6FPUumsOe5 X-Received: by 2002:ac2:5b43:0:b0:512:bd32:ed55 with SMTP id i3-20020ac25b43000000b00512bd32ed55mr5795563lfp.4.1711430811995; Mon, 25 Mar 2024 22:26:51 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p7-20020a17090628c700b00a465a61834csi3112627ejd.227.2024.03.25.22.26.51; Mon, 25 Mar 2024 22:26:51 -0700 (PDT) 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=baWGDMO5; 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 8F6C668D50A; Tue, 26 Mar 2024 07:26:47 +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-vi1eur04olkn2096.outbound.protection.outlook.com [40.92.75.96]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B433468D442 for ; Tue, 26 Mar 2024 07:26:41 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xgb2Av22caWdUxTVQ+Cn4fRM0QHPdCB976S1obAY38VO3eQMWHpsrO2nT7eL6YHpobG2tIbKNYL0rUBP3NJKBiQLl6vfqMGB7+QwPY5dEm0fd0klHcz7rkhGB4wVcTRlvmHT/rcKdzRVaY4YTtN6qtx1VHe3NSOAzrWz/WJlJnMBKMfm1iydxtI0PwkCY4JSJobg5fj8e1S0NMreOuUU//4O2zBn/GMBHexI4blw+Z62Z2nLm++zMswPxHM378MHvt91oHeZEBPKIWk4z2P1GAlyPV15kmgk3T2cjIi79sbKYyQDfqsd7XwQvs5C26W/5zIqB/f5t09q3AhElboiZg== 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=ZvTm3Dv6Zj6cybPFf+LTbE5YfGEiD2lPhgPAidqniXs=; b=VjzRNXiIb4jdWujNgBi7buTOFp9yVeMdW5Q06OQrWoNS+Kc+esc3CEraxkChidG8vtY0kbYE5V/VKlg7DAhz0UuVATZDLbt4ijL92eMOGKFH+XyCtMbI27OyeBMX0VgnwrMwOtDuK4/Sax2uNIHBC9RwtamaIh6J1th1OIOczb/MRa4tJ8a3FbEAYCDQ9B5QWAGHloPcsUqx7IhOcnkygeqAGIOnbCYcSn4JYCVNW6Lto/mRyDYV+SVSzpq07K36zNcakRuHxUCOpXqvRVcJ5Ho0Tt+uCLOg/fa064DLkSKvqXl3AwzyCBASRaBTaWzJzeXBK82G9zWq82CNwWhP6g== 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=ZvTm3Dv6Zj6cybPFf+LTbE5YfGEiD2lPhgPAidqniXs=; b=baWGDMO5jlspvME8gbFK2BeITV5sCjU4suQPk+L4SmZRUeJceqyYQzGItGifolI5g8hBMDXAOU3wypEUDDBtKo2vwi6rq1ynGThIhBT+40ZQIqNEo+8BdED2JSABajp5btYt+4Xy9rtNP9PKKYOGHM+VPgH2xx7BFRd0xGRid1sFLIXQWFY4W+GAs5vCCR+b44oyQwJA35rIhWrWp9LHFFbSZJHgmEAX4BigxLCWq5kc7M62mjLnl2xehcZ6NP4dFBk1FFObjiHHCnJYO4S8T9PHzCW6g7q6vibByR4x+f2pUcl5Zs3OHgb/C4tBXxkG0adcuDXGgyGwOWuMBcAYLw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0485.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Tue, 26 Mar 2024 05:26:39 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.028; Tue, 26 Mar 2024 05:26:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Mar 2024 06:26:29 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [YkxJcv34p2oCnwv8Xq+i5boVN76kPXlXmE+sA8J8ruE=] X-ClientProxiedBy: ZR2P278CA0024.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:46::13) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240326052631.3580940-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0485:EE_ X-MS-Office365-Filtering-Correlation-Id: 90470938-e138-42e7-f3ef-08dc4d555030 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqkjmXb1vlddM5aSa/Epk3Ag9IWc7IiaMPf4wXe97mm9z67oa5ARC0THxHpkrBtQ+BqX8+OHpqCpbtSf8W5LSJeb5iM3isb4Ytf51JPvT9JNybZSHN8nD6lHh/N/7JDHrpR9WXjMPpFGC49lqMf/Tmc1gJDdXcM48H+UHEWf7Qfv1Mktyl1SPZ7WGm2/WTLI3VC7JXq68gFqSJRo4PHDyr5C4mryoK3gJtaQFbnF8wk9u6QOJPSQKGhmrNsbaHOZWt2aPKEaiwiegWG/NNSRosdgW1EeVcgkCss6QWqtzUK9kvvy+5n8185Y1gOngVqmVsTGx2Mi3kDIS3AKZLS9jPa6AI9lSMGjM2+i+yvhZiyG8ULJviBU9vD0e/gj4bW0vqX99I91CuRO9vqQQyMnrKHGE+hBpgDh80JQPJvqWPBh67Mg060YGEsZxzJz3RItIs+w6tkyRiah2IOBbttoH/SqGZcAPTG4C55Yqbk/9jHc5/0u00nE9jx1hv1O2IAt7XwbZdFc+s/WfykC43gEzlcmHfLnVQPgleV17x+riL1msjBjTmd/8II2/LwJeu2SrF574koN/N1BNAemZGWxxzgzp8DVpwmqZNbuT2wZZuvy93admNM26yoNLI0Vf1uELgyuE86/9m1Sc5JVdUf5Q3BlryDYl6T/jHI8IzQ+uaLuEzRgTcyZwIrfMAlRvhQ70QB1E8FNSzLP9z/JUREBvgfiSwn1exlPV+YYTDKPRX+zA36hpkSsRH3PJobTlA1X4M= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A984bPxS0FYqyZNKIMee7TNTZH1WlbrW14CRZVtUkqtM/kAtRSrXwfMIqqacPPJp+9+zO1kLaLZzV+PcjoM2oGX6OJuggOGd+JIdnG9zmVi3NKRmPSVFTYu6+I7yq4HO9xjV6alpcE8Q7J3et/YRDJXCkiDWkZWCVWb65cMb4GLB1qn83+lmps2Mb4aKV6hsXQ0b2gjsIDp8ek+SaIdb3AHJSsvp9WPbRcPOX1nLPbi+9z9iR7yKc+ytpCKTpLGE2r02cYSj1BLU0QRosk6O6ykwSyr+CMogGer6N9UQEiU2bYqUJlGmRvAdeS6mcNnGb0V35/cdTYJKSqdb2UQaCvHNlhlsLUr9A7fhoxVGpTtkSMVJXFnWNN9eXYAPmAdB6vb2EF4BXuSVsYyGgyJ3xeRPznQtOxvE/GFPg1qDJAJk9mo9/QZCgW1KfQQIimRY4bwGcFritPoS4N1Nx+OQPmp1q5bwsa8sLawrXepf/TfXqof9y7PIOIwpbN8J8PM6eerdhDE8kAdQceoVP8hmLsqqhiD632XlEuDcNDT1lwiURGax1kAVa5Rmk/uVT0ySVO9AG4oOTYZ6PzbzkNiSl3Rk0gd6CVAFUNdwfLBLV5P1qHb2MDAhKyQbq0nCfJt5 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0j0dGVsB0U35UriTOrTBaXkHstAbVGjRSm3rJVSwt+AEXbwJoEwX29zePXd7yOqxazu7OOksfpH/68K+dz5gQmTUlGTR+a6S0kMcA4uCTRAQd57w7Vn+XxZe2mKrv5FOvIQh5iVC8er7aq0DyfO0vjQQbq8hfTyewYLSbK1/K/kgAo5FJNOs1h9QxI9/4SEhXWW1D53ffSa5ABb5umukQfTcBoV1cn809Jg0u0VsNq84vpg3K6DGJnfbKKqXMvjwxQCgpfTlkY2bLv//KJUQWLfyjTFcXBWM/2a+1VJzeNKqTHD179YDwjpx2MekKihWe8fnH3RfLLfdB8FRs16hauMaDTV7FZAcPBFR8w4hNeLdUHst8J58HRFB0TH1ChE5+Cjs6qZyKQnanSxp3yIT3RKbICOQt6ktVpKWbY33XaBDMLXyu8Ifo0U8eW1qwZGqm3AY8fuLhn4SAG852IGBz8JgqWJHXae8UqY/i+TD7OE7dS/dOuPM1GRbqnX4TOEudYiJM17FRGXZbg5rnaqfBxFPOU8f66QtHV0PqlDn1VjlYtalGHBjUn+ttD5u0sEeQAvxi5o0b6QHtGwatPKs37Vz4j2biEck44JEG4Cfut1Nc8gHR30GjjF8ajWSgm21NgMxtDWlgmAEWpZ4JKpLHQ3ZXlYnAY+QHxDwSBDKPnBNF5Cldf1lCeEXGDFwIopYjd7TqcTlreX5zebsN555iqhXqJyNT+/K6FMrnMsnuqCVGIpoAiGd88kZmlyfpMGv4EWjY93Z8/r+q4IrUgTJEYhfYD7xjzLHmJWuumidppqVsEqDZSU1GTcBpdwS0E1LM93feHFPik4zSQ2swtVVSsosubijVWM5nLa09wdIEzjavwjM8juQKa2xgQt3CsajgmR7Omvafm56V6QgFMuVBMaZOgBtPWs0dXP77HQyw5fhu5gs7F2/eSN71RG/PhFtvswlF+ZgJ8tPKT56ft0c6VWRsH2l4ETjjSLcuEbazsFGnAmGG/fJEaloFvdkHcTqlEPjKLhd02ljNcqeZb4zO6mYUCHVTNt39aXS8qy80q/B/36lrOLsUjy2aj0LO3FUQ5bvDC9+IbOUwPm7GEQyAjS9sudoWz+zl+tbVwEfzY2dFASgr5SMl5r/VkPytH4jTVypC/eBiZn6MkSMDhnruWYAhq9tF8LTBDy2dJbFpFYf3sGdtuwZzzRJ/hBoNBiwYjkAcY0jPvXKN9UllDfto3vZii6EK9WpjK4lLxoYBa7lPgoaskhmIoWMxjRe1l21AdgoTtsC+bYcTDHwp6nydw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90470938-e138-42e7-f3ef-08dc4d555030 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2024 05:26:39.4695 (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: AS4P250MB0485 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/Makefile: Remove redundant dependencies on hevc_data.o 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: rCF38Ya5lD17 hevc_data.c only provides ff_hevc_diag_scan tables and neither the QSV HEVC encoder nor the HEVC parser use these directly and the indirect dependency is already accounted for in the dependencies of the hevcparse subsystem since b0c61209cd30f9ddf3356d5ded6df488f25d1bd5, so remove these spurious dependencies. Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 9ce6d445c1..6eefeeae6e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -440,8 +440,7 @@ OBJS-$(CONFIG_HEVC_MEDIACODEC_ENCODER) += mediacodecenc.o OBJS-$(CONFIG_HEVC_MF_ENCODER) += mfenc.o mf_utils.o OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o nvenc.o OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec.o -OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o \ - hevc_data.o +OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o \ h2645data.o @@ -1196,7 +1195,7 @@ OBJS-$(CONFIG_GSM_PARSER) += gsm_parser.o OBJS-$(CONFIG_H261_PARSER) += h261_parser.o OBJS-$(CONFIG_H263_PARSER) += h263_parser.o OBJS-$(CONFIG_H264_PARSER) += h264_parser.o h264data.o -OBJS-$(CONFIG_HEVC_PARSER) += hevc_parser.o hevc_data.o +OBJS-$(CONFIG_HEVC_PARSER) += hevc_parser.o OBJS-$(CONFIG_HDR_PARSER) += hdr_parser.o OBJS-$(CONFIG_IPU_PARSER) += ipu_parser.o OBJS-$(CONFIG_JPEG2000_PARSER) += jpeg2000_parser.o From patchwork Tue Mar 26 05:27:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47485 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c889:b0:1a3:b6bb:3029 with SMTP id hb9csp1608597pzb; Mon, 25 Mar 2024 22:28:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU9XYkV+UtjsvtZx/8011I5UstgaZqc7RH9t5XabmQ6Ic+sfRzwNXb3UPrlhPZ551EWj2Ap7bV1Weuyf1hQFQ15Q8oe6iV+iwoTvQ== X-Google-Smtp-Source: AGHT+IGS8MG060xkxz4wloZfyCyjswWN9skoboqe7TTIP/2ndM7utXI+XmTiidH2DUu+PYEGVEvv X-Received: by 2002:a17:906:b0cd:b0:a47:48d7:d393 with SMTP id bk13-20020a170906b0cd00b00a4748d7d393mr305361ejb.33.1711430890561; Mon, 25 Mar 2024 22:28:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s21-20020a170906285500b00a469a59d988si3058217ejc.383.2024.03.25.22.28.10; Mon, 25 Mar 2024 22:28:10 -0700 (PDT) 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=h5cAHFrP; 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 D196D68D50A; Tue, 26 Mar 2024 07:28:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2036.outbound.protection.outlook.com [40.92.48.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C263068D35C for ; Tue, 26 Mar 2024 07:28:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UWljeOFy5OvX3Qm/c+aAn7UqCAymQNsLTe4XmupcfLp8l6hwlkim1L7w1BOb01iT1Vg5YonvVPvri4+/8I7edrgu28CUr9mIrxGL3TdwVm7udaQw8qEnBpNH+zBfTsef5sQoVBNZ/wJcFQT0LfQ3F8Ts6LpgkC84TPqL3kSNju4e/zp7re+2MwzwEdfDC1TwW9VyETfmrH9WsH6jjAa2qachehdbD11Uwib+GMBgnCZirUUE7NecbU4NqzQHjJY8G5q+meCIbRMizDjt6KiglX31q5aKhJ8XPrVBHgNboR8tQxC/B23B1uw9n3mKUB1dXIVPOMt4fAPEqk43JkYTLw== 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=f2HxnoxJ18tWfllSGrJ9aX/5W/Tp/GWK7XhiqaW54eM=; b=NByeFAoeZxx06xsQUNaOxO0mEFbELOOKXqXsIgA6QQnq9LcCnWKYOuyO4AJdX7DzkKucazC+99TQoQmClmYItDaDX5LmRBhOLz7S4Ms/MjEiCWqvsE06X1/odfpKscKXZ2ChzELAn0tnTLuyudJAt7yoeyqyZ3h0ryFc+Qi13+HCP1ZUprHOukmgeoC8AimTq/1IwoAi3gBXHV/M54rbCA4GPGdhkpASWzfqAFe1bp40v73C4v/WcL4scFR8LW2XbNb2qqFf+6tZrcF5Kreb2RN2UYIQuk8/jmOteRH9/pOxG8+Ro1fAC1AL6mklcLWMTRIvJ8Mxm7k3V0k0QaFslw== 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=f2HxnoxJ18tWfllSGrJ9aX/5W/Tp/GWK7XhiqaW54eM=; b=h5cAHFrPtdWDc5lwi4vqURi8BMnO4C1BDbxJOaO/GuaFPoNupjYXr7yRzwvcmzWsgQd+X30QsCObDjivRVH/XQOIEpB0GypiPqy4X6vo0hNrvpRdXcmyvUzfEOoblJJV2FdCFN56bvgGneAkwETp/eHFWtajKrWW2+1lEpzCShrfgjdi2DGCGihIZM0SYAlhLOSYbRGFho+3yAiLXK5lrk141MpGXSAf4iceWnVZFYe8BG7KFgnx54PXIyOaSAvnITuUG8FdKJci9bq6C5ZKbutrDeYknohSvdbWP5Zgzr+r2mYpT1ubjsJdNr0dytdT7GCdITNgPO+OL8d7BBlpkg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DB9P250MB0498.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:33c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Tue, 26 Mar 2024 05:27:59 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.028; Tue, 26 Mar 2024 05:27:59 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Mar 2024 06:27:50 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [2ZgAo3qQtXyn6MvIUg8lWqMlETadG1FYASih4/FGPVs=] X-ClientProxiedBy: ZR0P278CA0216.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::7) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240326052751.3580990-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DB9P250MB0498:EE_ X-MS-Office365-Filtering-Correlation-Id: 6868ea1e-1a48-4354-1e26-08dc4d557fae X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqkjmXb1vlddM5aSa/Epk3AArdmWI5X3QWteVycijLKueqEGMJteb0AoGKvzs5uEM0U5ENe2qpGWUlin6qB9GVKRFBC9DUTM5EQp3psP11pvimTkPHx1jvdAtNGKX32PtVUcAVS2jUXKA0kQ4cqTDsmX/XF6VNN3KCTmiWFn3lxpHTy3Wn7aIlIFhNXr6yxUFj+BydYAejyUcL34/46THTNr4ljN828rZO/FUPUPyYFPC0JBcqH+r7G6pcippKMp4+TTrcy+c1vv5gnV0/BEIzJLDQ1ttWG1rI5CcYbhSy7ycyPoCdKdifx6aPjzbXgA6BNmORrtH6EHHAcIavaGIdORKBV+yyRTmLqVftA4XCa62/WPGdcd4fMKhp50siP4yrU5vg8QGnymTACNs/zOfbnNaTJa/ATc1sTPTnvfEjefb56/CVILFKswJQA9pOOHXz3OWEVkBDcSyxxJ61T7Dc2dM/mfEYlpAmF0VtyPU5p45f3oS/XEFYd02eAEtQ7lGxtEVDWMEBIVzQtt/LljkC8ONL7vk0uvKq3LIiB+J1qdjtaO5Hatt1r1bxFSd+vpmfl2lFmcAANFfdGsXvhx7+Wqdh1Moxu7Q4MJBcFYswiPDWkmQcUH38/Hp7oLv1g1NprC0Y78ducCxEix0ryuh9/WyYaiPfHtO3XXVAE5eHPPhUWxublWUOYCKkePpAc1PluuFiXBRbHHHpm+KtU9Jh4cW9C3Xw7y/1JT50TUPO8ED2RMLC5BXWjzXamYLlRKZU= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Yyj3pfN8PjfRQUMi//fAacq7UWIhSZD9bBPpAj2P7el0HY7vAkM5pDYTWSHdkG2+NELduLe5mTEmFKOEUSaVYtZiR9Ol5krFIN/fa4iJId/IBCCllKr1YnTE8yCL8XZPlkr7I8bwJMQGhdbBpIZd/NVzJOh1866gqdi99uraBk4K0UltwDRt5zSbmOlfS5cd3lPiGSwdwipiqtq1uFnKURhA/zMwhCQBeyvdGOAy8hFq8YqHKG/zn8ac5TjwZbTga6A3B3Irutvfpht92C0CqCKyrt4ScmIDbxNH++G8Md/VwsW3dLBicAzo3lXRMUcMaAFTFay/4CZ1q8nTfh9IsPjvt5aikoAJjbzQy10NccZgKlSjC3D2AsTKUy0WO6dy0Oxn8yAgian5miT63KQD84A8YmDLRROtJGT0RNrT4bYNqG07xJJ1vts44A40aUEaOgOdkFuSMn1TZXBZyxH9NSqC8nJywR+N509mzvyYoFuqILEWDeryfwYiDokLNqUwGXmb1IdKdP9jMlBjCA96FUy6zEb7HKwGQ7VjNMLhxKb7Ez8BaSgrCrTCho6jQSZ0UxiOMTjEIWdgKP9rNISBBQ5ov8A69Gy5tW1WTrP93C/59yxMjOh/VX4j46WuJq1s X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cWcIq7cbzHJVkirBfcHCKM7khHnhBgpGleqO57clh1JkzV3LIVLwRNHxsWkOgdAlJrF5QJakCaRuLdyIDpr8eBqtI+hi3Ll9v/S1c+r6dh0uD3wYmMXnIsakJU1Y/dkjSz/k45xaEBV/pqivqyUXl43Gs3ivICmM7qG2vYIHCMmWd7NBBqlU2KQ4u71So8QPz+WI/FsqxuiC256z5jFlXAT+jOtVDrZQ9hyqb2tQfbVIcuhLigZ9z4zPqHFf04qEHoRBti4H/dVfV/NVgeRIO1PKzBeYI8JiaELiPZfEtIcS+dnlbg9EL6ZE7bhftLoVUkM/KVI41ROgIL00IK5c5TNSeT54yt99hBze5wL7CYVNlq8L8fw/+4PI/CbVAmK6IMmJ2U44hkmLiS0QrfXpiieLtfUuoPEEUh//iaJybeKXjpYI/YN9rwc9+l3Pc63EBxUhbKgS78Iu443RtalJ1aKx6IPL70sttKzUXWuSMI6ohzjjQnSaWxQPNIeLArVEW6EZrtr1PE/nOseq3gavi+Jvnut6wCi1OPw5WYun01Ng3BYYgu7T9VMnLX7jDFF0vCJ+GBQEkOs5OlRraShPdp6pfR1C7KP4ow3fRlrH8GDgbw8D3LnvqkywhluR5G6GRX4v6IJJYjHMtogID6ROGpfEz+uWu9WNkUXwKa4lx1xaalusKdD4jGSEJWIFiEyiIo1hBkeMHwInuhI6ViCW2P5J2do9QEgqefY6QtodRy+p1bPJMMLoaQt4Y3bSLuX5MjF0NrXY+vR1B169zOydxxAKOVngS7l0+4OITvN3VwdvyhHh7tat3Y8sHPGE8AaLQcdMVCHBI1GIk3tyzIqPPC6KCy4wr1C6fGz08FFie5yEQYMke8y7GOVV3mm07NukonaF12Jv1xFEaFVfxq4KdWeaSqJfzFsmqib8VSTNmFAs+UMOh53ZN0P6Oa7Yplk1idQUVE1ub9qlaSkwOwXRB4FHGlJHA44pMb2QbndK2FLl8O9DCCNTBCCRCz7MFnZNZpIdVl9ZvmmGVGg7uJdKlBL4mM4Ip7KF2sicGjdedQX56xZVonYb4s5zDVfGmfVsOkM5ZQiLJiuzCeDhZXZavYo6Gph0QN66ZXHG288hEVnUkX448J647okPWHiBb7FfHG2yi3ijZqyCMiI3WxLeLSZHpow9HrxRzQqTqQjWpbA1FKlNwuzevg+SsUQh70rMKk/IvQrkXADpcffXX29myx04ZmApFjdGKpd1WCluGEHcncDOTrAKNWd+WSulYBIlplDul5mC77IG+hini6opjQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6868ea1e-1a48-4354-1e26-08dc4d557fae X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2024 05:27:59.1278 (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: DB9P250MB0498 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/qsvenc_hevc: Switch to cbs_h265 to create missing VPS 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: hLqpalE+L8R/ Old MXF runtime versions did not support writing VPS and therefore one derived from the SPS has been generated via ad-hoc code in lavc/hevc_ps_enc.c that is only used for this purpose. Yet this duplicates the functionality from cbs_h265, so replace it with the latter. This patch has been tested by generating VPS from the SPS and PPS from hevc-conformance files from the FATE-suite. There were some minor differences, mostly due to hevc_ps_enc.c not handling the profile constraint flags like general_max_12bit_constraint_flag. Signed-off-by: Andreas Rheinhardt --- Would be nice if someone could actually check this with a QSV version that needs this hack. (Do people really need this any more?) configure | 2 +- libavcodec/Makefile | 2 +- libavcodec/hevc_ps_enc.c | 121 ---------------------------- libavcodec/qsvenc_hevc.c | 168 +++++++++++++++++---------------------- 4 files changed, 77 insertions(+), 216 deletions(-) delete mode 100644 libavcodec/hevc_ps_enc.c diff --git a/configure b/configure index 9fa639fca6..6c181197b4 100755 --- a/configure +++ b/configure @@ -3341,7 +3341,7 @@ hevc_mf_encoder_deps="mediafoundation" hevc_nvenc_encoder_deps="nvenc" hevc_nvenc_encoder_select="atsc_a53" hevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec" -hevc_qsv_encoder_select="hevcparse qsvenc" +hevc_qsv_encoder_select="cbs_h265 qsvenc" hevc_rkmpp_decoder_deps="rkmpp" hevc_rkmpp_decoder_select="hevc_mp4toannexb_bsf" hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 6eefeeae6e..d06b837c60 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -440,7 +440,7 @@ OBJS-$(CONFIG_HEVC_MEDIACODEC_ENCODER) += mediacodecenc.o OBJS-$(CONFIG_HEVC_MF_ENCODER) += mfenc.o mf_utils.o OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o nvenc.o OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec.o -OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o +OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o \ h2645data.o diff --git a/libavcodec/hevc_ps_enc.c b/libavcodec/hevc_ps_enc.c deleted file mode 100644 index 72641b2ffb..0000000000 --- a/libavcodec/hevc_ps_enc.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * HEVC Parameter Set encoding - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "put_golomb.h" -#include "hevc_ps.h" -#include "put_bits.h" - -static void write_ptl_layer(PutBitContext *pb, PTLCommon *ptl) -{ - int i; - - put_bits(pb, 2, ptl->profile_space); - put_bits(pb, 1, ptl->tier_flag); - put_bits(pb, 5, ptl->profile_idc); - for (i = 0; i < 32; i++) - put_bits(pb, 1, ptl->profile_compatibility_flag[i]); - put_bits(pb, 1, ptl->progressive_source_flag); - put_bits(pb, 1, ptl->interlaced_source_flag); - put_bits(pb, 1, ptl->non_packed_constraint_flag); - put_bits(pb, 1, ptl->frame_only_constraint_flag); - put_bits32(pb, 0); // reserved - put_bits(pb, 12, 0); // reserved -} - -static void write_ptl(PutBitContext *pb, PTL *ptl, int max_num_sub_layers) -{ - int i; - - write_ptl_layer(pb, &ptl->general_ptl); - put_bits(pb, 8, ptl->general_ptl.level_idc); - - for (i = 0; i < max_num_sub_layers - 1; i++) { - put_bits(pb, 1, ptl->sub_layer_profile_present_flag[i]); - put_bits(pb, 1, ptl->sub_layer_level_present_flag[i]); - } - - if (max_num_sub_layers > 1) - for (i = max_num_sub_layers - 1; i < 8; i++) - put_bits(pb, 2, 0); // reserved - - for (i = 0; i < max_num_sub_layers - 1; i++) { - if (ptl->sub_layer_profile_present_flag[i]) - write_ptl_layer(pb, &ptl->sub_layer_ptl[i]); - if (ptl->sub_layer_level_present_flag[i]) - put_bits(pb, 8, ptl->sub_layer_ptl[i].level_idc); - } -} - -int ff_hevc_encode_nal_vps(HEVCVPS *vps, unsigned int id, - uint8_t *buf, int buf_size) -{ - PutBitContext pb; - int i, data_size; - - init_put_bits(&pb, buf, buf_size); - put_bits(&pb, 4, id); - put_bits(&pb, 2, 3); // reserved - put_bits(&pb, 6, vps->vps_max_layers - 1); - put_bits(&pb, 3, vps->vps_max_sub_layers - 1); - put_bits(&pb, 1, vps->vps_temporal_id_nesting_flag); - put_bits(&pb, 16, 0xffff); // reserved - - write_ptl(&pb, &vps->ptl, vps->vps_max_sub_layers); - - put_bits(&pb, 1, vps->vps_sub_layer_ordering_info_present_flag); - for (i = vps->vps_sub_layer_ordering_info_present_flag ? 0 : vps->vps_max_layers - 1; - i < vps->vps_max_sub_layers; i++) { - set_ue_golomb(&pb, vps->vps_max_dec_pic_buffering[i] - 1); - set_ue_golomb(&pb, vps->vps_num_reorder_pics[i]); - set_ue_golomb(&pb, vps->vps_max_latency_increase[i] + 1); - } - - put_bits(&pb, 6, vps->vps_max_layer_id); - set_ue_golomb(&pb, vps->vps_num_layer_sets - 1); - - if (vps->vps_num_layer_sets > 1) { - avpriv_report_missing_feature(NULL, "Writing layer_id_included_flag"); - return AVERROR_PATCHWELCOME; - } - - put_bits(&pb, 1, vps->vps_timing_info_present_flag); - if (vps->vps_timing_info_present_flag) { - put_bits32(&pb, vps->vps_num_units_in_tick); - put_bits32(&pb, vps->vps_time_scale); - put_bits(&pb, 1, vps->vps_poc_proportional_to_timing_flag); - if (vps->vps_poc_proportional_to_timing_flag) - set_ue_golomb(&pb, vps->vps_num_ticks_poc_diff_one - 1); - - set_ue_golomb(&pb, vps->vps_num_hrd_parameters); - if (vps->vps_num_hrd_parameters) { - avpriv_report_missing_feature(NULL, "Writing HRD parameters"); - return AVERROR_PATCHWELCOME; - } - } - - put_bits(&pb, 1, 0); // extension flag - - put_bits(&pb, 1, 1); // stop bit - flush_put_bits(&pb); - - data_size = put_bytes_output(&pb); - - return data_size; -} diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c index 4920b0bca4..55f4b87718 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -24,18 +24,15 @@ #include -#include "libavutil/common.h" +#include "libavutil/mem.h" #include "libavutil/opt.h" #include "libavutil/mastering_display_metadata.h" #include "avcodec.h" -#include "bytestream.h" +#include "cbs.h" +#include "cbs_h265.h" #include "codec_internal.h" -#include "get_bits.h" #include "hevc.h" -#include "hevcdec.h" -#include "h2645_parse.h" -#include "qsv.h" #include "qsvenc.h" enum LoadPlugin { @@ -50,115 +47,100 @@ typedef struct QSVHEVCEncContext { int load_plugin; } QSVHEVCEncContext; -static int generate_fake_vps(QSVEncContext *q, AVCodecContext *avctx) +static int generate_fake_vps(AVCodecContext *avctx) { - GetByteContext gbc; - PutByteContext pbc; - - GetBitContext gb; - H2645RBSP sps_rbsp = { NULL }; - H2645NAL sps_nal = { NULL }; - HEVCSPS sps = { 0 }; - HEVCVPS vps = { 0 }; - uint8_t vps_buf[128], vps_rbsp_buf[128]; + CodedBitstreamContext *cbc; + CodedBitstreamFragment frag = { NULL }; + H265RawVPS *vps = NULL; + const H265RawSPS *sps; + uint8_t *new_extradata; - unsigned int sps_id; - int ret, i, type, vps_size; + int ret; if (!avctx->extradata_size) { av_log(avctx, AV_LOG_ERROR, "No extradata returned from libmfx\n"); return AVERROR_UNKNOWN; } - av_fast_padded_malloc(&sps_rbsp.rbsp_buffer, &sps_rbsp.rbsp_buffer_alloc_size, avctx->extradata_size); - if (!sps_rbsp.rbsp_buffer) - return AVERROR(ENOMEM); - - /* parse the SPS */ - ret = ff_h2645_extract_rbsp(avctx->extradata + 4, avctx->extradata_size - 4, &sps_rbsp, &sps_nal, 1); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Error unescaping the SPS buffer\n"); + ret = ff_cbs_init(&cbc, AV_CODEC_ID_HEVC, avctx); + if (ret < 0) return ret; - } - ret = init_get_bits8(&gb, sps_nal.data, sps_nal.size); - if (ret < 0) { - av_freep(&sps_rbsp.rbsp_buffer); - return ret; - } + ret = ff_cbs_read_extradata_from_codec(cbc, &frag, avctx); + if (ret < 0) + goto fail; - get_bits(&gb, 1); - type = get_bits(&gb, 6); - if (type != HEVC_NAL_SPS) { - av_log(avctx, AV_LOG_ERROR, "Unexpected NAL type in the extradata: %d\n", - type); - av_freep(&sps_rbsp.rbsp_buffer); - return AVERROR_INVALIDDATA; + if (frag.nb_units == 0) { + ret = AVERROR_EXTERNAL; + goto fail; } - get_bits(&gb, 9); - - ret = ff_hevc_parse_sps(&sps, &gb, &sps_id, 0, NULL, avctx); - av_freep(&sps_rbsp.rbsp_buffer); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Error parsing the SPS\n"); - return ret; + if (frag.units[0].type != HEVC_NAL_SPS) { + av_log(avctx, AV_LOG_ERROR, "Unexpected NALU type in extradata: %u\n", + (unsigned)frag.units[0].type); + ret = AVERROR_EXTERNAL; + goto fail; } + vps = av_mallocz(sizeof(*vps)); + if (!vps) { + ret = AVERROR(ENOMEM); + goto fail; + } + sps = frag.units[0].content; /* generate the VPS */ - vps.vps_max_layers = 1; - vps.vps_max_sub_layers = sps.max_sub_layers; - vps.vps_temporal_id_nesting_flag = sps.temporal_id_nesting_flag; - memcpy(&vps.ptl, &sps.ptl, sizeof(vps.ptl)); - vps.vps_sub_layer_ordering_info_present_flag = 1; - for (i = 0; i < HEVC_MAX_SUB_LAYERS; i++) { - vps.vps_max_dec_pic_buffering[i] = sps.temporal_layer[i].max_dec_pic_buffering; - vps.vps_num_reorder_pics[i] = sps.temporal_layer[i].num_reorder_pics; - vps.vps_max_latency_increase[i] = sps.temporal_layer[i].max_latency_increase; + vps->nal_unit_header = (H265RawNALUnitHeader){ + .nal_unit_type = HEVC_NAL_VPS, + .nuh_layer_id = 0, + .nuh_temporal_id_plus1 = 1, + }; + vps->vps_video_parameter_set_id = sps->sps_video_parameter_set_id; + vps->vps_base_layer_available_flag = 1; + vps->vps_base_layer_internal_flag = 1; + vps->vps_max_layers_minus1 = 0; + vps->vps_max_sub_layers_minus1 = sps->sps_max_sub_layers_minus1; + vps->layer_id_included_flag[0][0] = 1; + vps->vps_temporal_id_nesting_flag = sps->sps_temporal_id_nesting_flag; + memcpy(&vps->profile_tier_level, &sps->profile_tier_level, sizeof(vps->profile_tier_level)); + vps->vps_sub_layer_ordering_info_present_flag = 1; + for (int i = 0; i < HEVC_MAX_SUB_LAYERS; i++) { + vps->vps_max_dec_pic_buffering_minus1[i] = sps->sps_max_dec_pic_buffering_minus1[i]; + vps->vps_max_num_reorder_pics[i] = sps->sps_max_num_reorder_pics[i]; + vps->vps_max_latency_increase_plus1[i] = sps->sps_max_latency_increase_plus1[i]; } - vps.vps_num_layer_sets = 1; - vps.vps_timing_info_present_flag = sps.vui.vui_timing_info_present_flag; - vps.vps_num_units_in_tick = sps.vui.vui_num_units_in_tick; - vps.vps_time_scale = sps.vui.vui_time_scale; - vps.vps_poc_proportional_to_timing_flag = sps.vui.vui_poc_proportional_to_timing_flag; - vps.vps_num_ticks_poc_diff_one = sps.vui.vui_num_ticks_poc_diff_one_minus1 + 1; - vps.vps_num_hrd_parameters = 0; - - /* generate the encoded RBSP form of the VPS */ - ret = ff_hevc_encode_nal_vps(&vps, sps.vps_id, vps_rbsp_buf, sizeof(vps_rbsp_buf)); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Error writing the VPS\n"); - return ret; - } + vps->vps_num_layer_sets_minus1 = 0; + vps->vps_timing_info_present_flag = sps->vui.vui_timing_info_present_flag; + vps->vps_num_units_in_tick = sps->vui.vui_num_units_in_tick; + vps->vps_time_scale = sps->vui.vui_time_scale; + vps->vps_poc_proportional_to_timing_flag = sps->vui.vui_poc_proportional_to_timing_flag; + vps->vps_num_ticks_poc_diff_one_minus1 = sps->vui.vui_num_ticks_poc_diff_one_minus1; + vps->vps_num_hrd_parameters = 0; - /* escape and add the startcode */ - bytestream2_init(&gbc, vps_rbsp_buf, ret); - bytestream2_init_writer(&pbc, vps_buf, sizeof(vps_buf)); + ret = ff_cbs_insert_unit_content(&frag, 0, HEVC_NAL_VPS, vps, NULL); + if (ret < 0) + goto fail; - bytestream2_put_be32(&pbc, 1); // startcode - bytestream2_put_byte(&pbc, HEVC_NAL_VPS << 1); // NAL - bytestream2_put_byte(&pbc, 1); // header + ret = ff_cbs_write_fragment_data(cbc, &frag); + if (ret < 0) + goto fail; - while (bytestream2_get_bytes_left(&gbc)) { - if (bytestream2_get_bytes_left(&gbc) >= 3 && bytestream2_peek_be24(&gbc) <= 3) { - bytestream2_put_be24(&pbc, 3); - bytestream2_skip(&gbc, 2); - } else - bytestream2_put_byte(&pbc, bytestream2_get_byte(&gbc)); + /* Fragment's data is already padded, so we can copy data + padding */ + new_extradata = av_memdup(frag.data, frag.data_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!new_extradata) { + ret = AVERROR(ENOMEM); + goto fail; } - - vps_size = bytestream2_tell_p(&pbc); - new_extradata = av_mallocz(vps_size + avctx->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!new_extradata) - return AVERROR(ENOMEM); - memcpy(new_extradata, vps_buf, vps_size); - memcpy(new_extradata + vps_size, avctx->extradata, avctx->extradata_size); - av_freep(&avctx->extradata); - avctx->extradata = new_extradata; - avctx->extradata_size += vps_size; + avctx->extradata = new_extradata; + avctx->extradata_size = frag.data_size; - return 0; + ret = 0; +fail: + av_free(vps); + ff_cbs_fragment_free(&frag); + ff_cbs_close(&cbc); + + return ret; } static int qsv_hevc_set_encode_ctrl(AVCodecContext *avctx, @@ -274,7 +256,7 @@ static av_cold int qsv_enc_init(AVCodecContext *avctx) return ret; if (!q->qsv.hevc_vps) { - ret = generate_fake_vps(&q->qsv, avctx); + ret = generate_fake_vps(avctx); if (ret < 0) { ff_qsv_enc_close(avctx, &q->qsv); return ret; From patchwork Tue Mar 26 05:27:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47486 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c889:b0:1a3:b6bb:3029 with SMTP id hb9csp1608639pzb; Mon, 25 Mar 2024 22:28:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVWxVUPBgSxI2IinhaJvu0S4WuY8xTQ4ilFBUToEtIv3u3KKxqgLNW4PPwxjsUxb25NiW0KfwsPXTMqHhWgjOPaznIyhrtHNadPxQ== X-Google-Smtp-Source: AGHT+IFzyRv+rZ6aPTFfRhc71IWaentCN32ybhqgkl540V7PBodE+zOpBVm754ClNXqj1qfDsU/h X-Received: by 2002:a05:6512:3119:b0:513:aef5:b431 with SMTP id n25-20020a056512311900b00513aef5b431mr5519603lfb.4.1711430899290; Mon, 25 Mar 2024 22:28:19 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g12-20020a170906394c00b00a465d48539dsi3002281eje.242.2024.03.25.22.28.18; Mon, 25 Mar 2024 22:28:19 -0700 (PDT) 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=T4zye6Mr; 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 CC9F168D54F; Tue, 26 Mar 2024 07:28:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2036.outbound.protection.outlook.com [40.92.48.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8A9568D531 for ; Tue, 26 Mar 2024 07:28:06 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=COdLt+HxiMeHK5uXVHFNxrwtgX8V1qcg6+e1RroNAJYl66eZIsptpp3F/w3vMRFh48yc/gObWd2sMZCK2ggtGBGJkk+fHGwc9l1BaM+gw/oajdptY0kb7WjJsoqxcdCKQQ9zimJ+fV/Zujn+0YCqwXVmklXE5j20cz3wSPHj+KE4fXz6awU/dX8hNBbuBcmPtTx5Ue6huCHBg4bvD2Tr5uKyxfHXbI2SbpKNkuurTpDQmt/HYL0WzyKZLhf6N11DHx30pBDOoDda2c2gVD62LFw1D3Sc8Uf8j9IKNX8YUpx1I1wzWHlI9ln9CZ54GuHn8S9ax9+WUq0rRFXzV12O5w== 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=bBitlQmSTPY3d0gNnJi1eRgHUBVPOnaR6GZO6jizCdQ=; b=mVtJDua4lEXTWmKJYGaKlgCGfUmW9F2MEgl6jczrd6LSVZvik6g3kkSoTHj4kqRJmHmWC1urYSJyadr3wuiyEsHLNYWcvCRYKoiWsExHQSHWFYwU10PKRcF1NyGSIKFsUCBBD0X6Eb/1iZOxokSdMopl3nfg0gVL7hDIulUTLoAbea65cC26/wnf1HHeBchfUHfpim+fsdnnY1H2f+dFrVmTQPgEiXJyL3uaMsD7/4rXLaiCQvPKRaFHURElJHBYi52iej2m1xErO8sJDnREFEqyDCvBUAATyRWVJ9V/0ouMvahbrrjcVg+zSgEvWMkZeReQSfM/BRVssVtLO9Hmiw== 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=bBitlQmSTPY3d0gNnJi1eRgHUBVPOnaR6GZO6jizCdQ=; b=T4zye6Mr0GUhHLxV/XVCtugXxeyMI6O4jNVo9gtZQ/FJrE0vGiEWejdWb9SCb4f1KRHOXPwRaVmQQMiFiv44SA+YOBD1hMxnaoRYjM4Z/hmyk1zFiH6zj21gvOjl9t8j2kTlQNavjgnIjNUlqxIauMiECcb3OuRCGqgiwNRG2j3xSKJdbusmXBEvNeBEaOvX69senMaNnm0JTdwODjkPyYEcZqw11bcVyuAMJVHgF78VmBPpDw1UGaSqKdYpbaWWHgydFdqyCJesKgklXkCg5rH7uIdU+cah7kSYCIDWUYkQwojCcPF/UvmAo3wgYRsIYGIDbErQ6IIPXiYyb3Ll2A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DB9P250MB0498.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:33c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Tue, 26 Mar 2024 05:28:01 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.028; Tue, 26 Mar 2024 05:28:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Mar 2024 06:27:51 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [y+xAtByUm+xn3w8R+EnFkH9vCu9Tj75tY2EuLfwgGaA=] X-ClientProxiedBy: ZR0P278CA0216.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::7) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240326052751.3580990-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DB9P250MB0498:EE_ X-MS-Office365-Filtering-Correlation-Id: 2237e61c-b11b-481c-b6bd-08dc4d5580f6 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqkjmXb1vlddM5aSa/Epk3AaPVsKpUK9EsfMEurh+XOVTsBieZuFGGFvxa6DzoJe0C/hH3YlCl6MJDltFLLkEEavgit52yjySmX88QrrNBi5SlBEuD3uqchsclxVC6LHT7U2tDiIolZj3oKqCtRvRg633FS3U0dJEd/A3Bh5qWEOOPQS/lez41DlAkBaFvXW/Ude6s3VXEVOjRziHJ1/c4V0T6M6M2nmeNkbBmSjq1+RMnEsxyMMz7DK12zKTFtnRU57K+s2YaRumR7K2AUGqGmOkX2s127arLwuGG0lwWDcVM0FdXNCU847V7q7RjE8bJYIVsG0X+avg2FzeKvgA2JjkGBQQG4BCJNLAEevC4nS4QFBGUCFpaB0xVdTex21kOYtrDbTgbVw6uiPitGM9e+NgCvSXbnPyTjy0HgfoXzBgLz6YKEZtSsJ5mv41KKd6tUN7Em8ujbejajxHl4hs4JJ6JAYEqzGRk609Xa44t5huJwlNEjg03eEm+DoW0UNLBa8e0JbVYXKW3xLRbkAR6Mf6pfrfNq9FvAKv3zZPtzz7hGLVTNJW+legoQpE8kVwqwgcF+HgTdjJ4FVtVUyymIi6N7S/tNC3FPrspJp9NCT3vO6V1yxlBQjn3fa3ADPtffp3D/eaFraLqbbrghjQmNHRPiedZ+w77a8no7nDtkebMTdr96/oz3222qi6TciBWMgkdozqlflPeT1A8XYg1vf7G3ZRfQ+X8WbhdflYPMMDpcHf57RGstBvaGVxMyEdk= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5A7N+zPaEkh82fcwDwWbmzOWwE1TV5ArkZXR8bHLZMujK6WpsX2dVy0GMGYuLh7QKCwhYBMrdJ6o0cC+DMPR2uA1wXoTwprSfjNlhktCLI/VOARNQh385q49Osho29VwhK07W6B95ExDYdo65M42fjBDq/Ih6Tu3SdMRUZbHqKjhV+WxcaAwwXKKJ4H99cWrh+/t75xUexukoXzl/KQk0lODrZcCUZ2YzluoMruzvJ8YQWPN2jLLd3D6EntECk3fYz/wkI1v8WuCOCgy9dHKGkJM7EeuJ59yfFkCI+4zbtdQXcqqsFySkgGvT+qMI0Od/PZLMArlLcOvZ4EzMx23tIbDrW4eGqxG1j0GDlBA42zY2S6YW108+HBEY2wyB8IaRtxJTV3/HNfL8LNs2a7o0Z76ogNhYA2rXSG12vIInY6Um8wnGAxj8nrcMzZoe6IB04C2XJFz2dRi7tOamDL2xvV6MjEtX26kHLh9Mudm3zVozyBhEBIfS9+k3tHrjUJJ9jVDhDX3MtLxsvHCkFrwRYJ4Oed0VsiWjmslsF8jBaabgHi2mm6cUo3yn2e8pCI9jkIdzcAAcaiXzRL9vJl5QgRo3DCyFQu6uRfKCT2JcF6Ha2zkX+9xWRmW09a04PqP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gbi2gQxsZN+/msQnlBEzGjyi5zgCTrLAh/A94jnDWaj0xJLCrQjeqENBWgrBetobhQ/Mcqh6cPfVXLd8GHvG4U6ZgbH57W91jrOOcfMT3wjhOmEzBqOvtZA42EA9+JGFt9H+zE3N0t1epsUOm8FFqZXsrQuT0Im/curZ9ZvZ0H6Bhe9ig3mRFs0r/wUzvhfZhBJR5UWQ/rE1u7Jb8sA7tc3ht8p5kBukZ0Cf1Odc2a3wmqkIQc0lay/Tkyzcw26z/LSfiuPEE5clbb6FbvS38OJFeSuscoG6v2Q7R9uCsWGHoOVOhShCtqHwy5EQ+FQIMJ/LbMVywrmNvezbCUA/Yv8tCbge/eNUqk17VUobP4iszI/PlwRloPd0aCUZ3nuIIuOD3jiCZV0754aVGW7E+vbri7UmeD96vW16pRqH+GoTyNYCZDttXOvhICSvNs9JLw1fgoJa/tMa7wnO0uKeSEWWxYLayOuny1uwMruW07329VvZumLKO+xnWoOJnmI8yitPjP1XpB96gy2vz66mFe3+ONABdULoduVKBb8aoB6MmjU7AhMUijNzqJHg5HieCg0bvxUyOpL/iG9+gbyzmdMqt98YHNTPF9Lx7t8pgpZilEQAy2hVh2beuZLaH7mw9TKVJhSbWqr2NY21UwwDhcDRK4Hmo5Uh7jsSoZ5VyCekOK4nokf5Tv3+uyBRj4u/7cbeGazVOZl4mXZcLoYCg0WNuwxiCbVp7yODgFLVTMOlu23+2xBwPe/l0RK/RJNrLehVpVb1ORhS2+lUXbewZx7vccqV8HWV1nUfYb/+svcQbpXr3fWKp4tgYsGhYnUZir00lyHunhEpyy6/PbmzS8O99/7LaBPsznxd4lDtUH/RQU4sVsfqoIQD1RnjQwPu+la4y/vT0jbXR9bia7qXNFSUCaaelhrqUVdj+phiYJdSgkvyuNcoCe98PPewHCR+6DUjSO6fshUZBwjJpsQUq7T5ErhLyzg6aZC466LecyxTnIVGIEegHL7QfByBvOiiXqS7QsLksBClG7feAfaZnEctE6YKJzSRx4q/7K+rTC5ThUucGJtg1NZ7/IZbwIWEMeT/FfUDCILUL6Ua/bfpzMICG/3fmCiJEuJ2SRb8CDoHmKLj4K1ltHF9mXNcSCBRtAcVwx8dqVQU9CiV4bRgvNTr5FDJVZotNay5808LvVgLfUQjubHuCupvhtrz5uYLjszGsb7/EXn7kEcHvkzx0soOb3sXEhSFaO3753JCtHH2SND7Eb0fbH9SyKgix/vz+bsbk1Q4JN1MIlUBYmCHtQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2237e61c-b11b-481c-b6bd-08dc4d5580f6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2024 05:28:01.2717 (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: DB9P250MB0498 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/hevc_ps: Make ff_hevc_parse_ps static 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: VpIrUaDrxR6U It is only used here since its other caller (qsvenc_hevc.c) has been switched to cbs_h265. Signed-off-by: Andreas Rheinhardt --- libavcodec/hevc_ps.c | 14 +++++++------- libavcodec/hevc_ps.h | 13 ------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index cbef3ef4cd..4e2c36b448 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -866,9 +866,9 @@ static int map_pixel_format(AVCodecContext *avctx, HEVCSPS *sps) return 0; } -int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, - int apply_defdispwin, const HEVCVPS * const *vps_list, - AVCodecContext *avctx) +static int hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, + int apply_defdispwin, const HEVCVPS * const *vps_list, + AVCodecContext *avctx) { HEVCWindow *ow; int ret = 0; @@ -879,7 +879,7 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, sps->vps_id = get_bits(gb, 4); - if (vps_list && !vps_list[sps->vps_id]) { + if (!vps_list[sps->vps_id]) { av_log(avctx, AV_LOG_ERROR, "VPS %d does not exist\n", sps->vps_id); return AVERROR_INVALIDDATA; @@ -1307,9 +1307,9 @@ int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx, } memcpy(sps->data, gb->buffer, sps->data_size); - ret = ff_hevc_parse_sps(sps, gb, &sps_id, - apply_defdispwin, - ps->vps_list, avctx); + ret = hevc_parse_sps(sps, gb, &sps_id, + apply_defdispwin, + ps->vps_list, avctx); if (ret < 0) { ff_refstruct_unref(&sps); return ret; diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index cc75aeb8d3..82fa5bf820 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -447,19 +447,6 @@ typedef struct HEVCParamSets { const HEVCPPS *pps; } HEVCParamSets; -/** - * Parse the SPS from the bitstream into the provided HEVCSPS struct. - * - * @param sps_id the SPS id will be written here - * @param apply_defdispwin if set 1, the default display window from the VUI - * will be applied to the video dimensions - * @param vps_list if non-NULL, this function will validate that the SPS refers - * to an existing VPS - */ -int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, - int apply_defdispwin, const HEVCVPS * const *vps_list, - AVCodecContext *avctx); - int ff_hevc_decode_nal_vps(GetBitContext *gb, AVCodecContext *avctx, HEVCParamSets *ps); int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx,