Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ffnvcodec for openSUSE:Factory 
checked in at 2025-06-10 08:57:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ffnvcodec (Old)
 and      /work/SRC/openSUSE:Factory/.ffnvcodec.new.19631 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ffnvcodec"

Tue Jun 10 08:57:26 2025 rev:18 rq:1283048 version:13.0.19.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ffnvcodec/ffnvcodec.changes      2024-11-05 
15:40:24.880550083 +0100
+++ /work/SRC/openSUSE:Factory/.ffnvcodec.new.19631/ffnvcodec.changes   
2025-06-10 08:58:00.221349856 +0200
@@ -1,0 +2,7 @@
+Tue Jun 03 11:53:19 UTC 2025 - Jonatas Gonçalves <jonatas.sgoncal...@gmail.com>
+
+- Update to version 13.0.19.0:
+  * Update headers from Video SDK 13.0
+  * Bump for (in-dev) 12.2.72.1
+
+-------------------------------------------------------------------

Old:
----
  nv-codec-headers-12.2.72.0.tar.xz

New:
----
  nv-codec-headers-13.0.19.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ffnvcodec.spec ++++++
--- /var/tmp/diff_new_pack.SgoLzC/_old  2025-06-10 08:58:01.105386318 +0200
+++ /var/tmp/diff_new_pack.SgoLzC/_new  2025-06-10 08:58:01.109386483 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ffnvcodec
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           ffnvcodec
-Version:        12.2.72.0
+Version:        13.0.19.0
 Release:        0
 Summary:        FFmpeg version of NVIDIA codec API headers
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.SgoLzC/_old  2025-06-10 08:58:01.137387638 +0200
+++ /var/tmp/diff_new_pack.SgoLzC/_new  2025-06-10 08:58:01.141387803 +0200
@@ -4,7 +4,7 @@
     <param name="scm">git</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">n([0-9\.]*)</param>
-    <param name="revision">n12.2.72.0</param>
+    <param name="revision">n13.0.19.0</param>
     <param name="changesgenerate">enable</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.SgoLzC/_old  2025-06-10 08:58:01.161388628 +0200
+++ /var/tmp/diff_new_pack.SgoLzC/_new  2025-06-10 08:58:01.161388628 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://git.videolan.org/git/ffmpeg/nv-codec-headers.git</param>
-              <param 
name="changesrevision">c69278340ab1d5559c7d7bf0edf615dc33ddbba7</param></service></servicedata>
+              <param 
name="changesrevision">e844e5b26f46bb77479f063029595293aa8f812d</param></service></servicedata>
 (No newline at EOF)
 

++++++ nv-codec-headers-12.2.72.0.tar.xz -> nv-codec-headers-13.0.19.0.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nv-codec-headers-12.2.72.0/README 
new/nv-codec-headers-13.0.19.0/README
--- old/nv-codec-headers-12.2.72.0/README       2024-03-31 18:19:57.000000000 
+0200
+++ new/nv-codec-headers-13.0.19.0/README       2025-01-30 20:31:03.000000000 
+0100
@@ -1,7 +1,7 @@
 FFmpeg version of headers required to interface with Nvidias codec APIs.
 
-Corresponds to Video Codec SDK version 12.0.16.
+Corresponds to Video Codec SDK version 13.0.19.
 
 Minimum required driver versions:
-Linux: 550.54.14 or newer
-Windows: 551.76 or newer
+Linux: 570.0 or newer
+Windows: 570.0 or newer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nv-codec-headers-12.2.72.0/ffnvcodec.pc.in 
new/nv-codec-headers-13.0.19.0/ffnvcodec.pc.in
--- old/nv-codec-headers-12.2.72.0/ffnvcodec.pc.in      2024-03-31 
18:19:57.000000000 +0200
+++ new/nv-codec-headers-13.0.19.0/ffnvcodec.pc.in      2025-01-30 
20:31:03.000000000 +0100
@@ -3,5 +3,5 @@
 
 Name: ffnvcodec
 Description: FFmpeg version of Nvidia Codec SDK headers
-Version: 12.2.72.0
+Version: 13.0.19.0
 Cflags: -I${includedir}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_cuviddec.h 
new/nv-codec-headers-13.0.19.0/include/ffnvcodec/dynlink_cuviddec.h
--- old/nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_cuviddec.h 
2024-03-31 18:19:57.000000000 +0200
+++ new/nv-codec-headers-13.0.19.0/include/ffnvcodec/dynlink_cuviddec.h 
2025-01-30 20:31:03.000000000 +0100
@@ -40,8 +40,8 @@
 #endif
 #endif
 
-#define NVDECAPI_MAJOR_VERSION 12
-#define NVDECAPI_MINOR_VERSION 2
+#define NVDECAPI_MAJOR_VERSION 13
+#define NVDECAPI_MINOR_VERSION 0
 
 #define NVDECAPI_VERSION (NVDECAPI_MAJOR_VERSION | (NVDECAPI_MINOR_VERSION << 
24))
 
@@ -97,6 +97,9 @@
     cudaVideoSurfaceFormat_YUV444=2,        /**< Planar YUV [Y plane followed 
by U and V planes]                */
     cudaVideoSurfaceFormat_YUV444_16Bit=3,  /**< 16 bit Planar YUV [Y plane 
followed by U and V planes].
                                                  Can be used for 10 bit(6LSB 
bits 0), 12 bit (4LSB bits 0)      */
+    cudaVideoSurfaceFormat_NV16=4,          /**< Semi-Planar YUV 422 [Y plane 
followed by interleaved UV plane] */
+    cudaVideoSurfaceFormat_P216=5           /**< 16 bit Semi-Planar YUV 422[Y 
plane followed by interleaved UV plane].
+                                                 Can be used for 10 bit(6LSB 
bits 0), 12 bit (4LSB bits 0)      */
 } cudaVideoSurfaceFormat;
 
 
/******************************************************************************************************************/
@@ -320,10 +323,10 @@
     int delta_pic_order_always_zero_flag;
     int frame_mbs_only_flag;
     int direct_8x8_inference_flag;
-    int num_ref_frames;             // NOTE: shall meet level 4.1 restrictions
+    int num_ref_frames;
     unsigned char residual_colour_transform_flag;
-    unsigned char bit_depth_luma_minus8;    // Must be 0 (only 8-bit supported)
-    unsigned char bit_depth_chroma_minus8;  // Must be 0 (only 8-bit supported)
+    unsigned char bit_depth_luma_minus8;
+    unsigned char bit_depth_chroma_minus8;
     unsigned char qpprime_y_zero_transform_bypass_flag;
     // PPS
     int entropy_coding_mode_flag;
@@ -344,7 +347,7 @@
     int frame_num;
     int CurrFieldOrderCnt[2];
     // DPB
-    CUVIDH264DPBENTRY dpb[16];          // List of reference frames within the 
DPB
+    CUVIDH264DPBENTRY dpb[16];                      // List of reference 
frames within the DPB
     // Quantization Matrices (raster-order)
     unsigned char WeightScale4x4[6][16];
     unsigned char WeightScale8x8[2][64];
@@ -359,7 +362,10 @@
         unsigned long long slice_group_map_addr;
         const unsigned char *pMb2SliceGroupMap;
     } fmo;
