From patchwork Fri Nov 3 09:57:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Siedel X-Patchwork-Id: 35004 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:181:818d:5e7f with SMTP id q28csp429727pzh; Fri, 3 Nov 2023 02:57:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGcuaba5R4SA0KZivPqgsZZnoH7lTcE6s1GwyLVjsQEhjv0hFwt0zqUSWaWCiuzGEkM331e X-Received: by 2002:a50:d486:0:b0:543:7d84:1dae with SMTP id s6-20020a50d486000000b005437d841daemr7839472edi.4.1699005472065; Fri, 03 Nov 2023 02:57:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1699005472; cv=none; d=google.com; s=arc-20160816; b=ah9QZkruOVN02+cou3IrKxdXw/FeihF8lDuTd8OS47hayrGMxiTNhCm15ZoZX3FqVj SFFrqdVwXgFjx1HgCUPAsgRB46nBYvn2kBfhEIek30LcVNTwV4CPIInXb9rdXMTWYmPj FP5vydNiUiW8bykHQ1h7zUtRl8yX+iUkoDTKdPTWx2vOFkEOqe2aWW+iRc4YKNUo1+x/ PA6g2sugtxq8ZuiW7DoViFCfbIBOFVK5NaRH1EIYWhdji/iFpZ5kQCKttkjcTMWlo+tl 3MmzfcL0vlLUknYOhuIhhUo4hzXXXxXRtir5Cxfz8o+tiLtEyJokfg352zuLS+3nJ0jG JXFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=FJ5+xwXVfBnlcFd8t0W+1kNl1DWNRguWcZFbvLMbzwI=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=MhZnyiJojkEfk9dePCB8JT3kmWborxYd7fyBFBRoeBYwMVJIw/3SbqjVv/wNoXVwH7 UlXXJFUZCxDoQO80whYa06r0zNR9UMxUmsaS07bjecospT5gHeSTY8J2Aa235r4dDnAb oFowwT1A8COqStuoXww76MxZZs0e1hzNr85l21VV3kZwyM/RWuMIhogtnwiK5etpa5jo DvMdvftqrnvDqFdfRtcnPKedtz2uNa94WLqAftG1YIYMYDYIT6mQfFrQsHWs0wTE6d3N RKgXG1hHW+V0sliuNc4YaqcaO2+sustcefePUtbHjHph01bFdukpg+89CHsDs65TOOPE r6Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@spin-digital-com.20230601.gappssmtp.com header.s=20230601 header.b=ma8P1IQQ; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r5-20020a50c005000000b0053eaecd645asi821880edb.642.2023.11.03.02.57.51; Fri, 03 Nov 2023 02:57:52 -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=@spin-digital-com.20230601.gappssmtp.com header.s=20230601 header.b=ma8P1IQQ; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B50868CD07; Fri, 3 Nov 2023 11:57:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5CB3868CB7F for ; Fri, 3 Nov 2023 11:57:41 +0200 (EET) Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-53e2308198eso3134330a12.1 for ; Fri, 03 Nov 2023 02:57:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spin-digital-com.20230601.gappssmtp.com; s=20230601; t=1699005460; x=1699610260; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=n4eOPylFCDgcNLUk1g6kRkzXnrpUmsk9jrzGA+LiHZ0=; b=ma8P1IQQcp0b9oToj1bGY+ga4S/AFHcIUOOeC6n2DqRkniuVR8PWerVHUTZ7tDi7W0 fwICzBNErUW18pDfbygCQDsuP0MAyrxcMO66X6HQX/dALvdmieiLH3skvHNBO4kjU2zV 285FA1v334NDYnqCWNMvbAHw8AGTHWMNk5l1+QkpYvPNKLr6N4SK/f1b5nA7kJsfDLF2 1KWojK9HWjBLUmGjID0nvwdUow1JldBzLWvZ1CrYuDaNLGfzv305A86gqlCQwUIk7CQ9 UM4gad2zxg4gfayDduj8g8gpdMfvhD6yD5VSb3+zzINmw+L4hTBUd3kEjrNP9MID+ow5 Enlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699005460; x=1699610260; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=n4eOPylFCDgcNLUk1g6kRkzXnrpUmsk9jrzGA+LiHZ0=; b=xTTWdDnuXLaQw8olaPaEsgB8DVxpEsN4HIKC48Mlby/mwfq5hAbUm0G0216tUYGMKL 8dxUntye72zO+zkyu4YVoxvYY6CXxDlT6/mRRsL/mBxntnK5NuNR7G79NFrt9XnOLZj/ dYQ0JvYQJmKKfymBG50B0AhudEWVOUMi74UrghyQu7XAqNxz3MNS6ffKtBE2hNI9ta4+ 2c6nAmv1ArRxhTJBI5WUa9yg6SZNkgoDwMWmWUXyN9VdMh4u3CZPLv13dFKOSj6BAmlM eik74MFIQIZOKsePaqn6IvMlxKCUeWyZKcYYkH+pKTM3ljvwI21h1d3gq9CkyS6RNVY1 5ssQ== X-Gm-Message-State: AOJu0YyZW5GTp0T41Qh3LEaTTOpVQh6V+KzWJmBjxmF3dYquxfcpmA8W 1iT0u39c5q/spFiLLXSJbfMzG+ofB0ORmQd1UPQ= X-Received: by 2002:a17:907:7d93:b0:9b2:b7f2:bc7b with SMTP id oz19-20020a1709077d9300b009b2b7f2bc7bmr6054134ejc.37.1699005460103; Fri, 03 Nov 2023 02:57:40 -0700 (PDT) Received: from thomas-win.localdomain ([213.138.44.237]) by smtp.gmail.com with ESMTPSA id s3-20020a50d483000000b00537963f692esm806214edi.0.2023.11.03.02.57.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Nov 2023 02:57:39 -0700 (PDT) From: Thomas Siedel To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Nov 2023 10:57:15 +0100 Message-Id: <20231103095720.32426-1-thomas.ff@spin-digital.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1 0/5] Add support for H266/VVC encoding 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dURP2Z+mX7gs This patch set adds H266/VVC encoding and muxing support. Encoding is done using the external library VVenC (https://github.com/fraunhoferhhi/vvenc.git) and can be enabled with --enable-libvvenc. As the counterpart to the encoder, decoding support via the external library VVdeC (https://github.com/fraunhoferhhi/vvdec.git) is also added in the last patch of the patch set. It can be enabled with --enable-libvvdec. Although a native VVC decoder is in development, this additional VVdeC decoder can be useful for streams with VVC tools that are not supported by the native decoder yet. Thomas Siedel (5): avcodec: add external encoder libvvenc for H266/VVC avformat: add muxer support for H266/VVC avformat: add ts stream types for H266/VVC avcodec: increase minor version for H266/VVC avcodec: add external decoder libvvdec for H266/VVC configure | 11 +- fftools/ffmpeg_dec.c | 3 +- libavcodec/Makefile | 2 + libavcodec/allcodecs.c | 2 + libavcodec/libvvdec.c | 567 +++++++++++++++++ libavcodec/libvvenc.c | 500 +++++++++++++++ libavcodec/version.h | 2 +- libavcodec/vvc_paramset.c | 1005 ++++++++++++++++++++++++++++++ libavcodec/vvc_paramset.h | 307 +++++++++ libavcodec/vvc_parse_extradata.c | 246 ++++++++ libavcodec/vvc_parse_extradata.h | 36 ++ libavformat/Makefile | 6 +- libavformat/isom.c | 1 + libavformat/isom_tags.c | 3 + libavformat/mov.c | 6 + libavformat/movenc.c | 41 +- libavformat/mpeg.c | 3 + libavformat/mpeg.h | 1 + libavformat/mpegts.c | 2 + libavformat/mpegts.h | 1 + libavformat/mpegtsenc.c | 65 ++ libavformat/vvc.c | 998 +++++++++++++++++++++++++++++ libavformat/vvc.h | 99 +++ 23 files changed, 3900 insertions(+), 7 deletions(-) create mode 100644 libavcodec/libvvdec.c create mode 100644 libavcodec/libvvenc.c create mode 100644 libavcodec/vvc_paramset.c create mode 100644 libavcodec/vvc_paramset.h create mode 100644 libavcodec/vvc_parse_extradata.c create mode 100644 libavcodec/vvc_parse_extradata.h create mode 100644 libavformat/vvc.c create mode 100644 libavformat/vvc.h