From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 6AB81411E3 for ; Tue, 4 Jan 2022 09:03:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1654168B24D; Tue, 4 Jan 2022 11:03:28 +0200 (EET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068107.outbound.protection.outlook.com [40.92.68.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 16B6168B1B1 for ; Tue, 4 Jan 2022 11:03:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XAaO+s9EnlPXu2viJI8/+KgLVZ/NMuhDFUxYHxpYDbvHjRn/vj3AzmdgaBUmHr1z+p8sLm4FD8gV97pbsCXmtZ6/3hcbXN+heQByUnuvfeTyQd1GhjPeA1C00D2j2t0o/4fE0Zyaup6aePXf/++SEAWSdVJc/5CEwWT+XPKu7fl6KlrV6uhTQfTG5k6ZXD+E17mCc9eRwvjQ8hfywgEvuIKaVPgxymcOWe607pcGgaIgPcYk8Cq/UsB0xSobLULJ1udjY7Vl+3fNA11CXxYv7QERuaM4bb97+JFlehsUWifl8qXFRX9MqaEA0NNRxXdmw0yQHXloVCKR5iCcj6lWLQ== 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=bMRF92QC+jH+BauRHMD9qXHG5XJFzRwZrtg8oWNzRyQ=; b=nAM1qzvgib6vKyv6L27y4ubcX6R/T1VJzCPKgFP+dgHg8Ssds3fdgcgTPgnvkkAQzffW9nPAb7NFtjVyIsCFlUjRP+nPupIc7CAWHbbrPXATIFnGgEltROKAuqENT2rC+gTKP1YAIoXrDvsuCHMGS/PRDjWcenBl2vkQznZQBN75gXJc7LuFUJY7FVj/btCzeGeLry6XF0X3EJ8u3Cshqsspz7TQr/MSyqVdpMaNkAB8NVugNCkEt0gsazSWRVpIJjSNIG4C6WjzbkZSzgyNV3gGE7JJDKV73+d8HHaEBFRVyzkPMm00qPw5AUPzgvdasEHmVfiXm/xQxNyx7ojmSQ== 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=bMRF92QC+jH+BauRHMD9qXHG5XJFzRwZrtg8oWNzRyQ=; b=HpitxZhs1J+0fQOIxrGAJPiwPrHpV+r2tmx72Zx2JyZvEKBu1KCgn0f7CpM0UVMWFImdATsiq1CFdRDYKf61ZEtzE/NP/RL6ExPF2BcNFFBRweL7+7xLDwKrQVOKdzlr+6Zc3/KOCfKzF/YAMH4aZwxc//SgnNtxT6YlxoJ1l3mQulUYldj/NXR53bgPDI22qLQ6gDg51EAaxWE/JDnTUMxmf3m4eyx2YWkQvQEWv6EqwBWrdQjY4y0FllaQ5Rr9NEYzw6L4651PLY/35tbWLZY6SpUSJoO1xCDE15ulVA7WtczbuLxEb4dO3jSA3XWGr5EBZwpIPovbc31nZtQC1w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5605.eurprd03.prod.outlook.com (2603:10a6:20b:da::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.13; Tue, 4 Jan 2022 09:03:19 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%6]) with mapi id 15.20.4844.016; Tue, 4 Jan 2022 09:03:19 +0000 Message-ID: Date: Tue, 4 Jan 2022 10:03:17 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220103085510.7309-1-ffmpeg@haasn.xyz> From: Andreas Rheinhardt In-Reply-To: <20220103085510.7309-1-ffmpeg@haasn.xyz> X-TMN: [syiUNV/XvzNe56rRsbIfoqtJM2APPyE8] X-ClientProxiedBy: AM3PR07CA0116.eurprd07.prod.outlook.com (2603:10a6:207:7::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <26588c70-c06d-2069-16d9-1c2da51e555e@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddd7fd8d-3e86-4f63-6bbe-08d9cf610cf2 X-MS-TrafficTypeDiagnostic: AM6PR03MB5605:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BIMUs2HPz276fBy/w0/bnDot/iA/dthzDV0jMY2cN+4L8y/NyICEtH6zHgIVxBPXV1bynsbPzoYoyMeMpet8UbElaz66Xzu1lIhjSOzttrbFP3/+5CiFGGVkMzJoIQoHNv/E0u/rwlIEaEIlNQffNTPHtUhVPCeLU3tTnvEFmiXJKhX0ArtlJXd1+edLB2+zw2e5/P+lv9rCMbWrxUxx5H4OddbVQt7JiI8M2Yp68iuvH8aaQkQ5/tZQhkFrNWcQb6pYNt7T3ZhYCFlUh0WxsrVQmFBChUOGOAYzJiGfrM8228YwXRNXmn2OUsioMWBGVUKvuQD/PVRiCYiozgKYdTxs97laRn36FWL006tKblU4UehCQG17tcLpvfL4k6JOMf2Rs8XGhBqlngEoZNfgIDbJK502/WUjJXED52TU9wwgaw832sJG6PkRur7CqBJGTGVe3GvGg51jtqo4KSE+2sd72Poh3TFNbqfnwIlO0A5Nf95HT2cyGetY2hQxlQcW+23/MdS6y2GU/A14qr/1My/CMxB/t1qCYE2bT1xtmYWcUatHyC7h2RFmLURvzeJRT7OKFfDh2meL/zbsDPWz+g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VGhubWsrbDFpM0VzcUM3b284dXFwOVYzbFBxMFc4MWZmQlA1M1lrdzZOS2tl?= =?utf-8?B?NjdpYkNVVGsxYzlxcm9hKzlFZ1IwOXZKckZuaUljVEZSU3ZqRlcvQzBlcXFZ?= =?utf-8?B?TjZFeXR1TGdNUkt5YmZMSFRrTDlFSEVvdUtOeHJ0QVR6b21lQWN6MXlaQVZN?= =?utf-8?B?NFB4SGh6SG9ETWtPSjg0L3VjNXY2SGZlNGFDOVFDVXgrQXkrbWdxRGVrZkRt?= =?utf-8?B?QjY1elI3V1hBd3FORU9Pei9DbFZIZ2ZHWVZBVXFXT2pkVks2TVRFVk1CT1Z4?= =?utf-8?B?SGhYWXNYUnc4bGxCYmFuSXVSVy9kcTFONk8yUUU4VmZGY1E2Kzl5b2dZNkJY?= =?utf-8?B?aDQ2bXFYNHVDdDdJeitlcGFhWnBBRStJWjhxNWExWmRlZy9lSXpEZ3ZVbFl3?= =?utf-8?B?UTI5UkdUU0xzeWZwWWo2UFR2K3FRSkYveUJtbDdxTzdvY1E0WlorODVhRjg4?= =?utf-8?B?VG5KbFViYjRYWWNWTFpwRHVTZHQvZmFaSjlEekJlNDNpWFprNHk1dzFRSFZi?= =?utf-8?B?ZmxxMTQ5U3EzQU5BeU1sSDIzY0VjaDFKU1dKVUxOajhFMWZoNkNUZzNoakti?= =?utf-8?B?TG9NUmlMZVpZV29HTDAxYXNFRXU4TStGZXB2SStYYVUyOUhDak9ZQmJlVFVz?= =?utf-8?B?TzhOR2JNZko0VmkzU0JWM1NEU2FrWHIxeE41djd2NnFOUS9jSU13SFkwd01y?= =?utf-8?B?R1gxV3JxSUUwbDRDOEZ5WlptQ3Y5cTM3ZU5TUzhaVWFuZXRmekZ1ME1YSWV5?= =?utf-8?B?NUw3S1pNNHYrbWNrTnlTRDJvQ1hTcDE0eERNWkhKSERRWlFhT3VLb3VGdWRh?= =?utf-8?B?QVgwNG5CZkJuYzNabytOWXFrTjY2MHN6Vm1wc2R4UDhHbTRBOUw0ZytGZmJ1?= =?utf-8?B?RnZvZDQyOEE0RFVEQWV4blBNSnNXNUVxaFFRSWNZN1NXcjRkbFA4djRrdk51?= =?utf-8?B?bitwaEhld2pwYUtBU2JpNlRTWXpYTnZBaFdxai9rY0xzYUlZY2ZTRit2cTFU?= =?utf-8?B?bnJaSVZYUW1pSXF5ZW5TK21td2tuV0ZWL1FKOGhOMytGU0tESkoxZkxCMnlv?= =?utf-8?B?TVZxZURkRjdnZlFXcWhidjd3YjNHaE1WUkdkZ2ZJc1p5UDl4Q3cvNE5NQ0l5?= =?utf-8?B?NXB5YXJhUWtBTU8yLzA1TWx6QU5STEVxSXBBVGJNeUJJWkRLbnZKUmFQM0hY?= =?utf-8?B?YWwzdy81azFDNStmQ1RUa09DelNhV1VRQzdVU1pjaTdFN0RySlVxcGNCalRR?= =?utf-8?B?czVzdFpOTVJsY1poRkxKZUhzeTJNcmZyZTE0T1ZVcGRaRkdGQT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddd7fd8d-3e86-4f63-6bbe-08d9cf610cf2 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 09:03:19.0170 (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: AM6PR03MB5605 Subject: Re: [FFmpeg-devel] [PATCH v11] lavu/frame: Add Dolby Vision metadata side data type 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Niklas Haas: > From: Niklas Haas > > Yeah, I think I agree that this is probably the best compromise here. > > Updated documentation (and also changed one unnecessarily-large uint64_t > to uint16_t) > > --- > In order to be able to extend this struct later (as the Dolby Vision RPU > evolves), all of the 'container' structs are considered extensible, and > the individual constituent fields must instead be accessed via offsets. > The precedent for this style of access is set in > > > Signed-off-by: Niklas Haas > --- > doc/APIchanges | 3 + > libavutil/dovi_meta.c | 25 +++++++ > libavutil/dovi_meta.h | 166 ++++++++++++++++++++++++++++++++++++++++++ > libavutil/frame.c | 1 + > libavutil/frame.h | 9 ++- > libavutil/version.h | 2 +- > 6 files changed, 204 insertions(+), 2 deletions(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 670a59329e..5721486f09 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -14,6 +14,9 @@ libavutil: 2021-04-27 > > API changes, most recent first: > > +2021-12-xx - xxxxxxxxxx - lavu 57.14.100 - frame.h > + Add AV_FRAME_DATA_DOVI_METADATA. > + > 2021-12-xx - xxxxxxxxxx - lavu 57.13.100 - hwcontext_videotoolbox.h > Add av_vt_pixbuf_set_attachments > > diff --git a/libavutil/dovi_meta.c b/libavutil/dovi_meta.c > index 7bd08f6c54..9c50da561e 100644 > --- a/libavutil/dovi_meta.c > +++ b/libavutil/dovi_meta.c > @@ -33,3 +33,28 @@ AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size) > > return dovi; > } > + > +typedef struct AVDOVIMetadataInternal { > + AVDOVIMetadata metadata; > + AVDOVIRpuDataHeader header; > + AVDOVIDataMapping mapping; > + AVDOVIColorMetadata color; > +} AVDOVIMetadataInternal; > + > +AVDOVIMetadata *av_dovi_metadata_alloc(size_t *size) > +{ > + AVDOVIMetadataInternal *dovi = av_mallocz(sizeof(AVDOVIMetadataInternal)); > + if (!dovi) > + return NULL; > + > + if (size) > + *size = sizeof(*dovi); > + > + dovi->metadata = (struct AVDOVIMetadata) { > + .header_offset = offsetof(AVDOVIMetadataInternal, header), > + .mapping_offset = offsetof(AVDOVIMetadataInternal, mapping), > + .color_offset = offsetof(AVDOVIMetadataInternal, color), > + }; > + > + return &dovi->metadata; > +} > diff --git a/libavutil/dovi_meta.h b/libavutil/dovi_meta.h > index 299911d434..3d11e02bff 100644 > --- a/libavutil/dovi_meta.h > +++ b/libavutil/dovi_meta.h > @@ -29,6 +29,7 @@ > > #include > #include > +#include "rational.h" > > /* > * DOVI configuration > @@ -67,4 +68,169 @@ typedef struct AVDOVIDecoderConfigurationRecord { > */ > AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size); > > +/** > + * Dolby Vision RPU data header. > + * > + * @note sizeof(AVDOVIRpuDataHeader) is not part of the public ABI. > + */ > +typedef struct AVDOVIRpuDataHeader { > + uint8_t rpu_type; > + uint16_t rpu_format; > + uint8_t vdr_rpu_profile; > + uint8_t vdr_rpu_level; > + uint8_t chroma_resampling_explicit_filter_flag; > + uint8_t coef_data_type; /* informative, lavc always converts to fixed */ > + uint8_t coef_log2_denom; > + uint8_t vdr_rpu_normalized_idc; > + uint8_t bl_video_full_range_flag; > + uint8_t bl_bit_depth; /* [8, 16] */ > + uint8_t el_bit_depth; /* [8, 16] */ > + uint8_t vdr_bit_depth; /* [8, 16] */ > + uint8_t spatial_resampling_filter_flag; > + uint8_t el_spatial_resampling_filter_flag; > + uint8_t disable_residual_flag; > +} AVDOVIRpuDataHeader; > + > +enum AVDOVIMappingMethod { > + AV_DOVI_MAPPING_POLYNOMIAL = 0, > + AV_DOVI_MAPPING_MMR = 1, > +}; > + > +/** > + * Coefficients of a piece-wise function. The pieces of the function span the > + * value ranges between two adjacent pivot values. > + */ > +#define AV_DOVI_MAX_PIECES 8 > +typedef struct AVDOVIReshapingCurve { > + uint8_t num_pivots; /* [2, 9] */ > + uint16_t pivots[AV_DOVI_MAX_PIECES + 1]; /* sorted ascending */ > + enum AVDOVIMappingMethod mapping_idc[AV_DOVI_MAX_PIECES]; > + /* AV_DOVI_MAPPING_POLYNOMIAL */ > + uint8_t poly_order[AV_DOVI_MAX_PIECES]; /* [1, 2] */ > + int64_t poly_coef[AV_DOVI_MAX_PIECES][3]; /* x^0, x^1, x^2 */ > + /* AV_DOVI_MAPPING_MMR */ > + uint8_t mmr_order[AV_DOVI_MAX_PIECES]; /* [1, 3] */ > + int64_t mmr_constant[AV_DOVI_MAX_PIECES]; > + int64_t mmr_coef[AV_DOVI_MAX_PIECES][3/* order - 1 */][7]; > +} AVDOVIReshapingCurve; > + > +enum AVDOVINLQMethod { > + AV_DOVI_NLQ_NONE = -1, > + AV_DOVI_NLQ_LINEAR_DZ = 0, > +}; > + > +/** > + * Coefficients of the non-linear inverse quantization. For the interpretation > + * of these, see ETSI GS CCM 001. > + */ > +typedef struct AVDOVINLQParams { > + uint16_t nlq_offset; > + uint64_t vdr_in_max; > + /* AV_DOVI_NLQ_LINEAR_DZ */ > + uint64_t linear_deadzone_slope; > + uint64_t linear_deadzone_threshold; > +} AVDOVINLQParams; > + > +/** > + * Dolby Vision RPU data mapping parameters. > + * > + * @note sizeof(AVDOVIDataMapping) is not part of the public ABI. > + */ > +typedef struct AVDOVIDataMapping { > + uint8_t vdr_rpu_id; > + uint8_t mapping_color_space; > + uint8_t mapping_chroma_format_idc; > + AVDOVIReshapingCurve curves[3]; /* per component */ > + > + /* Non-linear inverse quantization */ > + enum AVDOVINLQMethod nlq_method_idc; > + uint32_t num_x_partitions; > + uint32_t num_y_partitions; > + AVDOVINLQParams nlq[3]; /* per component */ > +} AVDOVIDataMapping; > + > +/** > + * Dolby Vision RPU colorspace metadata parameters. > + * > + * @note sizeof(AVDOVIColorMetadata) is not part of the public ABI. > + */ > +typedef struct AVDOVIColorMetadata { > + uint8_t dm_metadata_id; > + uint8_t scene_refresh_flag; > + > + /** > + * Coefficients of the custom Dolby Vision IPT-PQ matrices. These are to be > + * used instead of the matrices indicated by the frame's colorspace tags. > + * The output of rgb_to_lms_matrix is to be fed into a BT.2020 LMS->RGB > + * matrix based on a Hunt-Pointer-Estevez transform, but without any > + * crosstalk. (See the definition of the ICtCp colorspace for more > + * information.) > + */ > + AVRational ycc_to_rgb_matrix[9]; /* before PQ linearization */ > + AVRational ycc_to_rgb_offset[3]; /* input offset of neutral value */ > + AVRational rgb_to_lms_matrix[9]; /* after PQ linearization */ > + > + /** > + * Extra signal metadata (see Dolby patents for more info). > + */ > + uint16_t signal_eotf; > + uint16_t signal_eotf_param0; > + uint16_t signal_eotf_param1; > + uint32_t signal_eotf_param2; > + uint8_t signal_bit_depth; > + uint8_t signal_color_space; > + uint8_t signal_chroma_format; > + uint8_t signal_full_range_flag; /* [0, 3] */ > + uint16_t source_min_pq; > + uint16_t source_max_pq; > + uint16_t source_diagonal; > +} AVDOVIColorMetadata; > + > +/** > + * Combined struct representing a combination of header, mapping and color > + * metadata, for attaching to frames as side data. > + * > + * @note The struct must be allocated with av_dovi_metadata_alloc() and > + * its size is not a part of the public ABI. > + */ > + > +typedef struct AVDOVIMetadata { > + /** > + * Offset in bytes from the beginning of this structure at which the > + * respective structs start. > + */ > + size_t header_offset; /* AVDOVIRpuDataHeader */ > + size_t mapping_offset; /* AVDOVIDataMapping */ > + size_t color_offset; /* AVDOVIColorMetadata */ > +} AVDOVIMetadata; > + > +static av_always_inline AVDOVIRpuDataHeader * > +av_dovi_get_header(const AVDOVIMetadata *data) > +{ > + return (AVDOVIRpuDataHeader *)((uint8_t *) data + data->header_offset); > +} > + > +static av_always_inline AVDOVIDataMapping * > +av_dovi_get_mapping(const AVDOVIMetadata *data) > +{ > + return (AVDOVIDataMapping *)((uint8_t *) data + data->mapping_offset); > +} > + > +static av_always_inline AVDOVIColorMetadata * > +av_dovi_get_color(const AVDOVIMetadata *data) > +{ > + return (AVDOVIColorMetadata *)((uint8_t *) data + data->color_offset); > +} > + > +/** > + * Allocate an AVDOVIMetadata structure and initialize its > + * fields to default values. > + * > + * @param size If this parameter is non-NULL, the size in bytes of the > + * allocated struct will be written here on success > + * > + * @return the newly allocated struct or NULL on failure > + */ > +AVDOVIMetadata *av_dovi_metadata_alloc(size_t *size); > + > #endif /* AVUTIL_DOVI_META_H */ > diff --git a/libavutil/frame.c b/libavutil/frame.c > index 0912ad9131..8997c85e35 100644 > --- a/libavutil/frame.c > +++ b/libavutil/frame.c > @@ -729,6 +729,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) > case AV_FRAME_DATA_FILM_GRAIN_PARAMS: return "Film grain parameters"; > case AV_FRAME_DATA_DETECTION_BBOXES: return "Bounding boxes for object detection and classification"; > case AV_FRAME_DATA_DOVI_RPU_BUFFER: return "Dolby Vision RPU Data"; > + case AV_FRAME_DATA_DOVI_METADATA: return "Dolby Vision Metadata"; > } > return NULL; > } > diff --git a/libavutil/frame.h b/libavutil/frame.h > index 3f295f6b9e..18e239f870 100644 > --- a/libavutil/frame.h > +++ b/libavutil/frame.h > @@ -189,11 +189,18 @@ enum AVFrameSideDataType { > AV_FRAME_DATA_DETECTION_BBOXES, > > /** > - * Dolby Vision RPU data, suitable for passing to x265 > + * Dolby Vision RPU raw data, suitable for passing to x265 > * or other libraries. Array of uint8_t, with NAL emulation > * bytes intact. > */ > AV_FRAME_DATA_DOVI_RPU_BUFFER, > + > + /** > + * Parsed Dolby Vision metadata, suitable for passing to a software > + * implementation. The payload is the AVDOVIMetadata struct defined in > + * libavutil/dovi_meta.h. > + */ > + AV_FRAME_DATA_DOVI_METADATA, > }; > > enum AVActiveFormatDescription { > diff --git a/libavutil/version.h b/libavutil/version.h > index 3cac09cb96..318045d4c4 100644 > --- a/libavutil/version.h > +++ b/libavutil/version.h > @@ -79,7 +79,7 @@ > */ > > #define LIBAVUTIL_VERSION_MAJOR 57 > -#define LIBAVUTIL_VERSION_MINOR 13 > +#define LIBAVUTIL_VERSION_MINOR 14 > #define LIBAVUTIL_VERSION_MICRO 100 > > #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ > No further comment from me. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".