-    unsigned int Reserved[12];
+    unsigned int mb_adaptive_frame_field_flag : 2;  // bit 0 represent SPS 
flag mb_adaptive_frame_field_flag
+                                                    // if bit 1 is not set, 
flag is ignored. Bit 1 is set to maintain backward compatibility
+    unsigned int Reserved1 : 30;
+    unsigned int Reserved[11];
     // SVC/MVC
     union
     {
@@ -487,7 +493,24 @@
 /***********************************************************/
 typedef struct _CUVIDJPEGPICPARAMS
 {
-    int Reserved;
+    unsigned char numComponents;
+    unsigned char bitDepth;
+    unsigned char quantizationTableSelector[4];
+    unsigned int scanOffset[4];
+    unsigned int scanSize[4];
+
+    unsigned short restartInterval;
+    unsigned char componentIdentifier[4];
+
+    unsigned char hasQMatrix;
+    unsigned char hasHuffman;
+    unsigned short quantvals[4][64];
+
+    unsigned char bits_ac[4][16];
+    unsigned char table_ac[4][256]; // there can only be max of 162 ac symbols
+
+    unsigned char bits_dc[4][16];
+    unsigned char table_dc[4][256];  // there can only be max of 12 dc symbols
 } CUVIDJPEGPICPARAMS;
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_nvcuvid.h 
new/nv-codec-headers-13.0.19.0/include/ffnvcodec/dynlink_nvcuvid.h
--- old/nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_nvcuvid.h  
2024-03-31 18:19:57.000000000 +0200
+++ new/nv-codec-headers-13.0.19.0/include/ffnvcodec/dynlink_nvcuvid.h  
2025-01-30 20:31:03.000000000 +0100
@@ -502,8 +502,11 @@
                                                      IN: call pfnDecodePicture 
even if picture bitstream is fully corrupted) */
     unsigned int ulMaxDisplayDelay;             /**< IN: Max display queue 
delay (improves pipelining of decode with display)
                                                          0=no delay 
(recommended values: 2..4)                               */
-    unsigned int bAnnexb : 1;                   /**< IN: AV1 annexB stream     
                                              */
-    unsigned int uReserved : 31;                /**< Reserved for future use - 
set to zero                                   */
+    unsigned int bAnnexb         : 1;           /**< IN: AV1 annexB stream     
                                              */
+    unsigned int bMemoryOptimize : 1;           /**< IN: Utilize minimum 
picIdx from dpb to allow memory saving at the
+                                                         decoder layer, use 
cuvidReconfigureDecoder() to increase the
+                                                         decode surfaces if 
needed  (perf may get impacted)                  */
+    unsigned int uReserved       : 30;          /**< Reserved for future use - 
set to zero                                   */
     unsigned int uReserved1[4];                 /**< IN: Reserved for future 
use - set to 0                                  */
     void *pUserData;                            /**< IN: User data for 
callbacks                                             */
     PFNVIDSEQUENCECALLBACK pfnSequenceCallback; /**< IN: Called before 
decoding frames and/or whenever there is a fmt change */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nv-codec-headers-12.2.72.0/include/ffnvcodec/nvEncodeAPI.h 
new/nv-codec-headers-13.0.19.0/include/ffnvcodec/nvEncodeAPI.h
--- old/nv-codec-headers-12.2.72.0/include/ffnvcodec/nvEncodeAPI.h      
2024-03-31 18:19:57.000000000 +0200
+++ new/nv-codec-headers-13.0.19.0/include/ffnvcodec/nvEncodeAPI.h      
2025-01-30 20:31:03.000000000 +0100
@@ -115,8 +115,8 @@
 typedef void* NV_ENC_REGISTERED_PTR;        /**< A Resource that has been 
registered with NVENCODE API*/
 typedef void* NV_ENC_CUSTREAM_PTR;          /**< Pointer to CUstream*/
 
-#define NVENCAPI_MAJOR_VERSION 12
-#define NVENCAPI_MINOR_VERSION 2
+#define NVENCAPI_MAJOR_VERSION 13
+#define NVENCAPI_MINOR_VERSION 0
 
 #define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 
24))
 
@@ -174,6 +174,14 @@
 static const GUID NV_ENC_H264_PROFILE_HIGH_GUID =
 { 0xe7cbc309, 0x4f7a, 0x4b89, { 0xaf, 0x2a, 0xd5, 0x37, 0xc9, 0x2b, 0xe3, 0x10 
} };
 
+// {8F0C337E-186C-48E9-A69D-7A8334089758}
+static const GUID NV_ENC_H264_PROFILE_HIGH_10_GUID =
+{ 0x8f0c337e, 0x186c, 0x48e9, { 0xa6, 0x9d, 0x7a, 0x83, 0x34, 0x08, 0x97, 
0x58} };
+
+// {FF3242E9-613C-4295-A1E8-2A7FE94D8133}
+static const GUID  NV_ENC_H264_PROFILE_HIGH_422_GUID =
+{ 0xff3242e9, 0x613c, 0x4295, { 0xa1, 0xe8, 0x2a, 0x7f, 0xe9, 0x4d, 0x81, 0x33 
} };
+
 // {7AC663CB-A598-4960-B844-339B261A7D52}
 static const GUID  NV_ENC_H264_PROFILE_HIGH_444_GUID =
 { 0x7ac663cb, 0xa598, 0x4960, { 0xb8, 0x44, 0x33, 0x9b, 0x26, 0x1a, 0x7d, 0x52 
} };
@@ -198,7 +206,7 @@
 static const GUID NV_ENC_HEVC_PROFILE_MAIN10_GUID =
 { 0xfa4d2b6c, 0x3a5b, 0x411a, { 0x80, 0x18, 0x0a, 0x3f, 0x5e, 0x3c, 0x9b, 0xe5 
} };
 
-// For HEVC Main 444 8 bit and HEVC Main 444 10 bit profiles only
+// For HEVC Main 422/444 8 bit and HEVC Main 422/444 10 bit profiles only
 // {51ec32b5-1b4c-453c-9cbd-b616bd621341}
 static const GUID NV_ENC_HEVC_PROFILE_FREXT_GUID =
 { 0x51ec32b5, 0x1b4c, 0x453c, { 0x9c, 0xbd, 0xb6, 0x16, 0xbd, 0x62, 0x13, 0x41 
} };
@@ -408,6 +416,8 @@
                                                                              
This format should be used only when registering the
                                                                              
resource as output buffer, which will be used to write
                                                                              
the encoded bit stream or H.264 ME only mode output. */
+    NV_ENC_BUFFER_FORMAT_NV16                            = 0x40000001,  /**< 
Semi-Planar YUV 422 [Y plane followed by interleaved UV plane] */
+    NV_ENC_BUFFER_FORMAT_P210                            = 0x40000002,  /**< 
Semi-Planar 10-bit YUV 422 [Y plane followed by interleaved UV plane] */
 } NV_ENC_BUFFER_FORMAT;
 
 /**
@@ -1205,7 +1215,21 @@
      */
     NV_ENC_CAPS_SUPPORT_UNIDIRECTIONAL_B,
 
-     /**
+    /**
+     * Indicates HW support for MVHEVC encoding.
+     * \n 0 : MVHEVC encoding not supported.
+     * \n 1 : MVHEVC encoding supported.
+     */
+    NV_ENC_CAPS_SUPPORT_MVHEVC_ENCODE,
+
+    /**
+     * Indicates HW support for YUV422 mode encoding.
+     * \n 0 : YUV422 mode encoding not supported.
+     * \n 1 : YUV422 mode encoding supported.
+     */
+    NV_ENC_CAPS_SUPPORT_YUV422_ENCODE,
+
+    /**
      * Reserved - Not to be used by clients.
      */
     NV_ENC_CAPS_EXPOSED_COUNT
@@ -1222,7 +1246,7 @@
     NV_ENC_HEVC_CUSIZE_16x16      = 2,
     NV_ENC_HEVC_CUSIZE_32x32      = 3,
     NV_ENC_HEVC_CUSIZE_64x64      = 4,
