Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package AMF for openSUSE:Factory checked in at 2026-02-16 13:09:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/AMF (Old) and /work/SRC/openSUSE:Factory/.AMF.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "AMF" Mon Feb 16 13:09:59 2026 rev:6 rq:1333150 version:1.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/AMF/AMF.changes 2025-10-20 13:35:28.247609169 +0200 +++ /work/SRC/openSUSE:Factory/.AMF.new.1977/AMF.changes 2026-02-16 13:16:17.523413850 +0100 @@ -1,0 +2,7 @@ +Sun Feb 15 06:54:27 UTC 2026 - Enrico Belleri <[email protected]> + +- Update to version 1.5.0: + * Added 4:4:4/4:2:2 chroma subsampling support for VideoConverter + color space conversion and scaling + +------------------------------------------------------------------- Old: ---- AMF-1.4.36.obscpio New: ---- AMF-1.5.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ AMF.spec ++++++ --- /var/tmp/diff_new_pack.sxSntN/_old 2026-02-16 13:16:19.491495545 +0100 +++ /var/tmp/diff_new_pack.sxSntN/_new 2026-02-16 13:16:19.499495878 +0100 @@ -17,7 +17,7 @@ Name: AMF -Version: 1.4.36 +Version: 1.5.0 Release: 0 Summary: Advanced Media Framework (AMF) SDK License: MIT ++++++ AMF-1.4.36.obscpio -> AMF-1.5.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_API_Reference.md new/AMF-1.5.0/amf/doc/AMF_API_Reference.md --- old/AMF-1.4.36/amf/doc/AMF_API_Reference.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_API_Reference.md 2025-10-29 14:30:32.000000000 +0100 @@ -3878,7 +3878,7 @@ The `origin` and the `region` parameters represent the 3D coordinates and the size of the area of the plane to be filled. For 2D planes `origin[2]` and `region[2]` must be set to 0. -The fill color is a four component RGBA floating-point color value if the image channel data type is not an unnormalized signed and unsigned integer type, is a four-component signed integer value if the image channel data type is an unnormalized signed integer type and is a four component unsigned integer value if the image channel data type is an unormalized unsigned integer type. +The fill color is a four component RGBA floating-point color value if the surface is RGBA_F16, and is a four component unsigned integer value for other surface types. | Parameter | Description | | :--------------- | :------------------------------------------------------------------------------------------------------------------- | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_Display_Capture_API.md new/AMF-1.5.0/amf/doc/AMF_Display_Capture_API.md --- old/AMF-1.4.36/amf/doc/AMF_Display_Capture_API.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_Display_Capture_API.md 2025-10-29 14:30:32.000000000 +0100 @@ -20,13 +20,13 @@ ### Copyright Notice -© 2022 Advanced Micro Devices, Inc. All rights reserved +© 2025 Advanced Micro Devices, Inc. All rights reserved Notice Regarding Standards. AMD does not provide a license or sublicense to any Intellectual Property Rights relating to any standards, including but not limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 (collectively, the “Media Technologies”). For clarity, you will pay any royalties due for such third party technologies, which may include the Media Technologies that are owed as a result of AMD providing the Software to you. ### MIT license -Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -55,7 +55,9 @@ Functionally both methods are equivalent and implement the same API. The legacy DD component is available in the source code form as a sample. -Note: The Display Capture API requires root or super user privileges when running on Linux systems. +**Note**: The Display Capture API requires root or super user privileges when running on Linux systems. + +**Note**: For Linux, to disable Delta Color Compression (DCC), put `export AMD_DEBUG=nodcc` into `.profile` in the home directory and reboot. DCC is a domain-specific compression that tries to take advantage of data coherence. The key idea is to process whole blocks instead of individual pixels. DCC is image compression on the captured surface and such surfaces cannot be submitted to the encoder directly. Therefore, either DCC needs to be disabled or the surfaces need to be copied or submitted to the color converter before submitting to the encoder. --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_FRC_API.md new/AMF-1.5.0/amf/doc/AMF_FRC_API.md --- old/AMF-1.4.36/amf/doc/AMF_FRC_API.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_FRC_API.md 2025-10-29 14:30:32.000000000 +0100 @@ -49,7 +49,7 @@ ## 2 AMF Video FRC Component -Video FRC accepts input frames stored in `AMFSurface` objects wrapping DirectX 12 textures or OpenCL surfaces. The output is placed in `AMFSurface` objects wrapping DirectX 12 textures or OpenCL surfaces, depending on the component configuration. +Video FRC accepts input frames stored in `AMFSurface` objects wrapping DirectX 11 or DirectX 12 textures. The output is placed in `AMFSurface` objects wrapping DirectX 11 or DirectX 12 textures, depending on the component configuration. Include `public/include/components/FRC.h` @@ -58,8 +58,8 @@ The AMF Video FRC component should be initialized using the following sequence: 1. Create an AMF Context and initialize it for one of the following: - 1. DirectX 12 - 2. OpenCL + 1. DirectX 11 + 2. DirectX 12 2. Configure the FRC component by setting the necessary properties using the `AMFPropertyStorage::SetProperty` method on the FRC object. 3. Call the `AMFFRCImpl::Init` method of the video FRC object. @@ -98,13 +98,13 @@ `AMF_FRC_ENGINE_TYPE` **Values:** -`DX12`, `OpenCL`, `DX11` +`DX12`, `DX11` **Default Value:** `DX12` **Description:** -Specifies the engine used to run shaders. +Specifies the engine used to run shaders. --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_Video_Encode_API.md new/AMF-1.5.0/amf/doc/AMF_Video_Encode_API.md --- old/AMF-1.4.36/amf/doc/AMF_Video_Encode_API.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_Video_Encode_API.md 2025-10-29 14:30:32.000000000 +0100 @@ -20,13 +20,13 @@ ### Copyright Notice -© 2022 Advanced Micro Devices, Inc. All rights reserved +© 2025 Advanced Micro Devices, Inc. All rights reserved Notice Regarding Standards. AMD does not provide a license or sublicense to any Intellectual Property Rights relating to any standards, including but not limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 (collectively, the “Media Technologies”). For clarity, you will pay any royalties due for such third party technologies, which may include the Media Technologies that are owed as a result of AMD providing the Software to you. ### MIT license -Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -57,8 +57,8 @@ - [2.2.5 ROI Feature](#225-roi-feature) - [2.2.6 Encoder Statistics Feedback](#226-encoder-statistics-feedback) - [2.2.7 Picture Transfer Mode](#227-picture-transfer-mode) - - [2.2.8 LTR Properties](#228-ltr-properties) - - [2.2.9 SmartAccess Video](#229-smartaccess-video) + - [2.2.8 LTR Properties](#228-ltr-properties) + - [2.2.9 SmartAccess Video](#229-smartaccess-video) - [3 Sample Applications](#3-sample-applications) - [3.1 List of Parameters](#31-list-of-parameters) - [3.2 Command line example](#32-command-line-example) @@ -183,7 +183,7 @@ If an application enables `AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE` for a specific input picture, it can dump out the reconstructed picture after encoding and/or it can inject a picture to be used as the reference picture during the encoding. It is worth noting that reference picture injection is a feature that is intended for advanced algorithm testing and exploration. It needs to be used with care since the internal DPB in the current encoding session will be overridden by the injected reference picture(s). The reader can refer to `SimpleFrameInjection` sample application for further implementation details. This feature is supported by Radeon RX 5000 Series or newer GPUs as well as Ryzen 2000 U/H series or newer APUs. -#### 2.2.8 LTR Properties +### 2.2.8 LTR Properties LTR (Long Term Reference) is to manually select a reference frame which can be far away to encode current frame. Normally, the encoder selects last frame as reference or a frame at lower layer in the SVC case. @@ -225,7 +225,9 @@ Referring to a LTR frame not exiting in LTR slot will generate an Intra only frame. -#### 2.2.9 SmartAccess Video +Please note that LTR and B-frames (including fixed B-frames set through `AMF_VIDEO_ENCODER_B_PIC_PATTERN` and adaptive B-frames set through `AMF_VIDEO_ENCODER_ADAPTIVE_MINIGOP`) cannot be used simultaneously in the encoder. The encoder will check parameter settings during operation. If both LTR and B-frames are detected as enabled, the encoder will disable LTR. + +### 2.2.9 SmartAccess Video On supported APU + GPU systems, there is an opportunity to use SmartAccess Video. SmartAccess Video - an optimization logic which enables the parallelization of encode and decode streams across multiple Video Codec Engine (VCN) hardware instances – empowers apps to process streams faster through seamless job distribution across available hardware. With a simple enablement of the encoder and decoder control flags, the SmartAccess Video logic will optimally use hardware resources to benefit media apps. Follow the `SMART_ACCESS_VIDEO` tag in the documentation to search for the property flags to set. On systems without SmartAccess Video support, the `SMART_ACCESS_VIDEO` properties have no effect. @@ -691,7 +693,7 @@ `AMF_H264_LEVEL__4_2` **Description:** -Selects the H.264 profile level. +Selects the H.264 profile level. Automatically adjusted upwards based on frame size. --- @@ -1336,7 +1338,7 @@ - Ultra low latency: `AMF_VIDEO_ENCODER_PREENCODE_DISABLED` - Low latency: `AMF_VIDEO_ENCODER_PREENCODE_DISABLED` - Webcam: `AMF_VIDEO_ENCODER_PREENCODE_DISABLED` - - HQ: `AMF_VIDEO_ENCODER_PREENCODE_ENABLED` + - HQ: `AMF_VIDEO_ENCODER_PREENCODE_DISABLED` - HQLL: `AMF_VIDEO_ENCODER_PREENCODE_DISABLED` **Description:** @@ -1399,11 +1401,11 @@ `0` … `1000` **Default Value associated with usages:** - - Transcoding: `30` - - Ultra low latency: `300` - - Low latency: `300` + - Transcoding: `240` + - Ultra low latency: `240` + - Low latency: `240` - Webcam: `30` - - HQ: `300` + - HQ: `240` - HQLL: `120` **Description:** @@ -1943,7 +1945,7 @@ `AMF_VIDEO_ENCODER_PICTURE_TYPE_NONE` **Description:** -Forces the picture type (to use this feature, set `AMF_VIDEO_ENCODER_IDR_PERIOD` to `0`). +Forces the picture type (to use this feature, set `AMF_VIDEO_ENCODER_IDR_PERIOD` to `0`) determined by the picture management with the following precedence `IDR`, `I`, `P` and `B`. Force picture type will only take effect to override type with lower precedence. `B` feature is not supported by VCE 1.0. --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_Video_Encode_AV1_API.md new/AMF-1.5.0/amf/doc/AMF_Video_Encode_AV1_API.md --- old/AMF-1.4.36/amf/doc/AMF_Video_Encode_AV1_API.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_Video_Encode_AV1_API.md 2025-10-29 14:30:32.000000000 +0100 @@ -20,13 +20,13 @@ ### Copyright Notice -© 2022 Advanced Micro Devices, Inc. All rights reserved +© 2025 Advanced Micro Devices, Inc. All rights reserved Notice Regarding Standards. AMD does not provide a license or sublicense to any Intellectual Property Rights relating to any standards, including but not limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; AVC/H.264; HEVC/H.265; AV1; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 (collectively, the “Media Technologies”). For clarity, you will pay any royalties due for such third party technologies, which may include the Media Technologies that are owed as a result of AMD providing the Software to you. ### MIT license -Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -649,10 +649,10 @@ `AMF_VIDEO_ENCODER_AV1_LEVEL_2_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_2_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_2_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_2_3`, `AMF_VIDEO_ENCODER_AV1_LEVEL_3_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_3_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_3_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_3_3`, `AMF_VIDEO_ENCODER_AV1_LEVEL_4_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_4_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_4_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_4_3`, `AMF_VIDEO_ENCODER_AV1_LEVEL_5_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_5_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_5_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_5_3`, `AMF_VIDEO_ENCODER_AV1_LEVEL_6_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_6_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_6_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_6_3`, `AMF_VIDEO_ENCODER_AV1_LEVEL_7_0`, `AMF_VIDEO_ENCODER_AV1_LEVEL_7_1`, `AMF_VIDEO_ENCODER_AV1_LEVEL_7_2`, `AMF_VIDEO_ENCODER_AV1_LEVEL_7_3` **Default Value:** -`AMF_VIDEO_ENCODER_AV1_LEVEL_6_2` +`AMF_VIDEO_ENCODER_AV1_LEVEL_5_2` **Description:** -Selects the AV1 Level. +Selects the AV1 Level. Automatically adjusted upwards based on frame size. --- @@ -733,13 +733,13 @@ `AMF_VIDEO_ENCODER_AV1_MAX_CONSECUTIVE_BPICTURES` **Values:** -`0`...`0` or `127` +`0`...`127` **Default Value:** -`0` or `127` +`0` **Description:** -Maximum number of consecutive B Pictures. The default value is determined by `AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES`. If `AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES` is true, the default value is 127; otherwise, it is 0. +Maximum number of consecutive B Pictures. --- @@ -795,10 +795,11 @@ `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE` **Values:** -`AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_ENUM`: `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY`, `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_1080P_CODED_1082`, `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS` +`AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_ENUM`: `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY`, `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_1080P_CODED_1082`, `AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS`, +`AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_8X2_ONLY` **Default Value:** -`AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY` +Depends on Encoder capabilities **Description:** AV1 alignment Mode. @@ -863,8 +864,11 @@ | MAX_Q_INDEX_INTRA | amf_int64 | | MIN_Q_INDEX_INTER | amf_int64 | | MAX_Q_INDEX_INTER | amf_int64 | +| MIN_Q_INDEX_INTER_B | amf_int64 | +| MAX_Q_INDEX_INTER_B | amf_int64 | | Q_INDEX_INTRA | amf_int64 | | Q_INDEX_INTER | amf_int64 | +| Q_INDEX_INTER_B | amf_int64 | | FRAMERATE | AMFRate | | VBV_BUFFER_SIZE | amf_int64 | | INITIAL_VBV_BUFFER_FULLNESS | amf_int64 | @@ -1038,6 +1042,34 @@ --- **Name:** +`AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER_B` + +**Values:** +`1` – `255` + +**Default Value:** +`1` + +**Description:** +Sets the minimum QIndex for B-frames. + +--- + +**Name:** +`AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER_B` + +**Values:** +`1` – `255` + +**Default Value:** +`255` + +**Description:** +Sets the maximum QIndex for B-frames. + +--- + +**Name:** `AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA` **Values:** @@ -1070,6 +1102,22 @@ --- **Name:** +`AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER_B` + +**Values:** +`1` – `255` + +**Default Value:** +`26` + +**Description:** +Sets the constant QIndex for B-frames. + +Remarks: Only available for CQP rate control method. + +--- + +**Name:** `AMF_VIDEO_ENCODER_AV1_FRAMERATE` **Values:** @@ -1147,7 +1195,7 @@ - Ultra low latency: `false` - Low latency: `false` - Webcam: `false` - - HQ: `true` + - HQ: `false` - HQLL: `false` **Description:** @@ -1288,12 +1336,12 @@ `>0` **Default Value associated with usages:** - - Transcoding: `30` + - Transcoding: `240` - Ultra low latency: `300` - Low latency: `300` - - Webcam: `30` - - HQ: `30` - - HQLL: `30` + - Webcam: `240` + - HQ: `300` + - HQLL: `120` **Description:** The period to insert key frame in fixed size mode. 0 means only insert the first frame (infinite GOP size). @@ -1849,7 +1897,7 @@ `AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_NONE` **Description:** -Forces the frame type. +Forces the frame type determined by the picture management with the following precedence `KEY`, `INTRA_ONLY`, `SWITCH` and `SHOW_EXISTING`. Force frame type will only take effect to override types with lower precedence. --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/AMF_Video_Encode_HEVC_API.md new/AMF-1.5.0/amf/doc/AMF_Video_Encode_HEVC_API.md --- old/AMF-1.4.36/amf/doc/AMF_Video_Encode_HEVC_API.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/AMF_Video_Encode_HEVC_API.md 2025-10-29 14:30:32.000000000 +0100 @@ -20,13 +20,13 @@ ### Copyright Notice -© 2022 Advanced Micro Devices, Inc. All rights reserved +© 2025 Advanced Micro Devices, Inc. All rights reserved Notice Regarding Standards. AMD does not provide a license or sublicense to any Intellectual Property Rights relating to any standards, including but not limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 (collectively, the “Media Technologies”). For clarity, you will pay any royalties due for such third party technologies, which may include the Media Technologies that are owed as a result of AMD providing the Software to you. ### MIT license -Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -694,10 +694,10 @@ `AMF_VIDEO_ENCODER_LEVEL_ENUM`: `AMF_LEVEL_1`, `AMF_LEVEL_2`, `AMF_LEVEL_2_1`, `AMF_LEVEL_3`, `AMF_LEVEL_3_1`, `AMF_LEVEL_4`, `AMF_LEVEL_4_1`, `AMF_LEVEL_5`, `AMF_LEVEL_5_1`, `AMF_LEVEL_5_2`, `AMF_LEVEL_6`, `AMF_LEVEL_6_1`, `AMF_LEVEL_6_2` **Default Value:** -`AMF_LEVEL_6_2` +`AMF_LEVEL_5_2` **Description:** -Selects the HEVC Profile Level. +Selects the HEVC Profile Level. Automatically adjusted upwards based on frame size. --- @@ -1148,7 +1148,7 @@ - Ultra low latency: `false` - Low latency: `false` - Webcam: `false` - - HQ: `true` + - HQ: `false` - HQLL: `false` **Description:** @@ -1260,12 +1260,12 @@ `0` ... `1000` **Default Value associated with usages:** - - Transcoding: `30` + - Transcoding: `240` - Ultra low latency: `300` - Low latency: `300` - - Webcam: `30` - - HQ: `30` - - HQLL: `30` + - Webcam: `240` + - HQ: `240` + - HQLL: `240` **Description:** The period to insert IDR/CRA in fixed size mode. `0` means only insert the first IDR/CRA (infinite GOP size). @@ -1721,7 +1721,7 @@ `AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_NONE` **Description:** -Forces the picture type. +Forces the picture type determined by the picture management with the following precedence `IDR`, `I` and `P`. Force picture type will only take effect to override types with lower precedence. --- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/doc/README.md new/AMF-1.5.0/amf/doc/README.md --- old/AMF-1.4.36/amf/doc/README.md 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/doc/README.md 2025-10-29 14:30:32.000000000 +0100 @@ -14,10 +14,15 @@ * Windows Subsystem for Linux (DX12 Decoder and Converter Only) * Visual Studio® 2019 * Linux - * RHEL 9.4 / 8.10 - * Ubuntu 24.04.1 / 22.04.5 - * SLED/SLES 15 SP6 + * RHEL 9.6 / 10 + * Ubuntu 24.04.2 / 22.04.5 + * SLED/SLES 15.7 / 16 * Driver and AMF component installation instructions are available on the [Wiki page](https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki). + + Note: the 25.10 Linux driver has a known installation bug. See the [Linux Driver Install](https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki/Driver%20Linux) Wiki page for details. + + Note: starting with the 25.20 Linux driver, the AMF runtime is released separately. See the [Linux Driver Install](https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki/Driver%20Linux) Wiki page for updated instructions. + * The following table contains the driver versions in which the Linux pro driver started including the AMF runtime, otherwise, the AMF runtime is optional and has to be installed separately. * All supported distros include the AMF runtime starting driver version 20.40. @@ -28,6 +33,8 @@ | \**All supported distros* | 20.40 | * AMF SDK is backward compatible with all previous driver versions. +* Version 1.5.0: AMD Radeon Software Adrenalin Edition 25.10.2 (25.20.21.01) or newer. Added 4:4:4/4:2:2 chroma subsampling support for VideoConverter color space conversion and scaling. Samples updated to VS 2022. +* Version 1.4.36: AMD Radeon Software Adrenalin Edition 25.1.1 (24.30.31.03) or newer. Added B-frame support and picture management options for AV1 encoder. New high quality presets for HEVC and AVC encoders. New SimpleFRC sample app. * Version 1.4.35: AMD Radeon Software Adrenalin Edition 24.9.1 (24.20.11.01) or newer. Added multi-HW instance encoder mode. Updated FFmpeg to 7.0. Added split frame encoding. * Version 1.4.34: AMD Radeon Software Adrenalin Edition 24.6.1 (24.10.21.01) or newer. Added Linux support for DVR sample. New HEVC header insertion mode. Stable support for RADV drivers for AMF on Linux in VideoConverter/HQScaler/VideoEncoder and experimental for decoder. Added DX11 support for FRC component. * Version 1.4.33: AMD Radeon Software Adrenalin Edition 24.1.1 (23.40.02) or newer. Added native DX12 support for encoding and PreAnalysis. Switched to public Vulkan Khronos extensions for decoder. AMF on Linux can now be used with AMD Pro Vulkan, and experimentally with RADV drivers. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/AMFXInput.h new/AMF-1.5.0/amf/public/include/components/AMFXInput.h --- old/AMF-1.4.36/amf/public/include/components/AMFXInput.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/AMFXInput.h 2025-10-29 14:30:32.000000000 +0100 @@ -35,7 +35,7 @@ #pragma once -#include "../../../public/include/core/Interface.h" +#include "../core/Interface.h" // XInput injection API: // - XBox - like controller emulation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/ColorSpace.h new/AMF-1.5.0/amf/public/include/components/ColorSpace.h --- old/AMF-1.4.36/amf/public/include/components/ColorSpace.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/ColorSpace.h 2025-10-29 14:30:32.000000000 +0100 @@ -66,7 +66,7 @@ AMF_COLOR_PRIMARIES_RESERVED = 3, AMF_COLOR_PRIMARIES_BT470M = 4, AMF_COLOR_PRIMARIES_BT470BG = 5, - AMF_COLOR_PRIMARIES_SMPTE170M = 6, + AMF_COLOR_PRIMARIES_SMPTE170M = 6, //BT601 AMF_COLOR_PRIMARIES_SMPTE240M = 7, AMF_COLOR_PRIMARIES_FILM = 8, AMF_COLOR_PRIMARIES_BT2020 = 9, @@ -100,6 +100,26 @@ AMF_COLOR_TRANSFER_CHARACTERISTIC_ARIB_STD_B67 = 18, //HLG } AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM; +typedef enum AMF_COLOR_MATRIX_COEFF_ENUM // as in VUI matrix coefficinet for encoder +{ + AMF_COLOR_MATRIX_COEFF_UNKNOWN = -1, + AMF_COLOR_MATRIX_COEFF_GBR = 0, // RGB + AMF_COLOR_MATRIX_COEFF_BT_709 = 1, // BT.709 + AMF_COLOR_MATRIX_COEFF_UNSPECIFIED = 2, // Unspecified + AMF_COLOR_MATRIX_COEFF_RESERVED = 3, // For future use + AMF_COLOR_MATRIX_COEFF_FCC = 4, // US FCC 73.628 + AMF_COLOR_MATRIX_COEFF_BT_470_B_G = 5, // BT.470 System B, G (historical) + AMF_COLOR_MATRIX_COEFF_BT_601 = 6, // BT.601 + AMF_COLOR_MATRIX_COEFF_SMPTE_240 = 7, // SMPTE 240 M + AMF_COLOR_MATRIX_COEFF_SMPTE_YCGCO = 8, // YCgCo + AMF_COLOR_MATRIX_COEFF_BT_2020_NCL = 9, // BT.2020 non-constant luminance, BT.2100 YCbCr + AMF_COLOR_MATRIX_COEFF_BT_2020_CL = 10, // BT.2020 constant luminance + AMF_COLOR_MATRIX_COEFF_SMPTE_2085 = 11, // SMPTE ST 2085 YDzDx + AMF_COLOR_MATRIX_COEFF_CHROMAT_NCL = 12, // (only used in AV1) Chromaticity-derived non-constant luminance + AMF_COLOR_MATRIX_COEFF_CHROMAT_CL = 13, // (only used in AV1) Chromaticity-derived constant luminance + AMF_COLOR_MATRIX_COEFF_ICTCP = 14 // (only used in AV1) BT.2100 ICtCp +} AMF_COLOR_MATRIX_COEFFICIENTS_ENUM; + typedef enum AMF_COLOR_BIT_DEPTH_ENUM { AMF_COLOR_BIT_DEPTH_UNDEFINED = 0, @@ -119,6 +139,26 @@ amf_uint16 maxFrameAverageLightLevel; // nit value } AMFHDRMetadata; +#if defined(__cplusplus) +// Fieldwise equality comparison. +// C-style structs don't have this by default. +AMF_INLINE bool operator==(const AMFHDRMetadata& lhs, const AMFHDRMetadata& rhs) +{ + return (lhs.redPrimary[0] == rhs.redPrimary[0] && + lhs.redPrimary[1] == rhs.redPrimary[1] && + lhs.greenPrimary[0] == rhs.greenPrimary[0] && + lhs.greenPrimary[1] == rhs.greenPrimary[1] && + lhs.bluePrimary[0] == rhs.bluePrimary[0] && + lhs.bluePrimary[1] == rhs.bluePrimary[1] && + lhs.whitePoint[0] == rhs.whitePoint[0] && + lhs.whitePoint[1] == rhs.whitePoint[1] && + lhs.maxMasteringLuminance == rhs.maxMasteringLuminance && + lhs.minMasteringLuminance == rhs.minMasteringLuminance && + lhs.maxContentLightLevel == rhs.maxContentLightLevel && + lhs.maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel); +} +#endif + typedef enum AMF_COLOR_RANGE_ENUM { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/DisplayCapture.h new/AMF-1.5.0/amf/public/include/components/DisplayCapture.h --- old/AMF-1.4.36/amf/public/include/components/DisplayCapture.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/DisplayCapture.h 2025-10-29 14:30:32.000000000 +0100 @@ -40,11 +40,18 @@ #include "Component.h" +#if defined(__cplusplus) extern "C" { + using namespace amf; +#endif // defined(__cplusplus) + // To create capture component with Desktop Duplication API use this function - AMF_RESULT AMF_CDECL_CALL AMFCreateComponentDisplayCapture(amf::AMFContext* pContext, void* reserved, amf::AMFComponent** ppComponent); + AMF_RESULT AMF_CDECL_CALL AMFCreateComponentDisplayCapture(AMFContext* pContext, void* reserved, AMFComponent** ppComponent); + +#if defined(__cplusplus) } +#endif // defined(__cplusplus) // To create AMD Direct Capture component use this component ID with AMFFactory::CreateComponent() #define AMFDisplayCapture L"AMFDisplayCapture" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/FRC.h new/AMF-1.5.0/amf/public/include/components/FRC.h --- old/AMF-1.4.36/amf/public/include/components/FRC.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/FRC.h 2025-10-29 14:30:32.000000000 +0100 @@ -56,15 +56,6 @@ TOTAL_FRC_MODES }; -enum AMF_FRC_SNAPSHOT_MODE_TYPE { - FRC_SNAPSHOT_OFF = 0, - FRC_SNAPSHOT_LOAD = 1, - FRC_SNAPSHOT_STORE = 2, - FRC_SNAPSHOT_REGRESSION_TEST= 3, - FRC_SNAPSHOT_STORE_NO_PADDING= 4, - TOTAL_FRC_SNAPSHOT_MODES -}; - enum AMF_FRC_PROFILE_TYPE { FRC_PROFILE_LOW = 0, FRC_PROFILE_HIGH = 1, @@ -78,13 +69,13 @@ TOTAL_FRC_MV_SEARCH_MODES }; -#define AMF_FRC_ENGINE_TYPE L"FRCEngineType" // amf_int64(AMF_FRC_ENGINE); default = DX12; determines how the object is initialized and what kernels to use -#define AMF_FRC_OUTPUT_SIZE L"FRCSOutputSize" // AMFSize - output scaling width/height -#define AMF_FRC_MODE L"FRCMode" // amf_int64(AMF_FRC_MODE_TYPE); default = FRC_ONLY_INTERPOLATED; FRC mode -#define AMF_FRC_ENABLE_FALLBACK L"FRCEnableFallback" // bool; default = true; FRC enable fallback mode -#define AMF_FRC_INDICATOR L"FRCIndicator" // bool; default : false; draw indicator in the corner -#define AMF_FRC_PROFILE L"FRCProfile" // amf_int64(AMF_FRC_PROFILE_TYPE); default=FRC_PROFILE_HIGH; FRC profile -#define AMF_FRC_MV_SEARCH_MODE L"FRCMVSEARCHMODE" // amf_int64(AMF_FRC_MV_SEARCH_MODE_TYPE); defaut = FRC_MV_SEARCH_NATIVE; FRC MV search mode -#define AMF_FRC_USE_FUTURE_FRAME L"FRCUseFutureFrame" // bool; default = true; Enable dependency on future frame, improves quality for the cost of latency +#define AMF_FRC_ENGINE_TYPE L"FRCEngineType" // amf_int64(AMF_FRC_ENGINE); default = DX12; determines how the object is initialized and what kernels to use +#define AMF_FRC_OUTPUT_SIZE L"FRCSOutputSize" // AMFSize - output scaling width/height +#define AMF_FRC_MODE L"FRCMode" // amf_int64(AMF_FRC_MODE_TYPE); default = FRC_ONLY_INTERPOLATED; FRC mode +#define AMF_FRC_ENABLE_FALLBACK L"FRCEnableFallback" // bool; default = true; FRC enable fallback mode +#define AMF_FRC_INDICATOR L"FRCIndicator" // bool; default : false; draw indicator in the corner +#define AMF_FRC_PROFILE L"FRCProfile" // amf_int64(AMF_FRC_PROFILE_TYPE); default=FRC_PROFILE_HIGH; FRC profile +#define AMF_FRC_MV_SEARCH_MODE L"FRCMVSEARCHMODE" // amf_int64(AMF_FRC_MV_SEARCH_MODE_TYPE); defaut = FRC_MV_SEARCH_NATIVE; FRC MV search mode +#define AMF_FRC_USE_FUTURE_FRAME L"FRCUseFutureFrame" // bool; default = true; Enable dependency on future frame, improves quality for the cost of latency #endif //#ifndef AMFFRC_h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/PreAnalysis.h new/AMF-1.5.0/amf/public/include/components/PreAnalysis.h --- old/AMF-1.4.36/amf/public/include/components/PreAnalysis.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/PreAnalysis.h 2025-10-29 14:30:32.000000000 +0100 @@ -95,6 +95,9 @@ #define AMF_PA_ENGINE_TYPE L"PAEngineType" // AMF_MEMORY_TYPE (Host, DX11, OpenCL, Vulkan, DX12, Auto default : UNKNOWN (Auto))" - determines how the object is initialized and what kernels to use // by default it is Auto (DX11, OpenCL and Vulkan are currently available) +#define AMF_PA_QUERY_TIMEOUT L"PAQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. + + #define AMF_PA_SCENE_CHANGE_DETECTION_ENABLE L"PASceneChangeDetectionEnable" // bool (default : True) - Enable Scene Change Detection GPU algorithm #define AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY L"PASceneChangeDetectionSensitivity" // AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY_ENUM (default : Medium) - Scene Change Detection Sensitivity #define AMF_PA_STATIC_SCENE_DETECTION_ENABLE L"PAStaticSceneDetectionEnable" // bool (default : False) - Enable Skip Detection GPU algorithm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/VideoConverter.h new/AMF-1.5.0/amf/public/include/components/VideoConverter.h --- old/AMF-1.4.36/amf/public/include/components/VideoConverter.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/VideoConverter.h 2025-10-29 14:30:32.000000000 +0100 @@ -51,6 +51,7 @@ enum AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM { + AMF_VIDEO_CONVERTER_TONEMAPPING_UNDEFINED = -1, AMF_VIDEO_CONVERTER_TONEMAPPING_COPY = 0, AMF_VIDEO_CONVERTER_TONEMAPPING_AMD = 1, AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR = 2, @@ -94,13 +95,13 @@ #define AMF_VIDEO_CONVERTER_INPUT_COLOR_PRIMARIES L"InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_INPUT_COLOR_RANGE L"InputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_INPUT_HDR_METADATA L"InputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL -#define AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING L"InputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR +#define AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING L"InputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_UNDEFINED #define AMF_VIDEO_CONVERTER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_RANGE L"OutputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_OUTPUT_HDR_METADATA L"OutputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL -#define AMF_VIDEO_CONVERTER_OUTPUT_TONEMAPPING L"OutputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_AMD +#define AMF_VIDEO_CONVERTER_OUTPUT_TONEMAPPING L"OutputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) DEPRECATED - use AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING // these properties can be set on input or outout surface See ColorSpace.h // the same as decoder properties set on input surface - see below diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/VideoEncoderAV1.h new/AMF-1.5.0/amf/public/include/components/VideoEncoderAV1.h --- old/AMF-1.4.36/amf/public/include/components/VideoEncoderAV1.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/VideoEncoderAV1.h 2025-10-29 14:30:32.000000000 +0100 @@ -101,7 +101,8 @@ { AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY = 1, AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_1080P_CODED_1082 = 2, - AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS = 3 + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS = 3, + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_8X2_ONLY = 4 }; enum AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_ENUM @@ -186,6 +187,7 @@ AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE = 1, AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE_LAST = 2 }; + // *** Static properties - can be set only before Init() *** // Encoder Engine Settings @@ -264,9 +266,13 @@ #define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTRA L"Av1MaxQIndex_Intra" // amf_int64; default = depends on USAGE; Max QIndex for intra frames; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER L"Av1MinQIndex_Inter" // amf_int64; default = depends on USAGE; Min QIndex for inter frames; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER L"Av1MaxQIndex_Inter" // amf_int64; default = depends on USAGE; Max QIndex for inter frames; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER_B L"Av1MinQIndex_Inter_B" // amf_int64; default = depends on USAGE; Min QIndex for inter frames (bi-directional); range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER_B L"Av1MaxQIndex_Inter_B" // amf_int64; default = depends on USAGE; Max QIndex for inter frames (bi-directional); range = 1-255 + #define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA L"Av1QIndex_Intra" // amf_int64; default = depends on USAGE; intra-frame QIndex; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER L"Av1QIndex_Inter" // amf_int64; default = depends on USAGE; inter-frame QIndex; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER_B L"Av1QIndex_Inter_B" // amf_int64; default = depends on USAGE; inter-frame QIndex (bi-directional); range = 1-255 #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_SKIP_FRAME L"Av1RateControlSkipFrameEnable" // bool; default = depends on USAGE; If true, rate control may code skip frame when needed; if false, rate control will not code skip frame. @@ -286,10 +292,12 @@ #define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PROFILE L"Av1InputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_INPUT_TRANSFER_CHARACTERISTIC L"Av1InputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PRIMARIES L"Av1InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_AV1_INPUT_MATRIX_COEFF L"Av1InMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PROFILE L"Av1OutputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_OUTPUT_TRANSFER_CHARACTERISTIC L"Av1OutputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PRIMARIES L"Av1OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_MATRIX_COEFF L"Av1OutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Frame encode parameters @@ -359,13 +367,18 @@ #define AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES L"AV1BFrames" // amf_bool; if b frames are supported for AV1 #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_SMART_ACCESS_VIDEO L"Av1EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video + #define AMF_VIDEO_ENCODER_AV1_CAP_WIDTH_ALIGNMENT_FACTOR L"Av1WidthAlignmentFactor" // amf_int64; default = 1; The encoder capability for width alignment #define AMF_VIDEO_ENCODER_AV1_CAP_HEIGHT_ALIGNMENT_FACTOR L"Av1HeightAlignmentFactor" // amf_int64; default = 1; The encoder capability for height alignment -#define AMF_VIDEO_ENCODER_AV1_MULTI_HW_INSTANCE_ENCODE L"Av1MultiHwInstanceEncode" // amf_bool; flag to enable AV1 multi VCN encode. +#define AMF_VIDEO_ENCODER_AV1_MULTI_HW_INSTANCE_ENCODE L"Av1MultiHwInstanceEncode" // amf_bool; flag to enable AV1 multi VCN encode. + +#define AMF_VIDEO_ENCODER_AV1_INPUT_FULL_RANGE_COLOR L"Av1InputFullRangeColor" // amf_bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_FULL_RANGE_COLOR L"Av1NominalRange" // amf_bool; default = false; indicates color range of YUV output is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_AV1_NOMINAL_RANGE L"Av1NominalRange" // amf_bool; deprecated same usage as AMF_VIDEO_ENCODER_AV1_OUTPUT_FULL_RANGE_COLOR -// properties for Picture Management (VCN5 feature) -#define AMF_VIDEO_ENCODER_AV1_MAX_CONSECUTIVE_BPICTURES L"Av1MaxConsecutiveBPictures" // amf_int64; default 0 or 127, determined by AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES. Maximum number of consecutive B frames for B frame encoding +// properties for AV1 B-frame (VCN5 feature) +#define AMF_VIDEO_ENCODER_AV1_MAX_CONSECUTIVE_BPICTURES L"Av1MaxConsecutiveBPictures" // amf_int64; default 0. Maximum number of consecutive B frames for B frame encoding #define AMF_VIDEO_ENCODER_AV1_B_PIC_PATTERN L"Av1BPicturesPattern" // amf_int64; default 0. Number of B frames for B frame encoding #define AMF_VIDEO_ENCODER_AV1_ADAPTIVE_MINIGOP L"Av1AdaptiveMiniGop" // amf_bool; default false. Adaptive miniGOP size for B frame encoding diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/VideoEncoderHEVC.h new/AMF-1.5.0/amf/public/include/components/VideoEncoderHEVC.h --- old/AMF-1.4.36/amf/public/include/components/VideoEncoderHEVC.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/VideoEncoderHEVC.h 2025-10-29 14:30:32.000000000 +0100 @@ -104,9 +104,10 @@ enum AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM { - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5, - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10 + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_HIGH_QUALITY = 15 }; enum AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_ENUM @@ -164,7 +165,9 @@ #define AMF_VIDEO_ENCODER_HEVC_ASPECT_RATIO L"HevcAspectRatio" // AMFRatio; default = 1, 1 #define AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode #define AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE L"HevcEnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. -#define AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE L"HevcNominalRange" // amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE); default = amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO); property is bool but amf_int64 also works for backward compatibility. +#define AMF_VIDEO_ENCODER_HEVC_INPUT_FULL_RANGE_COLOR L"HevcInputFullRangeColor" // bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_FULL_RANGE_COLOR L"HevcNominalRange" // amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE); default = amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO); property is bool but amf_int64 also works for backward compatibility. +#define AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE L"HevcNominalRange" // deprecated; same usage as AMF_VIDEO_ENCODER_HEVC_OUTPUT_FULL_RANGE_COLOR #define AMF_VIDEO_ENCODER_HEVC_MAX_NUM_TEMPORAL_LAYERS L"HevcMaxNumOfTemporalLayers" // amf_int64; default = 1; Max number of temporal layers. // Picture control properties @@ -201,10 +204,12 @@ #define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PROFILE L"HevcInColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_INPUT_TRANSFER_CHARACTERISTIC L"HevcInColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PRIMARIES L"HevcInColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_INPUT_MATRIX_COEFF L"HevcInMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PROFILE L"HevcOutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC L"HevcOutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES L"HevcOutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MATRIX_COEFF L"HevcOutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Slice output #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE L"HevcOutputMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_FRAME - defines encoder output mode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/components/VideoEncoderVCE.h new/AMF-1.5.0/amf/public/include/components/VideoEncoderVCE.h --- old/AMF-1.4.36/amf/public/include/components/VideoEncoderVCE.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/components/VideoEncoderVCE.h 2025-10-29 14:30:32.000000000 +0100 @@ -111,7 +111,8 @@ { AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED = 0, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED, - AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY + AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY, + AMF_VIDEO_ENCODER_QUALITY_PRESET_HIGH_QUALITY }; enum AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_ENUM @@ -194,7 +195,9 @@ #define AMF_VIDEO_ENCODER_MAX_CONSECUTIVE_BPICTURES L"MaxConsecutiveBPictures" // amf_int64; Maximum number of consecutive B Pictures #define AMF_VIDEO_ENCODER_ADAPTIVE_MINIGOP L"AdaptiveMiniGOP" // bool; default = false; Disable/Enable Adaptive MiniGOP #define AMF_VIDEO_ENCODER_ASPECT_RATIO L"AspectRatio" // AMFRatio; default = 1, 1 -#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; inidicates that YUV input is (0,255) +#define AMF_VIDEO_ENCODER_INPUT_FULL_RANGE_COLOR L"InputFullRangeColor" // bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_OUTPUT_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; indicates color range of YUV output is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; deprecated same usage as AMF_VIDEO_ENCODER_OUTPUT_FULL_RANGE_COLOR #define AMF_VIDEO_ENCODER_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode and POC mode 2 in the encoder #define AMF_VIDEO_ENCODER_PRE_ANALYSIS_ENABLE L"EnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. #define AMF_VIDEO_ENCODER_PREENCODE_ENABLE L"RateControlPreanalysisEnable" // amf_int64(AMF_VIDEO_ENCODER_PREENCODE_MODE_ENUM); default = AMF_VIDEO_ENCODER_PREENCODE_DISABLED; enables pre-encode assisted rate control @@ -217,11 +220,13 @@ #define AMF_VIDEO_ENCODER_INPUT_TRANSFER_CHARACTERISTIC L"InColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_INPUT_COLOR_PRIMARIES L"InColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_INPUT_HDR_METADATA L"InHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_ENCODER_INPUT_MATRIX_COEFF L"InMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PROFILE L"OutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES L"OutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_ENCODER_OUTPUT_MATRIX_COEFF L"OutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Slice output #define AMF_VIDEO_ENCODER_OUTPUT_MODE L"OutputMode" // amf_int64(AMF_VIDEO_ENCODER_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_OUTPUT_MODE_FRAME - defines encoder output mode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Compute.h new/AMF-1.5.0/amf/public/include/core/Compute.h --- old/AMF-1.4.36/amf/public/include/core/Compute.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Compute.h 2025-10-29 14:30:32.000000000 +0100 @@ -61,6 +61,7 @@ AMF_CHANNEL_ORDER_RGBA = 4, AMF_CHANNEL_ORDER_ARGB = 5, AMF_CHANNEL_ORDER_YUY2 = 6, + AMF_CHANNEL_ORDER_ABGR = 7, } AMF_CHANNEL_ORDER; //---------------------------------------------------------------------------------------------- typedef enum AMF_CHANNEL_TYPE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Factory.h new/AMF-1.5.0/amf/public/include/core/Factory.h --- old/AMF-1.4.36/amf/public/include/core/Factory.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Factory.h 2025-10-29 14:30:32.000000000 +0100 @@ -110,10 +110,17 @@ #if defined(_M_AMD64) #define AMF_DLL_NAME L"amfrt64.dll" #define AMF_DLL_NAMEA "amfrt64.dll" + + #define AMFLITE_DLL_NAME L"amfrtlt64.dll" + #define AMFLITE_DLL_NAMEA "amfrtlt64.dll" + #else #define AMF_DLL_NAME L"amfrt32.dll" #define AMF_DLL_NAMEA "amfrt32.dll" - #endif + + #define AMFLITE_DLL_NAME L"amfrtlt32.dll" + #define AMFLITE_DLL_NAMEA "amfrtlt32.dll" +#endif #elif defined(__ANDROID__) && !defined(AMF_ANDROID_ENCODER) #define AMF_DLL_NAME L"libamf.so" #define AMF_DLL_NAMEA "libamf.so" @@ -124,9 +131,17 @@ #if defined(__x86_64__) || defined(__aarch64__) #define AMF_DLL_NAME L"libamfrt64.so.1" #define AMF_DLL_NAMEA "libamfrt64.so.1" + + #define AMFLITE_DLL_NAME L"libamfrtlt64.so.1" + #define AMFLITE_DLL_NAMEA "libamfrtlt64.so.1" + #else #define AMF_DLL_NAME L"libamfrt32.so.1" #define AMF_DLL_NAMEA "libamfrt32.so.1" + + #define AMFLITE_DLL_NAME L"libamfrtlt32.so.1" + #define AMFLITE_DLL_NAMEA "libamfrtlt32.so.1" + #endif #endif //---------------------------------------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Platform.h new/AMF-1.5.0/amf/public/include/core/Platform.h --- old/AMF-1.4.36/amf/public/include/core/Platform.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Platform.h 2025-10-29 14:30:32.000000000 +0100 @@ -64,8 +64,12 @@ #define AMF_MACRO_STRING2(x) #x #define AMF_MACRO_STRING(x) AMF_MACRO_STRING2(x) +#ifdef _WIN32 #define AMF_TODO(_todo) (__FILE__ "(" AMF_MACRO_STRING(__LINE__) "): TODO: "_todo) - +#else +//TODO is not helpful on linux because the pragma already includes line number and file +#define AMF_TODO +#endif /** ******************************************************************************* @@ -159,9 +163,15 @@ #endif #endif +#ifndef LPRId64 #define LPRId64 AMF_UNICODE(AMFPRId64) +#endif +#ifndef LPRIud64 #define LPRIud64 AMF_UNICODE(AMFPRIud64) +#endif +#ifndef LPRIx64 #define LPRIx64 AMF_UNICODE(AMFPRIx64) +#endif #if defined(_WIN32) @@ -234,16 +244,23 @@ amf_int32 right; amf_int32 bottom; #if defined(__cplusplus) - bool operator==(const AMFRect& other) const - { - return left == other.left && top == other.top && right == other.right && bottom == other.bottom; - } - AMF_INLINE bool operator!=(const AMFRect& other) const { return !operator==(other); } amf_int32 Width() const { return right - left; } amf_int32 Height() const { return bottom - top; } #endif } AMFRect; +#if defined(__cplusplus) +static AMF_INLINE bool operator==(const AMFRect& self, const AMFRect& other) +{ + return self.left == other.left && self.top == other.top && self.right == other.right && self.bottom == other.bottom; +} + +static AMF_INLINE bool operator!=(const AMFRect& self, const AMFRect& other) +{ + return !operator==(self, other); +} +#endif + static AMF_INLINE struct AMFRect AMFConstructRect(amf_int32 left, amf_int32 top, amf_int32 right, amf_int32 bottom) { struct AMFRect object = {left, top, right, bottom}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Surface.h new/AMF-1.5.0/amf/public/include/core/Surface.h --- old/AMF-1.4.36/amf/public/include/core/Surface.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Surface.h 2025-10-29 14:30:32.000000000 +0100 @@ -62,17 +62,22 @@ AMF_SURFACE_P010, ///< 10 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 10 bit per component (16 allocated, upper 10 bits are used) AMF_SURFACE_RGBA_F16, ///< 11 - packed 4:4:4 - 16 bit per component float AMF_SURFACE_UYVY, ///< 12 - packed 4:2:2 the similar to YUY2 but Y and UV swapped: Byte 0=8-bit Cb; Byte 1=8-bit Y'0; Byte 2=8-bit Cr Byte 3=8-bit Y'1; (used the same DX/CL/Vulkan storage as YUY2) - AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A + AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A, ABGR AMF_SURFACE_Y210, ///< 14 - packed 4:2:2 - Word 0=10-bit Y'0; Word 1=10-bit Cb; Word 2=10-bit Y'1; Word 3=10-bit Cr - AMF_SURFACE_AYUV, ///< 15 - packed 4:4:4 - 8 bit per component YUVA + AMF_SURFACE_AYUV, ///< 15 - packed 4:4:4 - 8 bit per component VUYA AMF_SURFACE_Y410, ///< 16 - packed 4:4:4 - 10 bit per YUV component, 2 bits per A, AVYU - AMF_SURFACE_Y416, ///< 17 - packed 4:4:4 - 16 bit per component 4 bytes, AVYU + AMF_SURFACE_Y416, ///< 17 - packed 4:4:4 - 16 bit per component 8 bytes, UYVA AMF_SURFACE_GRAY32, ///< 18 - single component - 32 bit AMF_SURFACE_P012, ///< 19 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 12 bit per component (16 allocated, upper 12 bits are used) AMF_SURFACE_P016, ///< 20 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 16 bit per component (16 allocated, all bits are used) + AMF_SURFACE_Y216, ///< 21 - packed 4:2:2 - Word 0=16-bit Y'0; Word 1=16-bit Cb; Word 2=16-bit Y'1; Word 3=16-bit Cr + AMF_SURFACE_R16G16, ///< 22 - packed 4:4 - 16-bit R; 16-bit G + AMF_SURFACE_R24G8, ///< 23 - packed 4:4 - 24-bit R; 8-bit G + AMF_SURFACE_R32, ///< 24 - single component float - 32 bit + AMF_SURFACE_R16, ///< 25 - single component float - 16 bit AMF_SURFACE_FIRST = AMF_SURFACE_NV12, - AMF_SURFACE_LAST = AMF_SURFACE_P016 + AMF_SURFACE_LAST = AMF_SURFACE_R16 } AMF_SURFACE_FORMAT; //---------------------------------------------------------------------------------------------- // AMF_SURFACE_USAGE translates to D3D11_BIND_FLAG or VkImageUsageFlags diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Variant.h new/AMF-1.5.0/amf/public/include/core/Variant.h --- old/AMF-1.4.36/amf/public/include/core/Variant.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Variant.h 2025-10-29 14:30:32.000000000 +0100 @@ -587,6 +587,7 @@ static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantInit(AMFVariantStruct* pVariant) { AMF_VARIANT_RETURN_IF_INVALID_POINTER(pVariant); + memset(pVariant, 0, sizeof(AMFVariantStruct)); pVariant->type = AMF_VARIANT_EMPTY; return AMF_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/Version.h new/AMF-1.5.0/amf/public/include/core/Version.h --- old/AMF-1.4.36/amf/public/include/core/Version.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/Version.h 2025-10-29 14:30:32.000000000 +0100 @@ -50,8 +50,8 @@ #define AMF_GET_BUILD_VERSION(x) ((x >> 0ull) & 0xFFFF) #define AMF_VERSION_MAJOR 1 -#define AMF_VERSION_MINOR 4 -#define AMF_VERSION_RELEASE 35 +#define AMF_VERSION_MINOR 5 +#define AMF_VERSION_RELEASE 0 #define AMF_VERSION_BUILD_NUM 0 #define AMF_FULL_VERSION AMF_MAKE_FULL_VERSION(AMF_VERSION_MAJOR, AMF_VERSION_MINOR, AMF_VERSION_RELEASE, AMF_VERSION_BUILD_NUM) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AMF-1.4.36/amf/public/include/core/VulkanAMF.h new/AMF-1.5.0/amf/public/include/core/VulkanAMF.h --- old/AMF-1.4.36/amf/public/include/core/VulkanAMF.h 2024-11-13 18:04:14.000000000 +0100 +++ new/AMF-1.5.0/amf/public/include/core/VulkanAMF.h 2025-10-29 14:30:32.000000000 +0100 @@ -41,6 +41,12 @@ namespace amf { #endif + typedef enum AMF_VULKAN_EXTENSION_TYPE + { + AMF_VULKAN_EXTENSION_UNKNOWN = 0, + AMF_VARIANT_TIMELINE_SEMAPHORE = 1, + } AMF_VULKAN_EXTENSION_TYPE; + typedef struct AMFVulkanDevice { amf_size cbSizeof; // sizeof(AMFVulkanDevice) @@ -55,11 +61,19 @@ amf_size cbSizeof; // sizeof(AMFVulkanSync) void* pNext; // reserved for extensions VkSemaphore hSemaphore; // VkSemaphore; can be nullptr - amf_bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true + amf_bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true, ignored if timeline VkFence hFence; // To sync on CPU; can be nullptr. Submitted in vkQueueSubmit. If waited for hFence, null it, do not delete or reset. } AMFVulkanSync; - typedef struct AMFVulkanBuffer + typedef struct AMFVulkanTimeline // can be attached to AMFVulkanSync::pNext + { + amf_size cbSizeof; // sizeof(AMFVulkanTimeline) + AMF_VULKAN_EXTENSION_TYPE eExtensionType;// identifies extensions to make extension chains in the future AMF_VARIANT_TIMELINE_SEMAPHORE + void* pNext; // reserved for extensions + amf_uint64 uiCount; // count for timeline semaphores + } AMFVulkanTimeline; + + typedef struct AMFVulkanBuffer { amf_size cbSizeof; // sizeof(AMFVulkanBuffer) void* pNext; // reserved for extensions @@ -112,6 +126,7 @@ } AMFVulkanView; #define AMF_CONTEXT_VULKAN_COMPUTE_QUEUE L"VulkanComputeQueue" // amf_int64; default=0; Compute queue index in range [0, (VkQueueFamilyProperties.queueCount-1)] of the compute queue family. +#define AMF_CONTEXT_VULKAN_USE_TIMELINE_SEMAPHORES L"VulkanTimelineSemaphores" // amf_bool; default=false; Use timeline semaphores in Vulkan #if defined(__cplusplus) } // namespace amf ++++++ AMF.obsinfo ++++++ --- /var/tmp/diff_new_pack.sxSntN/_old 2026-02-16 13:16:20.651543699 +0100 +++ /var/tmp/diff_new_pack.sxSntN/_new 2026-02-16 13:16:20.675544695 +0100 @@ -1,5 +1,5 @@ name: AMF -version: 1.4.36 -mtime: 1731517454 -commit: 8f5a645e89380549368eec68935b151b238aa17b +version: 1.5.0 +mtime: 1761744632 +commit: afed28d37aca1938da2eedc50599bb3535a987ec ++++++ _service ++++++ --- /var/tmp/diff_new_pack.sxSntN/_old 2026-02-16 13:16:20.851552001 +0100 +++ /var/tmp/diff_new_pack.sxSntN/_new 2026-02-16 13:16:20.879553164 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git</param> <param name="scm">git</param> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">v1.4.36</param> + <param name="revision">v1.5.0</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="include">LICENSE.txt</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.sxSntN/_old 2026-02-16 13:16:21.015558810 +0100 +++ /var/tmp/diff_new_pack.sxSntN/_new 2026-02-16 13:16:21.059560636 +0100 @@ -3,6 +3,6 @@ <param name="url">https://github.com/GPUOpen-LibrariesAndSDKs/AMF</param> <param name="changesrevision">a118570647cfa579af8875c3955a314c3ddd7058</param></service><service name="tar_scm"> <param name="url">https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git</param> - <param name="changesrevision">8f5a645e89380549368eec68935b151b238aa17b</param></service></servicedata> + <param name="changesrevision">afed28d37aca1938da2eedc50599bb3535a987ec</param></service></servicedata> (No newline at EOF)
