NVIDIA DRIVE OS Linux SDK API Reference

6.0.4 Release
nvmedia_drm.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 
14 #ifndef NVMEDIA_DRM_H
15 #define NVMEDIA_DRM_H
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #include <stdint.h>
22 #include <stdbool.h>
23 
24 #include "nvmedia_common_decode.h"
25 #include "nvmedia_core.h"
26 
47 #define NVMEDIA_MAX_NALS 256
48 
50 typedef enum {
72  NvMDRM_Clear = 0xf,
78 
82 typedef struct
83 {
85  uint32_t enableEncryption;
87  uint32_t uDrmMode;
89  uint32_t InitVector[NVMEDIA_MAX_NALS][4];
91  uint32_t IvValid[NVMEDIA_MAX_NALS];
95  uint32_t uEncryptBlkCnt;
97  uint32_t uSkipBlkCnt;
99  uint32_t uNumNals;
101  uint32_t KeySlotNumber;
103  uint32_t BOED[NVMEDIA_MAX_NALS];
105  uint32_t BOCD[NVMEDIA_MAX_NALS];
109  uint32_t non_slice_data;
111 
117 typedef struct {
121  uint8_t *pClearHeaderPtr;
125 
127 typedef struct {
129  uint8_t IV[16];
131  uint32_t bIvValid;
132 } NvMediaAESIv;
133 
138 typedef struct _NvMediaAESParams
139 {
141  uint32_t uDrmMode;
143  uint8_t *pIV;
145  uint32_t uEncryptBlkCnt;
147  uint32_t uSkipBlkCnt;
149  uint32_t KeySlotNumber;
151  uint32_t *pBOED;
153  uint32_t *pBOCD;
155  uint32_t uMetadataCount;
161 
166 #define NVMEDIA_VIDEO_DECRYPT_PROFILING (1<<0)
167 
169 typedef struct {
173  uint32_t hwClockValue;
175 
218  NvMediaVideoCodec codec,
219  uint32_t maxBitstreamSize,
220  uint32_t flags,
221  NvMediaDecoderInstanceId instanceId
222 );
223 
244 void
246  const NvMediaVideoDecrypter *pDecrypter
247 );
248 
249 
288  const NvMediaVideoDecrypter *pDecrypter,
289  const void *pictureData,
290  const NvMediaBitstreamBuffer *pBitstream,
291  NvMediaDecoderInstanceId instanceId
292 );
293 
294 
328  NvMediaVideoDecrypter *pDecrypter,
329  void *pictureData
330 );
331 
334 #ifdef __cplusplus
335 } /* extern "C" */
336 #endif
337 
338 #endif /* NVMEDIA_DRM_H */
NVMEDIA_MAX_NALS
#define NVMEDIA_MAX_NALS
max number of subsample support
Definition: nvmedia_drm.h:47
NvMediaEncryptParams::uNumNals
uint32_t uNumNals
total number of subsamples for given buffer
Definition: nvmedia_drm.h:99
NvMediaVideoDecrypter::eCodec
NvMediaVideoCodec eCodec
Codec type.
Definition: nvmedia_drm.h:171
NvMediaEncryptParams::uDrmMode
uint32_t uDrmMode
drm mode of encrypted content.
Definition: nvmedia_drm.h:87
NvMediaEncryptParams::AesPass1OutputBuffer
uint32_t * AesPass1OutputBuffer
encrypted metadata buffer of pass1
Definition: nvmedia_drm.h:107
NvMediaAESIv::bIvValid
uint32_t bIvValid
intialization vector present or not
Definition: nvmedia_drm.h:131
NvMDRM_PiffCbc
@ NvMDRM_PiffCbc
drm format: Piff CBC
Definition: nvmedia_drm.h:62
_NvMediaAESParams::uNonAlignedOffset
uint32_t uNonAlignedOffset
non aligned offset for encrypted buffer
Definition: nvmedia_drm.h:157
NvMDRM_MarlinCtr
@ NvMDRM_MarlinCtr
drm format: Marlin CTR
Definition: nvmedia_drm.h:68
NvMediaAESMetaData::pClearHeaderPtr
uint8_t * pClearHeaderPtr
clear hdr pointer to buffer after pass1
Definition: nvmedia_drm.h:121
NvMDRM_Netflix
@ NvMDRM_Netflix
drm format: Netflix
Definition: nvmedia_drm.h:52
NvMDRM_Widevine
@ NvMDRM_Widevine
drm format: Widevine
Definition: nvmedia_drm.h:54
NvMDRM_Clear
@ NvMDRM_Clear
drm format: Clear data
Definition: nvmedia_drm.h:72
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMediaAESMetaData
Holds re-encrypted data information that the video decoder returns to the parser.
Definition: nvmedia_drm.h:117
NvMediaVideoDecrypterCreate
NvMediaVideoDecrypter * NvMediaVideoDecrypterCreate(NvMediaVideoCodec codec, uint32_t maxBitstreamSize, uint32_t flags, NvMediaDecoderInstanceId instanceId)
Creates a video decrypter object.
NvMediaVideoDecrypterDestroy
void NvMediaVideoDecrypterDestroy(const NvMediaVideoDecrypter *pDecrypter)
Destroys a video decoder decrypter object.
_NvMediaAESParams
Holds encrypted metadata information that the client sends to the parser.
Definition: nvmedia_drm.h:138
_NvMediaAESParams::KeySlotNumber
uint32_t KeySlotNumber
keyslot number used where content key is written
Definition: nvmedia_drm.h:149
NvMDRM_WidevineCtr
@ NvMDRM_WidevineCtr
drm format: Widevine CTR
Definition: nvmedia_drm.h:70
_NvMediaAESParams::uEncryptBlkCnt
uint32_t uEncryptBlkCnt
encrypt blk count when pattern mode encryption is used
Definition: nvmedia_drm.h:145
_NvMediaAESParams::pIV
uint8_t * pIV
pointer to intialization vector array
Definition: nvmedia_drm.h:143
NvMediaDRMType
NvMediaDRMType
Defines the supported DRM formats.
Definition: nvmedia_drm.h:50
NvMediaVideoDecryptHeader
NvMediaStatus NvMediaVideoDecryptHeader(const NvMediaVideoDecrypter *pDecrypter, const void *pictureData, const NvMediaBitstreamBuffer *pBitstream, NvMediaDecoderInstanceId instanceId)
Decrypts the HDR of the encrypted content.
NvMDRM_Marlin
@ NvMDRM_Marlin
drm format: Marlin
Definition: nvmedia_drm.h:60
NvMediaAESMetaData::pAesPass1OutputBuffer
uint32_t * pAesPass1OutputBuffer
encrypted metadata struture pointer after pass1
Definition: nvmedia_drm.h:123
NvMediaEncryptParams::non_slice_data
uint32_t non_slice_data
bytes of non slice data in input buffer
Definition: nvmedia_drm.h:109
NvMediaEncryptParams
Holds encrypted metadata information that the parser passes to the video decoder component.
Definition: nvmedia_drm.h:82
NvMediaVideoDecrypter::hwClockValue
uint32_t hwClockValue
pass hw decode clock value for otf case
Definition: nvmedia_drm.h:173
NvMDRM_Piff
@ NvMDRM_Piff
drm format: Piff
Definition: nvmedia_drm.h:58
_NvMediaAESParams::pBOCD
uint32_t * pBOCD
pointer to bytes of clear data for subsamples
Definition: nvmedia_drm.h:153
nvmedia_core.h
NVIDIA Media Interface: Core
NvMDRM_None
@ NvMDRM_None
drm format: None: This should be the last element
Definition: nvmedia_drm.h:76
_NvMediaAESParams::uMetadataCount
uint32_t uMetadataCount
total number of subsamples for given buffer
Definition: nvmedia_drm.h:155
NvMDRM_ClearAsEncrypted
@ NvMDRM_ClearAsEncrypted
drm format: To tell clear data processing in secure buffer
Definition: nvmedia_drm.h:74
NvMediaDecoderInstanceId
NvMediaDecoderInstanceId
Specifies the decoder instance ID.
Definition: nvmedia_common_decode.h:56
NvMediaEncryptParams::uEncryptBlkCnt
uint32_t uEncryptBlkCnt
encrypt blk count when pattern mode encryption is used
Definition: nvmedia_drm.h:95
NvMediaAESMetaData::uClearHeaderSize
uint32_t uClearHeaderSize
clear hdr side after pass1
Definition: nvmedia_drm.h:119
NvMediaBitstreamBuffer
Holds an application data buffer containing compressed video data.
Definition: nvmedia_common_encode_decode.h:87
NvMediaVideoCodec
NvMediaVideoCodec
Video codec type.
Definition: nvmedia_common_encode_decode.h:52
NvMDRM_MarlinCbc
@ NvMDRM_MarlinCbc
drm format: Marlin CBC
Definition: nvmedia_drm.h:66
NvMDRM_Ultraviolet
@ NvMDRM_Ultraviolet
drm format: Ultravoilet
Definition: nvmedia_drm.h:56
NvMediaAESParams
struct _NvMediaAESParams NvMediaAESParams
Holds encrypted metadata information that the client sends to the parser.
NvMediaAESIv
Holds encryption intialization vector information.
Definition: nvmedia_drm.h:127
nvmedia_common_decode.h
NVIDIA Media Interface: Common Types for Image Decode
_NvMediaAESParams::pBOED
uint32_t * pBOED
pointer to bytes of encrypted data for subsamples
Definition: nvmedia_drm.h:151
_NvMediaAESParams::uDrmMode
uint32_t uDrmMode
drm mode of encrypted content
Definition: nvmedia_drm.h:141
NvMediaEncryptParams::KeySlotNumber
uint32_t KeySlotNumber
keyslot number used where content key is written
Definition: nvmedia_drm.h:101
NvMDRM_PiffCtr
@ NvMDRM_PiffCtr
drm format: Piff CTC
Definition: nvmedia_drm.h:64
_NvMediaAESParams::IvSet
NvMediaAESIv IvSet[NVMEDIA_MAX_NALS]
initialization vector array
Definition: nvmedia_drm.h:159
NvMediaEncryptParams::uSkipBlkCnt
uint32_t uSkipBlkCnt
skip blk count when pattern mode encryption is used
Definition: nvmedia_drm.h:97
_NvMediaAESParams::uSkipBlkCnt
uint32_t uSkipBlkCnt
skip blk count when pattern mode encryption is used
Definition: nvmedia_drm.h:147
NvMediaEncryptParams::uBytesOfEncryptedData
uint32_t uBytesOfEncryptedData
total bytes of encrypted data in input buffer
Definition: nvmedia_drm.h:93
NvMediaVideoGetClearHeader
NvMediaStatus NvMediaVideoGetClearHeader(NvMediaVideoDecrypter *pDecrypter, void *pictureData)
Gets clear header data after pass1.
NvMediaEncryptParams::enableEncryption
uint32_t enableEncryption
Flag that specifies whether the buffer is encrypted.
Definition: nvmedia_drm.h:85
NvMediaVideoDecrypter
Holds the video decrypter object.
Definition: nvmedia_drm.h:169