-}NV_ENC_HEVC_CUSIZE;
+} NV_ENC_HEVC_CUSIZE;
 
 /**
 *  AV1 PART SIZE
@@ -1235,7 +1259,7 @@
     NV_ENC_AV1_PART_SIZE_16x16         = 3,
     NV_ENC_AV1_PART_SIZE_32x32         = 4,
     NV_ENC_AV1_PART_SIZE_64x64         = 5,
-}NV_ENC_AV1_PART_SIZE;
+} NV_ENC_AV1_PART_SIZE;
 
 /**
 *  Enums related to fields in VUI parameters.
@@ -1248,7 +1272,7 @@
     NV_ENC_VUI_VIDEO_FORMAT_SECAM       = 3,
     NV_ENC_VUI_VIDEO_FORMAT_MAC         = 4,
     NV_ENC_VUI_VIDEO_FORMAT_UNSPECIFIED = 5,
-}NV_ENC_VUI_VIDEO_FORMAT;
+} NV_ENC_VUI_VIDEO_FORMAT;
 
 typedef enum _NV_ENC_VUI_COLOR_PRIMARIES
 {
@@ -1266,7 +1290,7 @@
     NV_ENC_VUI_COLOR_PRIMARIES_SMPTE431    = 11,
     NV_ENC_VUI_COLOR_PRIMARIES_SMPTE432    = 12,
     NV_ENC_VUI_COLOR_PRIMARIES_JEDEC_P22   = 22,
-}NV_ENC_VUI_COLOR_PRIMARIES;
+} NV_ENC_VUI_COLOR_PRIMARIES;
 
 typedef enum _NV_ENC_VUI_TRANSFER_CHARACTERISTIC
 {
@@ -1289,7 +1313,7 @@
     NV_ENC_VUI_TRANSFER_CHARACTERISTIC_SMPTE2084     = 16,
     NV_ENC_VUI_TRANSFER_CHARACTERISTIC_SMPTE428      = 17,
     NV_ENC_VUI_TRANSFER_CHARACTERISTIC_ARIB_STD_B67  = 18,
-}NV_ENC_VUI_TRANSFER_CHARACTERISTIC;
+} NV_ENC_VUI_TRANSFER_CHARACTERISTIC;
 
 typedef enum _NV_ENC_VUI_MATRIX_COEFFS
 {
@@ -1305,7 +1329,7 @@
     NV_ENC_VUI_MATRIX_COEFFS_BT2020_NCL  = 9,
     NV_ENC_VUI_MATRIX_COEFFS_BT2020_CL   = 10,
     NV_ENC_VUI_MATRIX_COEFFS_SMPTE2085   = 11,
-}NV_ENC_VUI_MATRIX_COEFFS;
+} NV_ENC_VUI_MATRIX_COEFFS;
 
 
 /**
@@ -1318,7 +1342,7 @@
     NV_ENC_LOOKAHEAD_LEVEL_2             = 2,
     NV_ENC_LOOKAHEAD_LEVEL_3             = 3,
     NV_ENC_LOOKAHEAD_LEVEL_AUTOSELECT    = 15,
-}NV_ENC_LOOKAHEAD_LEVEL;
+} NV_ENC_LOOKAHEAD_LEVEL;
 
 /**
 * Enum for Bit Depth
@@ -1328,7 +1352,7 @@
     NV_ENC_BIT_DEPTH_INVALID             = 0,         /**< Invalid Bit Depth */
     NV_ENC_BIT_DEPTH_8                   = 8,         /**< Bit Depth 8 */
     NV_ENC_BIT_DEPTH_10                  = 10,        /**< Bit Depth 10 */
-}NV_ENC_BIT_DEPTH;
+} NV_ENC_BIT_DEPTH;
 
 /**
  * Input struct for querying Encoding capabilities.
@@ -1369,11 +1393,12 @@
  */
 typedef struct _NV_ENC_OUTPUT_STATS_BLOCK
 {
-   uint32_t                 version;                /**< [in]: Struct version 
*/
-   uint8_t                  QP;                     /**< [out]: QP of the 
block */
-   uint8_t                  reserved[3];            /**< [in]: Reserved and 
must be set to 0 */
-   uint32_t                 bitcount;               /**< [out]: Bitcount of 
the block */
-   uint32_t                 reserved1[13];          /**< [in]: Reserved and 
must be set to 0 */
+    uint32_t                 version;                /**< [in]: Struct version 
*/
+    uint8_t                  QP;                     /**< [out]: QP of the 
block */
+    uint8_t                  reserved[3];            /**< [in]: Reserved and 
must be set to 0 */
+    uint32_t                 bitcount;               /**< [out]: Bitcount of 
the block */
+    uint32_t                 satdCost;               /**< [out]: SATD cost of 
the residual error */
+    uint32_t                 reserved1[12];          /**< [in]: Reserved and 
must be set to 0 */
 } NV_ENC_OUTPUT_STATS_BLOCK;
 
 /** NV_ENC_OUTPUT_STATS_BLOCK struct version. */
@@ -1384,11 +1409,12 @@
  */
 typedef struct _NV_ENC_OUTPUT_STATS_ROW
 {
-   uint32_t                 version;                /**< [in]: Struct version 
*/
-   uint8_t                  QP;                     /**< [out]: QP of the row 
*/
-   uint8_t                  reserved[3];            /**< [in]: Reserved and 
must be set to 0 */
-   uint32_t                 bitcount;               /**< [out]: Bitcount of 
the row */
-   uint32_t                 reserved1[13];          /**< [in]: Reserved and 
must be set to 0 */
+    uint32_t                 version;                /**< [in]: Struct version 
*/
+    uint8_t                  QP;                     /**< [out]: QP of the row 
*/
+    uint8_t                  reserved[3];            /**< [in]: Reserved and 
must be set to 0 */
+    uint32_t                 bitcount;               /**< [out]: Bitcount of 
the row */
+    uint32_t                 satdCost;               /**< [out]: SATD cost of 
the residual error */
+    uint32_t                 reserved1[12];          /**< [in]: Reserved and 
must be set to 0 */
 } NV_ENC_OUTPUT_STATS_ROW;
 
 /** NV_ENC_OUTPUT_STATS_ROW struct version. */
@@ -1416,7 +1442,7 @@
     uint32_t                  reserved;                /**< [in]: Reserved and 
must be set to 0 */
     NV_ENC_INPUT_PTR          inputBuffer;             /**< [in]: Specifies 
the input buffer pointer. Client must use a pointer obtained from 
::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/
     NV_ENC_PIC_TYPE           pictureType;             /**< [in]: Specifies 
input picture type. Client required to be set explicitly by the client if the 
client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling 
NvInitializeEncoder. */
-    uint32_t                  reserved1[63];            /**< [in]: Reserved 
and must be set to 0 */
+    uint32_t                  reserved1[63];           /**< [in]: Reserved and 
must be set to 0 */
     void*                     reserved2[64];           /**< [in]: Reserved and 
must be set to NULL */
 } NV_ENC_LOOKAHEAD_PIC_PARAMS;
 
@@ -1521,6 +1547,8 @@
     uint32_t        qpIntra;      /**< [in]: Specifies QP value for Intra 
Frame. Even though this field is uint32_t for legacy reasons, the client should 
treat this as a signed parameter(int32_t) for cases in which negative QP values 
are to be specified. */
 } NV_ENC_QP;
 
+#define MAX_NUM_VIEWS_MINUS_1 7
+
 /**
  * Rate Control Configuration Parameters
  */
@@ -1559,7 +1587,7 @@
                                                                                
             Applicable only for constant QP mode 
(NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */
     uint8_t                         temporalLayerQP[8];                        
  /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal 
layer index is used as the array index.
                                                                                
             Applicable only for constant QP mode 
(NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */
-    uint8_t                         targetQuality;                             
  /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 with 
0-automatic)  */
+    uint8_t                         targetQuality;                             
  /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 for 
H264/HEVC, 0-63 for AV1 with 0-automatic)  */
     uint8_t                         targetQualityLSB;                          
  /**< [in]: Fractional part of target quality (as 8.8 fixed point format) */
     uint16_t                        lookaheadDepth;                            
  /**< [in]: Maximum depth of lookahead with range 0-(31 - number of B frames).
                                                                                
             lookaheadDepth is only used if enableLookahead=1.*/
@@ -1592,7 +1620,10 @@
     int8_t                          crQPIndexOffset;                           
   /**< [in]: Specifies the value of 'second_chroma_qp_index_offset' in H264 / 
'pps_cr_qp_offset' in HEVC / 'deltaQ_v_ac' in AV1 (for future use only - 
deltaQ_v_ac is currently always internally set to same value as deltaQ_u_ac). */
     uint16_t                        reserved2;
     NV_ENC_LOOKAHEAD_LEVEL          lookaheadLevel;                            
   /**< [in]: Specifies the lookahead level. Higher level may improve quality 
at the expense of performance. */
-    uint32_t                        reserved[3];
+    uint8_t                         viewBitrateRatios[MAX_NUM_VIEWS_MINUS_1];  
   /**< [in]: Specifies the bit rate ratio for each view of MV-HEVC except the 
base view.
+                                                                               
              The base view bit rate ratio = 100 - (sum of bit rate ratio of 
all other views). */
+    uint8_t                         reserved3;
+    uint32_t                        reserved1;
  } NV_ENC_RC_PARAMS;
 
 /** macro for constructing the version field of ::_NV_ENC_RC_PARAMS */
@@ -1629,6 +1660,62 @@
                                                                                
   1 : Skips insertion of Clock Timestamp for current frame */
 } NV_ENC_TIME_CODE;
 
+#define MULTIVIEW_MAX_NUM_REF_DISPLAY 32
+
+/**
+ * G.14.2.3 3D reference displays information SEI message syntax elements
+ */
+typedef struct _HEVC_3D_REFERENCE_DISPLAY_INFO
+{
+    uint32_t      refViewingDistanceFlag                         : 1;          
 /**< [in] Specifies the presence of reference viewing distance.*/
+    uint32_t      threeDimensionalReferenceDisplaysExtensionFlag : 1;          
 /**< [in] Should be set to 0 for this version of specs. Saved for future use.*/
+    uint32_t      reserved                                       : 30;         
 /**< [in] Reserved and must be set to 0 */
+    int32_t       precRefDisplayWidth;                                         
 /**< [in] Specifies the exponent of the maximum allowable truncation error for 
refDisplayWidth[i]. Range 0-31, inclusive.*/
+    int32_t       precRefViewingDist;                                          
 /**< [in] Specifies the exponent of the maximum allowable truncation error for 
refViewingDist[i]. Range 0-31, inclusive.*/
+    int32_t       numRefDisplaysMinus1;                                        
 /**< [in] Plus 1 specifies the number of reference displays that are signalled 
in this SEI message. Range 0-31, inclusive.*/
+    int32_t       leftViewId[MULTIVIEW_MAX_NUM_REF_DISPLAY];                   
 /**< [in] Indicates the ViewId of the left view of a stereo pair corresponding 
to the i-th reference display.*/
+    int32_t       rightViewId[MULTIVIEW_MAX_NUM_REF_DISPLAY];                  
 /**< [in] Indicates the ViewId of the right view of a stereo-pair 
corresponding to the i-th reference display.*/
+    int32_t       exponentRefDisplayWidth[MULTIVIEW_MAX_NUM_REF_DISPLAY];      
 /**< [in] Specifies the exponent part of the reference display width of the 
i-th reference display.*/
+    int32_t       mantissaRefDisplayWidth[MULTIVIEW_MAX_NUM_REF_DISPLAY];      
 /**< [in] Specifies the mantissa part of the reference display width of the 
i-th reference display.*/
+    int32_t       exponentRefViewingDistance[MULTIVIEW_MAX_NUM_REF_DISPLAY];   
 /**< [in] Specifies the exponent part of the reference viewing distance of the 
i-th reference display.*/
+    int32_t       mantissaRefViewingDistance[MULTIVIEW_MAX_NUM_REF_DISPLAY];   
 /**< [in] Specifies the mantissa part of the reference viewing distance of the 
i-th reference display.*/
+    int32_t       numSampleShiftPlus512[MULTIVIEW_MAX_NUM_REF_DISPLAY];        
 /**< [in] Indicates the recommended additional horizontal shift for a stereo 
pair corresponding to the i-th reference baseline and the i-th reference 
display.*/
+    uint8_t       additionalShiftPresentFlag[MULTIVIEW_MAX_NUM_REF_DISPLAY];   
 /**< [in] Equal to 1 indicates that the information about additional 
horizontal shift of the left and right views for the i-th reference display is 
present in this SEI message.*/
+    uint32_t      reserved2[4];                                                
 /**< [in] Reserved and must be set to 0 */
+} HEVC_3D_REFERENCE_DISPLAY_INFO;
+
+/**
+ * Struct for storing x and y chroma points
+ */
+typedef struct _CHROMA_POINTS {
+    uint16_t x;
+    uint16_t y;
+} CHROMA_POINTS;
+
+/**
+ * Struct for storing mastering-display information
+ * Refer to the AV1 spec 6.7.4 Metadata high dynamic range mastering display 
color volume semantics OR
+ * HEVC spec D.2.28 Mastering display colour volume SEI message syntax
+ */
+typedef struct _MASTERING_DISPLAY_INFO {
+    CHROMA_POINTS g;
+    CHROMA_POINTS b;
+    CHROMA_POINTS r;
+    CHROMA_POINTS whitePoint;
+    uint32_t                    maxLuma;
+    uint32_t                    minLuma;
+} MASTERING_DISPLAY_INFO;
+
+/*
+* Refer to Av1 spec 6.7.3 Metadata high dynamic range content light level 
semantics OR
+* HEVC spec D.2.35 Content light level information SEI message syntax
+*/
+typedef struct _CONTENT_LIGHT_LEVEL
+{
+    uint16_t maxContentLightLevel;
+    uint16_t maxPicAverageLightLevel;
+} CONTENT_LIGHT_LEVEL;
+
 
 /**
  * \struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS
@@ -1704,9 +1791,9 @@
     int16_t    last_of_cu     : 1;                      /**< [in]: Set to 1 
for the last MV current CU */
     int16_t    last_of_sb     : 1;                      /**< [in]: Set to 1 
for the last MV of current SB */
     int16_t    reserved0      : 1;                      /**< [in]: Reserved 
and must be set to 0 */
-    int16_t    mvx            : 14;                     /**< [in]: Specifies 
the x component of integer pixel MV (relative to current MB) S12.2. */
+    int16_t    mvx            : 14;                     /**< [in]: Specifies 
the x component of integer pixel MV (relative to current MB) S12.2. Permissible 
value range: [-4092,4092]. */
     int16_t    cu_size        : 2;                      /**< [in]: Specifies 
the CU size: 0: 8x8, 1: 16x16, 2:32x32, 3:64x64 */
-    int16_t    mvy            : 12;                     /**< [in]: Specifies 
the y component of integer pixel MV (relative to current MB) S10.2 .*/
+    int16_t    mvy            : 12;                     /**< [in]: Specifies 
the y component of integer pixel MV (relative to current MB) S10.2. Permissible 
value range: [-2044,2044]. */
     int16_t    y8             : 3;                      /**< [in]: Specifies 
the current partition's top left y position in 8 pixel unit */
     int16_t    reserved1      : 1;                      /**< [in]: Reserved 
and must be set to 0 */
 } NVENC_EXTERNAL_ME_SB_HINT;
@@ -1813,7 +1900,11 @@
                                                                                
Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES 
caps. */
     NV_ENC_BIT_DEPTH                    outputBitDepth;             /**< [in]: 
Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit. */
     NV_ENC_BIT_DEPTH                    inputBitDepth;              /**< [in]: 
Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */
-    uint32_t                            reserved1[265];             /**< [in]: 
Reserved and must be set to 0 */
+    NV_ENC_TEMPORAL_FILTER_LEVEL        tfLevel;                    /**< [in]: 
Specifies the strength of temporal filtering. Check support for temporal filter 
using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps.
+                                                                               
Temporal filter feature is supported only if frameIntervalP >= 5.
+                                                                               
If ZeroReorderDelay or enableStereoMVC is enabled, the temporal filter feature 
is not supported.
+                                                                               
Temporal filter is recommended for natural contents. */
+    uint32_t                            reserved1[264];             /**< [in]: 
Reserved and must be set to 0 */
     void*                               reserved2[64];              /**< [in]: 
Reserved and must be set to NULL */
 } NV_ENC_CONFIG_H264;
 
@@ -1861,7 +1952,15 @@
                                                                                
This flag will be ignored if the value returned for 
::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps is false. */
     uint32_t outputRecoveryPointSEI                :1;              /**< [in]: 
Set to 1 to enable writing of recovery point SEI message */
     uint32_t outputTimeCodeSEI                     :1;              /**< [in]: 
Set 1 to write SEI time code syntax in the bitstream. Note that this flag will 
be ignored for D3D12 interface.*/
-    uint32_t reserved                              :12;             /**< [in]: 
Reserved bitfields.*/
+    uint32_t enableTemporalSVC                     :1;              /**< [in]: 
Set to 1 to enable SVC temporal */
+    uint32_t enableMVHEVC                          :1;              /**< [in]: 
Set to 1 to enable stereo MVHEVC. This feature currently supports only 2 views.
+                                                                               
This feature is disabled for LTR, Alpha Layer Encoding, UniDirectionalB,
+                                                                               
PyramidalME, Lookahead, Temporal Filter, Split encoding, 2 pass encoding and 
for NV_ENC_TUNING_INFO other than
+                                                                               
NV_ENC_TUNING_INFO_HIGH_QUALITY. */
+    uint32_t outputHevc3DReferenceDisplayInfo      :1;              /**< [in]: 
Set to 1 to write 3D reference displays information SEI message for MVHEVC */
+    uint32_t outputMaxCll                          :1;              /**< [in]: 
Set to 1 to write Content Light Level information SEI message for HEVC */
+    uint32_t outputMasteringDisplay                :1;              /**< [in]: 
Set to 1 to write Mastering displays information SEI message for HEVC */
+    uint32_t reserved                              :7;              /**< [in]: 
Reserved bitfields.*/
     uint32_t idrPeriod;                                             /**< [in]: 
Specifies the IDR interval. If not set, this is made equal to gopLength in 
NV_ENC_CONFIG. Low latency application client can set IDR interval to 
NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */
     uint32_t intraRefreshPeriod;                                    /**< [in]: 
Specifies the interval between successive intra refresh if enableIntrarefresh 
is set. Requires enableIntraRefresh to be set.
                                                                     Will be 
disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */
@@ -1895,7 +1994,7 @@
                                                                                
Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES 
caps. */
     NV_ENC_NUM_REF_FRAMES               numRefL1;                   /**< [in]: 
Specifies max number of reference frames in reference picture list L1, that can 
be used by hardware for prediction of a frame.
                                                                                
Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES 
caps. */
-    NV_ENC_TEMPORAL_FILTER_LEVEL        tfLevel;                    /**< [in]: 
Specifies the strength of the temporal filtering.
+    NV_ENC_TEMPORAL_FILTER_LEVEL        tfLevel;                    /**< [in]: 
Specifies the strength of the temporal filtering. Check support for temporal 
filtering using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps.
                                                                                
Temporal filter feature is supported only if frameIntervalP >= 5.
                                                                                
Temporal filter feature is not supported with 
ZeroReorderDelay/enableStereoMVC/AlphaLayerEncoding.
                                                                                
Temporal filter is recommended for natural contents. */
@@ -1904,11 +2003,13 @@
                                                                                
which specifies whether the operation of the deblocking filter shall be 
disabled across some
                                                                                
block edges of the slice and specifies for which edges the filtering is 
disabled. See section
                                                                                
7.4.3.3 of H.265 specification for more details.*/
-   NV_ENC_BIT_DEPTH                     outputBitDepth;             /**< [in]: 
Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit.
+    NV_ENC_BIT_DEPTH                    outputBitDepth;             /**< [in]: 
Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit.
                                                                                
SW will do the bitdepth conversion internally from inputBitDepth -> 
outputBitDepth if bit depths differ
                                                                                
Support for 8 bit input to 10 bit encode conversion only*/
-   NV_ENC_BIT_DEPTH                     inputBitDepth;              /**< [in]: 
Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input.*/
-    uint32_t                            reserved1[210];             /**< [in]: 
Reserved and must be set to 0.*/
+    NV_ENC_BIT_DEPTH                    inputBitDepth;              /**< [in]: 
Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input.*/
+    uint32_t                            numTemporalLayers;          /**< [in]: 
Specifies the number of temporal layers to be used for hierarchical coding.*/
+    uint32_t                            numViews;                   /**< [in]: 
Specifies number of views for MVHEVC */
+    uint32_t                            reserved1[208];             /**< [in]: 
Reserved and must be set to 0.*/
     void*                               reserved2[64];              /**< [in]: 
Reserved and must be set to NULL */
 } NV_ENC_CONFIG_HEVC;
 
@@ -1973,7 +2074,14 @@
     uint32_t enableBitstreamPadding         : 1;                    /**< [in]: 
Set 1 to enable bitstream padding. */
     uint32_t enableCustomTileConfig         : 1;                    /**< [in]: 
Set 1 to enable custom tile configuration: numTileColumns and numTileRows must 
have non zero values and tileWidths and tileHeights must point to a valid 
address  */
     uint32_t enableFilmGrainParams          : 1;                    /**< [in]: 
Set 1 to enable custom film grain parameters: filmGrainParams must point to a 
valid address  */
-    uint32_t reserved4                      : 6;                    /**< [in]: 
Reserved and must be set to 0.*/
+    uint32_t enableLTR                      : 1;                    /**< [in]: 
Set to 1 to enable LTR (Long Term Reference) frame support. LTR can be used in 
"LTR Per Picture" mode.
+                                                                               
In this mode, client can control whether the current picture should be marked 
as LTR.
+                                                                               
use ltrMarkFrame = 1 for the picture to be marked as LTR.
+                                                                               
Note that LTRs are not supported if encoding session is configured with 
B-frames */
+    uint32_t enableTemporalSVC              : 1;                    /**< [in]: 
Set to 1 to enable SVC temporal */
+    uint32_t outputMaxCll                   : 1;                    /**< [in]: 
Set to 1 to write Content Light Level metadata for Av1 */
+    uint32_t outputMasteringDisplay         : 1;                    /**< [in]: 
Set to 1 to write Mastering displays metadata for Av1 */
+    uint32_t reserved4                      : 2;                    /**< [in]: 
Reserved and must be set to 0.*/
     uint32_t reserved                       : 14;                   /**< [in]: 
Reserved bitfields.*/
     uint32_t idrPeriod;                                             /**< [in]: 
Specifies the IDR/Key frame interval. If not set, this is made equal to 
gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval 
to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. 
*/
     uint32_t intraRefreshPeriod;                                    /**< [in]: 
Specifies the interval between successive intra refresh if enableIntrarefresh 
is set. Requires enableIntraRefresh to be set.
@@ -2003,13 +2111,22 @@
                                                                                
2: Co-located with luma (0,0) sample */
     NV_ENC_BFRAME_REF_MODE useBFramesAsRef;                         /**< [in]: 
Specifies the B-Frame as reference mode. Check support for useBFramesAsRef mode 
using  ::NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE caps.*/
     NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams;                  /**< [in]: 
If enableFilmGrainParams == 1, filmGrainParams must point to a valid 
NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */
-    NV_ENC_NUM_REF_FRAMES  numFwdRefs;                              /**< [in]: 
Specifies max number of forward reference frame used for prediction of a frame. 
It must be in range 1-4 (Last, Last2, last3 and Golden). It's a suggestive 
value not necessarily be honored always. */
-    NV_ENC_NUM_REF_FRAMES  numBwdRefs;                              /**< [in]: 
Specifies max number of L1 list reference frame used for prediction of a frame. 
It must be in range 1-3 (Backward, Altref2, Altref). It's a suggestive value 
not necessarily be honored always. */
-   NV_ENC_BIT_DEPTH outputBitDepth;                                 /**< [in]: 
Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit.
+    NV_ENC_NUM_REF_FRAMES numFwdRefs;                               /**< [in]: 
Specifies max number of forward reference frame used for prediction of a frame. 
It must be in range 1-4 (Last, Last2, last3 and Golden). It's a suggestive 
value not necessarily be honored always. */
+    NV_ENC_NUM_REF_FRAMES numBwdRefs;                               /**< [in]: 
Specifies max number of L1 list reference frame used for prediction of a frame. 
It must be in range 1-3 (Backward, Altref2, Altref). It's a suggestive value 
not necessarily be honored always. */
+    NV_ENC_BIT_DEPTH outputBitDepth;                                /**< [in]: 
Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit.
                                                                                
HW will do the bitdepth conversion internally from inputBitDepth -> 
outputBitDepth if bit depths differ
                                                                                
Support for 8 bit input to 10 bit encode conversion only */
-   NV_ENC_BIT_DEPTH inputBitDepth;                                  /**< [in]: 
Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */
-    uint32_t reserved1[233];                                        /**< [in]: 
Reserved and must be set to 0.*/
+    NV_ENC_BIT_DEPTH inputBitDepth;                                 /**< [in]: 
Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 
for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */
+    uint32_t ltrNumFrames;                                          /**< [in]: 
In "LTR Per Picture" mode (ltrMarkFrame = 1), ltrNumFrames specifies maximum 
number of LTR frames in DPB.
+                                                                               
These ltrNumFrames acts as a guidance to the encoder and are not necessarily 
honored. To achieve a right balance between the encoding
+                                                                               
quality and keeping LTR frames in the DPB queue, the encoder can internally 
limit the number of LTR frames.
+                                                                               
The number of LTR frames actually used depends upon the encoding preset being 
used; Faster encoding presets will use fewer LTR frames.*/
+    uint32_t numTemporalLayers;                                     /**< [in]: 
Specifies the number of temporal layers to be used for hierarchical coding.*/
+    NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel;                           /**< [in]: 
Specifies the strength of temporal filtering. Check support for temporal filter 
using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps.
+                                                                               
Temporal filter feature is supported only if frameIntervalP >= 5.
+                                                                               
If ZeroReorderDelay or enableStereoMVC is enabled, the temporal filter feature 
is not supported.
+                                                                               
Temporal filter is recommended for natural contents. */
+    uint32_t reserved1[230];                                        /**< [in]: 
Reserved and must be set to 0.*/
     void*    reserved3[62];                                         /**< [in]: 
Reserved and must be set to NULL */
 } NV_ENC_CONFIG_AV1;
 
@@ -2039,7 +2156,7 @@
  */
 typedef struct _NV_ENC_CONFIG_HEVC_MEONLY
 {
-    uint32_t reserved [256];                                   /**< [in]: 
Reserved and must be set to 0 */
+    uint32_t reserved [256];                                    /**< [in]: 
Reserved and must be set to 0 */
     void*    reserved1[64];                                     /**< [in]: 
Reserved and must be set to NULL */
 } NV_ENC_CONFIG_HEVC_MEONLY;
 
@@ -2092,7 +2209,7 @@
     NV_ENC_TUNING_INFO_LOW_LATENCY       = 2,                                  
   /**< Tune presets for low latency streaming.*/
     NV_ENC_TUNING_INFO_ULTRA_LOW_LATENCY = 3,                                  
   /**< Tune presets for ultra low latency streaming.*/
     NV_ENC_TUNING_INFO_LOSSLESS          = 4,                                  
   /**< Tune presets for lossless encoding.*/
-    NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY = 5,                                 
   /**< Tune presets for latency tolerant encoding for higher quality. Only 
supported for HEVC on Turing+ architectures */
+    NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY = 5,                                 
   /**< Tune presets for latency tolerant encoding for higher quality. Only 
supported for HEVC and AV1 on Turing+ architectures */
     NV_ENC_TUNING_INFO_COUNT                                                   
   /**< Count number of tuningInfos. Invalid value. */
 }NV_ENC_TUNING_INFO;
 
@@ -2101,10 +2218,11 @@
  */
 typedef enum _NV_ENC_SPLIT_ENCODE_MODE
 {
-    NV_ENC_SPLIT_AUTO_MODE               = 0,                                  
  /**< Default value, split frame forced mode disabled, split frame auto mode 
enabled */
-    NV_ENC_SPLIT_AUTO_FORCED_MODE        = 1,                                  
  /**< Split frame forced mode enabled with number of strips automatically 
selected by driver to best fit configuration */
+    NV_ENC_SPLIT_AUTO_MODE               = 0,                                  
  /**< Default value, implicit mode. Split frame will not always be enabled, 
even if NVENC number > 1. It will be decided by the driver based on preset, 
tuning information and video resolution. */
+    NV_ENC_SPLIT_AUTO_FORCED_MODE        = 1,                                  
  /**< Split frame forced mode enabled with number of strips automatically 
selected by driver to best fit configuration. If NVENC number > 1, split frame 
will be forced. */
     NV_ENC_SPLIT_TWO_FORCED_MODE         = 2,                                  
  /**< Forced 2-strip split frame encoding (if NVENC number > 1, 1-strip encode 
otherwise) */
     NV_ENC_SPLIT_THREE_FORCED_MODE       = 3,                                  
  /**< Forced 3-strip split frame encoding (if NVENC number > 2, NVENC number 
of strips otherwise) */
+    NV_ENC_SPLIT_FOUR_FORCED_MODE        = 4,                                  
  /**< Forced 4-strip split frame encoding (if NVENC number > 3, NVENC number 
of strips otherwise) */
     NV_ENC_SPLIT_DISABLE_MODE            = 15,                                 
  /**< Both split frame auto mode and forced mode are disabled  */
 } NV_ENC_SPLIT_ENCODE_MODE;
 
@@ -2139,7 +2257,8 @@
                                                                                
            Not supported if any of the following features: weighted 
prediction, alpha layer encoding,
                                                                                
            subframe mode, output into video memory buffer, picture 
timing/buffering period SEI message
                                                                                
            insertion with DX12 interface are enabled in case of HEVC.
-                                                                               
            For AV1, split encoding is not supported when output into video 
memory buffer is enabled. */
+                                                                               
            For AV1, split encoding is not supported when output into video 
memory buffer is enabled.
+                                                                               
            For valid values see ::NV_ENC_SPLIT_ENCODE_MODE enum.*/
     uint32_t                                   enableOutputInVidmem      :1;   
 /**< [in]: Set this to 1 to enable output of NVENC in video memory buffer 
created by application. This feature is not supported for HEVC ME only mode. */
     uint32_t                                   enableReconFrameOutput    :1;   
 /**< [in]: Set this to 1 to enable reconstructed frame output. */
     uint32_t                                   enableOutputStats         :1;   
 /**< [in]: Set this to 1 to enable encoded frame output stats. Client must 
allocate buffer of size equal to number of blocks multiplied by the size of
@@ -2168,7 +2287,7 @@
                                                                                
            if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to 
NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of
                                                                                
            NV_ENC_OUTPUT_STATS_ROW struct if 
NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_ROW
                                                                                
            in system memory and assign to 
NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame 
output stats. */
-    uint32_t                                   reserved1 [284];                
  /**< [in]: Reserved and must be set to 0 */
+    uint32_t                                   reserved1[284];                 
 /**< [in]: Reserved and must be set to 0 */
     void*                                      reserved2[64];                  
 /**< [in]: Reserved and must be set to NULL */
 } NV_ENC_INITIALIZE_PARAMS;
 
@@ -2203,7 +2322,7 @@
                                                                                
            If NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1, encoder will 
force the frame type to IDR */
     uint32_t                                    forceIDR                :1;    
 /**< [in]: Encode the current picture as an IDR picture. This flag is only 
valid when Picture type decision is taken by the Encoder
                                                                                
            [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */
-    uint32_t                                    reserved1                :30;
+    uint32_t                                    reserved1               :30;
     uint32_t                                    reserved2;                     
 /**< [in]: Reserved and must be set to 0 */
 
 }NV_ENC_RECONFIGURE_PARAMS;
@@ -2239,7 +2358,7 @@
     uint32_t temporalID;                                 /**< [in]: Specifies 
the temporal ID associated with the current input view. */
     uint32_t priorityID;                                 /**< [in]: Specifies 
the priority ID associated with the current input view. Reserved and ignored by 
the NvEncodeAPI interface. */
     uint32_t reserved1[12];                              /**< [in]: Reserved 
and must be set to 0. */
-    void*    reserved2[8];                              /**< [in]: Reserved 
and must be set to NULL. */
+    void*    reserved2[8];                               /**< [in]: Reserved 
and must be set to NULL. */
 }NV_ENC_PIC_PARAMS_MVC;
 
 /** macro for constructing the version field of ::_NV_ENC_PIC_PARAMS_MVC */
@@ -2333,7 +2452,8 @@
                                                                     When 
forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode 
setting */
     uint32_t ltrMarkFrame               :1;              /**< [in]: Set to 1 
if client wants to mark this frame as LTR */
     uint32_t ltrUseFrames               :1;              /**< [in]: Set to 1 
if client allows encoding this frame using the LTR frames specified in 
ltrFrameBitmap */
-    uint32_t reservedBitFields          :28;             /**< [in]: Reserved 
bit fields and must be set to 0 */
+    uint32_t temporalConfigUpdate       :1;              /**< [in]: Set to 1 
if client wants to change the number of temporal layers in temporal SVC 
encoding */
+    uint32_t reservedBitFields          :27;             /**< [in]: Reserved 
bit fields and must be set to 0 */
     uint32_t reserved1;                                  /**< [in]: Reserved 
and must be set to 0. */
     uint8_t* sliceTypeData;                              /**< [in]: Array 
which specifies the slice type used to force intra slice for a particular 
slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3.
                                                                     Client 
should allocate array of size sliceModeData where sliceModeData is specified in 
field of ::_NV_ENC_CONFIG_H264
@@ -2356,8 +2476,14 @@
     uint32_t reserved;                                   /**< [in]: Reserved 
and must be set to 0. */
     NV_ENC_SEI_PAYLOAD* seiPayloadArray;                 /**< [in]: Array of 
SEI payloads which will be inserted for this frame. */
     NV_ENC_TIME_CODE timeCode;                           /**< [in]: Specifies 
the clock timestamp sets used in time code SEI. Applicable only when 
NV_ENC_CONFIG_HEVC::enableTimeCodeSEI is set to 1. */
-    uint32_t reserved2[236];                             /**< [in]: Reserved 
and must be set to 0. */
-    void* reserved3[61];                                 /**< [in]: Reserved 
and must be set to NULL. */
+    uint32_t numTemporalLayers;                          /**< [in]: Specifies 
the number of temporal layers to be used for hierarchical coding. The set only 
takes place when temporalConfigUpdate == 1.*/
+    uint32_t viewId;                                     /**< [in]: Specifies 
the view id of the picture */
+    HEVC_3D_REFERENCE_DISPLAY_INFO *p3DReferenceDisplayInfo; /**< [in]: 
Specifies the 3D reference displays information SEI message.
+                                                                        
Applicable only when NV_ENC_CONFIG_HEVC::outputHevc3DReferenceDisplayInfo is 
set to 1. */
+    CONTENT_LIGHT_LEVEL *pMaxCll;                        /**< [in]: Specifies 
the Content light level information SEI syntax*/
+    MASTERING_DISPLAY_INFO *pMasteringDisplay;           /**< [in]: Specifies 
the Mastering display colour volume SEI syntax*/
+    uint32_t reserved2[234];                             /**< [in]: Reserved 
and must be set to 0. */
+    void* reserved3[58];                                 /**< [in]: Reserved 
and must be set to NULL. */
 } NV_ENC_PIC_PARAMS_HEVC;
 
 #define NV_ENC_AV1_OBU_PAYLOAD NV_ENC_SEI_PAYLOAD
@@ -2388,7 +2514,10 @@
                                                                     When 
forceIntraRefreshWithFrameCnt is set it will have priority over 
tileConfigUpdate setting */
     uint32_t enableCustomTileConfig     : 1;             /**< [in]: Set 1 to 
enable custom tile configuration: numTileColumns and numTileRows must have non 
zero values and tileWidths and tileHeights must point to a valid address  */
     uint32_t filmGrainParamsUpdate      : 1;             /**< [in]: Set to 1 
if client wants to update previous film grain parameters: filmGrainParams must 
point to a valid address and encoder must have been configured with film grain 
enabled  */
-    uint32_t reservedBitFields          : 22;            /**< [in]: Reserved 
bitfields and must be set to 0 */
+    uint32_t ltrMarkFrame               : 1;             /**< [in]: Set to 1 
if client wants to mark this frame as LTR */
+    uint32_t ltrUseFrames               : 1;             /**< [in]: Set to 1 
if client allows encoding this frame using the LTR frames specified in 
ltrFrameBitmap */
+    uint32_t temporalConfigUpdate       : 1;             /**< [in]: Set to 1 
if client wants to change the number of temporal layers in temporal SVC 
encoding */
+    uint32_t reservedBitFields          : 19;            /**< [in]: Reserved 
bitfields and must be set to 0 */
     uint32_t numTileColumns;                             /**< [in]: This 
parameter in conjunction with the flag enableCustomTileConfig and the array 
tileWidths[] specifies the way in which the picture is divided into tile 
columns.
                                                                     When 
enableCustomTileConfig == 0, the picture will be uniformly divided into 
numTileColumns tile columns. If numTileColumns is not a power of 2,
                                                                     it will be 
rounded down to the next power of 2 value. If numTileColumns == 0, the picture 
will be coded with the smallest number of vertical tiles as allowed by standard.
@@ -2403,11 +2532,17 @@
     uint32_t *tileWidths;                                /**< [in]: If 
enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i 
in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */
     uint32_t *tileHeights;                               /**< [in]: If 
enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i 
in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */
     uint32_t obuPayloadArrayCnt;                         /**< [in]: Specifies 
the number of elements allocated in  obuPayloadArray array. */
-    uint32_t reserved1;                                   /**< [in]: Reserved 
and must be set to 0. */
+    uint32_t reserved1;                                  /**< [in]: Reserved 
and must be set to 0. */
     NV_ENC_AV1_OBU_PAYLOAD* obuPayloadArray;             /**< [in]: Array of 
OBU payloads which will be inserted for this frame. */
     NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams;       /**< [in]: If 
filmGrainParamsUpdate == 1, filmGrainParams must point to a valid 
NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */
-    uint32_t reserved2[246];                             /**< [in]: Reserved 
and must be set to 0. */
-    void*    reserved3[61];                              /**< [in]: Reserved 
and must be set to NULL. */
+    uint32_t ltrMarkFrameIdx;                            /**< [in]: Specifies 
the long term reference frame index to use for marking this frame as LTR.*/
+    uint32_t ltrUseFrameBitmap;                          /**< [in]: Specifies 
the associated bitmap of LTR frame indices to use when encoding this frame. */
+    uint32_t numTemporalLayers;                          /**< [in]: Specifies 
the number of temporal layers to be used for hierarchical coding. The set only 
takes place when temporalConfigUpdate == 1.*/
+    uint32_t reserved4;                                  /**< [in]: Reserved 
and must be set to 0. */
+    CONTENT_LIGHT_LEVEL *pMaxCll;                        /**< [in]: Specifies 
the Content light level metadata syntax*/
+    MASTERING_DISPLAY_INFO *pMasteringDisplay;           /**< [in]: Specifies 
the Mastering display colour volume metadata syntax*/
+    uint32_t reserved2[242];                             /**< [in]: Reserved 
and must be set to 0. */
+    void*    reserved3[59];                              /**< [in]: Reserved 
and must be set to NULL. */
 } NV_ENC_PIC_PARAMS_AV1;
 
 /**
@@ -2470,7 +2605,7 @@
     uint32_t                                    reservedBitFields;             
  /**< [in]: Reserved bitfields and must be set to 0 */
     uint16_t                                    meHintRefPicDist[2];           
  /**< [in]: Specifies temporal distance for reference picture 
(NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with 
NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints 
and meHintRefPicDist[1] is for L1 hints.
                                                                                
             If not set, will internally infer distance of 1. Ignored for 
NV_ENC_INITALIZE_PARAMS::enablePTD = 0 */
-     uint32_t                                    reserved4;                    
   /**< [in]: Reserved and must be set to 0 */
+    uint32_t                                    reserved4;                     
  /**< [in]: Reserved and must be set to 0 */
     NV_ENC_INPUT_PTR                            alphaBuffer;                   
  /**< [in]: Specifies the input alpha buffer pointer. Client must use a 
pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() 
APIs.
                                                                                
             Applicable only when encoding hevc with alpha layer is enabled. */
     NVENC_EXTERNAL_ME_SB_HINT                  *meExternalSbHints;             
  /**< [in]: For AV1,Specifies the pointer to ME external SB hints for the 
current frame. The size of ME hint buffer should be equal to meSbHintsCount. */
@@ -2726,7 +2861,10 @@
                                                                            to 
NV_ENC_OUTPUT_RECON and D3D11 interface is used.
                                                                            
When chroma components are interleaved, 'chromaOffset[0]' will contain chroma 
offset.
                                                                            
chromaOffset[1] is reserved for future use. */
-    uint32_t                    reserved1[246];                 /**< [in]: 
Reserved and must be set to 0. */
+    uint32_t                    chromaOffsetIn[2];              /**< [in]: 
Chroma offset for input buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set to 
NV_ENC_INPUT_IMAGE
+                                                                           and 
NVCUVID interface is used. This is required only when luma and chroma 
allocations are not continuous,
+                                                                           and 
the planes are padded. */
+    uint32_t                    reserved1[244];                 /**< [in]: 
Reserved and must be set to 0. */
     void*                       reserved2[61];                  /**< [in]: 
Reserved and must be set to NULL. */
 } NV_ENC_REGISTER_RESOURCE;
 
@@ -2741,7 +2879,7 @@
 {
     uint32_t            version;                         /**< [in]:  Struct 
version. Must be set to ::NV_ENC_STAT_VER. */
     uint32_t            reserved;                        /**< [in]:  Reserved 
and must be set to 0 */
-    NV_ENC_OUTPUT_PTR   outputBitStream;                 /**< [in]: Specifies 
the pointer to output bitstream. */
+    NV_ENC_OUTPUT_PTR   outputBitStream;                 /**< [in]:  Specifies 
the pointer to output bitstream. */
     uint32_t            bitStreamSize;                   /**< [out]: Size of 
generated bitstream in bytes. */
     uint32_t            picType;                         /**< [out]: Picture 
type of encoded picture. See ::NV_ENC_PIC_TYPE. */
     uint32_t            lastValidByteOffset;             /**< [out]: Offset of 
last valid bytes of completed bitstream */
@@ -4456,8 +4594,8 @@
     uint32_t                        reserved;                          /**< 
[in]: Reserved and should be set to 0.                                          
        */
     PNVENCOPENENCODESESSION         nvEncOpenEncodeSession;            /**< 
[out]: Client should access ::NvEncOpenEncodeSession() API through this 
pointer.        */
     PNVENCGETENCODEGUIDCOUNT        nvEncGetEncodeGUIDCount;           /**< 
[out]: Client should access ::NvEncGetEncodeGUIDCount() API through this 
pointer.       */
-    PNVENCGETENCODEPRESETCOUNT      nvEncGetEncodeProfileGUIDCount;    /**< 
[out]: Client should access ::NvEncGetEncodeProfileGUIDCount() API through this 
pointer.*/
-    PNVENCGETENCODEPRESETGUIDS      nvEncGetEncodeProfileGUIDs;        /**< 
[out]: Client should access ::NvEncGetEncodeProfileGUIDs() API through this 
pointer.    */
+    PNVENCGETENCODEPROFILEGUIDCOUNT nvEncGetEncodeProfileGUIDCount;    /**< 
[out]: Client should access ::NvEncGetEncodeProfileGUIDCount() API through this 
pointer.*/
+    PNVENCGETENCODEPROFILEGUIDS     nvEncGetEncodeProfileGUIDs;        /**< 
[out]: Client should access ::NvEncGetEncodeProfileGUIDs() API through this 
pointer.    */
     PNVENCGETENCODEGUIDS            nvEncGetEncodeGUIDs;               /**< 
[out]: Client should access ::NvEncGetEncodeGUIDs() API through this pointer.   
        */
     PNVENCGETINPUTFORMATCOUNT       nvEncGetInputFormatCount;          /**< 
[out]: Client should access ::NvEncGetInputFormatCount() API through this 
pointer.      */
     PNVENCGETINPUTFORMATS           nvEncGetInputFormats;              /**< 
[out]: Client should access ::NvEncGetInputFormats() API through this pointer.  
        */

Reply via email to