libxcoder  3.5.1
ni_rsrc_api_logan.cpp File Reference
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>
#include "ni_rsrc_api_logan.h"
#include "ni_rsrc_priv_logan.h"
#include "ni_util_logan.h"

Go to the source code of this file.

Macros

#define SLEEPLOOP   3
 

Functions

int ni_logan_rsrc_get_local_device_list (char ni_logan_devices[][NI_LOGAN_MAX_DEVICE_NAME_LEN], int max_handles)
 Scans system for all NVMe devices and returns the system device names to the user which were identified as NETINT transcoder deivices. Names are suitable for resource management api usage afterwards. More...
 
int ni_logan_find_device_index_by_name (void *device_coders, ni_logan_device_type_t device_type, const char *dev_name)
 the card with the card name like /dev/nvme0n1 get the device index. More...
 
ni_logan_device_pool_tni_logan_rsrc_get_device_pool (void)
 Create and return the allocated ni_logan_device_pool_t struct. More...
 
int ni_logan_rsrc_init (int should_match_rev, int timeout_seconds)
 Initialize and create all resources required to work with NETINT NVMe transcoder devices. This is a high level API function which is used mostly with user application like FFMpeg that relies on those resources. In case of custom application integration, revised functionality might be necessary utilizing corresponding API functions. More...
 
ni_logan_retcode_t ni_logan_rsrc_refresh (int should_match_rev)
 Scan and refresh all resources on the host, taking into account hot-plugged and pulled out cards. More...
 
ni_logan_device_context_tni_logan_rsrc_get_device_context (ni_logan_device_type_t device_type, int guid)
 Allocates and returns a pointer to ni_logan_device_context_t struct based on provided device_type and guid. To be used for load update and codec query. More...
 
void ni_logan_rsrc_free_device_context (ni_logan_device_context_t *p_device_context)
 Free previously allocated device context. More...
 
ni_logan_retcode_t ni_logan_rsrc_list_devices (ni_logan_device_type_t device_type, ni_logan_device_info_t *p_device_info, int *p_device_count)
 List device(s) based on device type with full information including s/w instances on the system. More...
 
ni_logan_retcode_t ni_logan_rsrc_list_all_devices (ni_logan_device_t *p_device)
 List all devices with full information including s/w instances on the system. More...
 
void ni_logan_rsrc_print_device_info (const ni_logan_device_info_t *p_device_info)
 Print the content of the ni_logan_device_info_t struct. More...
 
LIB_API void ni_logan_rsrc_print_all_devices_capability (void)
 Print detailed capability information of all devices on the system. More...
 
ni_logan_device_info_tni_logan_rsrc_get_device_info (ni_logan_device_type_t device_type, int guid)
 Query a specific device with detailed information on the system. More...
 
int ni_logan_rsrc_get_available_device (int width, int height, int frame_rate, ni_codec_t codec, ni_logan_device_type_t device_type, ni_logan_device_info_t *p_device_info)
 Get the least used device that can handle decoding or encoding a video stream of certain resolution/frame-rate/codec. More...
 
int ni_logan_rsrc_update_device_load (ni_logan_device_context_t *p_device_context, int load, int sw_instance_cnt, const ni_logan_sw_instance_info_t sw_instance_info[])
 Update the load value and s/w instances info of a specific decoder or encoder. This is used by resource management daemon to update periodically. More...
 
ni_logan_device_context_tni_logan_rsrc_allocate_auto (ni_logan_device_type_t device_type, ni_alloc_rule_t rule, ni_codec_t codec, int width, int height, int frame_rate, unsigned long *p_load)
 Allocate resources for decoding/encoding, based on the provided rule. More...
 
ni_logan_device_context_tni_logan_rsrc_allocate_direct (ni_logan_device_type_t device_type, int guid, ni_codec_t codec, int width, int height, int frame_rate, unsigned long *p_load)
 Allocate resources for decoding/encoding, by designating explicitly the device to use. More...
 
ni_logan_device_context_tni_logan_rsrc_allocate_simple_direct (ni_logan_device_type_t device_type, int guid)
 Allocate resources for decoding/encoding, by designating explicitly the device to use. do not track the load on the host side. More...
 
void ni_logan_rsrc_release_resource (ni_logan_device_context_t *p_device_context, ni_codec_t codec, unsigned long load)
 Release resources allocated for decoding/encoding. function This must be called at the end of transcoding with previously assigned load value by allocate* functions. More...
 
int ni_logan_rsrc_check_sw_instance (ni_logan_device_context_t *p_device_context, ni_logan_device_type_t device_type)
 Check software instance. More...
 
int ni_logan_rsrc_codec_is_available (int guid, ni_logan_device_type_t device_type)
 check the NetInt h/w device in resource pool on the host. More...
 
int ni_logan_rsrc_check_hw_available (int guid, ni_logan_device_type_t device_type)
 check the NetInt h/w device in resource pool on the host. More...
 
int ni_logan_check_hw_info (hw_device_info_t *p_hw_device_info, int task_mode, int load_threshold, int task_num_threshold, ni_logan_device_type_t device_type, int resolution)
 check hw info, return the appropriate card number to use depends on the load&task_num&used resource More...
 
int ni_logan_rsrc_remove_device (const char *dev)
 Remove an NetInt h/w device from resource pool on the host. More...
 
int ni_logan_rsrc_add_device (const char *dev, int should_match_rev)
 Add an NetInt h/w device into resource pool on the host. More...
 
void ni_logan_rsrc_free_device_pool (ni_logan_device_pool_t *p_device_pool)
 Free all resources taken by the device pool. More...
 
int ni_logan_rsrc_lock_and_open (int device_type, ni_lock_handle_t *lock)
 lock a file lock and open a session on a device More...
 
int ni_logan_rsrc_unlock (int device_type, ni_lock_handle_t lock)
 unlock a file lock More...
 

Variables

ni_logan_rsrc_device_video_ref_cap_t g_device_reference_table [2][2]
 

Macro Definition Documentation

◆ SLEEPLOOP

#define SLEEPLOOP   3

Function Documentation

◆ ni_logan_check_hw_info()

int ni_logan_check_hw_info ( hw_device_info_t p_hw_device_info,
int  task_mode,
int  load_threshold,
int  task_num_threshold,
ni_logan_device_type_t  device_type,
int  resolution 
)

check hw info, return the appropriate card number to use depends on the load&task_num&used resource


Parameters
[out]p_hw_device_info: record the device info, including available card num and which card to select, and each card's informaton, such as, the load and task num
[in]task_modeaffect the scheduling strategy, 1 - both the load_num and task_num should consider, usually applied to live scenes 0 - only consider the task_num, donnot care the load_num
[in]load_threshold: load threshold [0 - 100]
[in]task_num_threshold: task threshold [0 - max_task_num(32)]
[in]device_type1:decode 2:encode
[in]resolution:itis the product of width and height, i.e. widthxheight
Returns
0-error 1-success

libxcoder query to get status info including load and instances;

Definition at line 3089 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_find_device_index_by_name()

int ni_logan_find_device_index_by_name ( void *  device_coders,
ni_logan_device_type_t  device_type,
const char *  dev_name 
)

the card with the card name like /dev/nvme0n1 get the device index.


Parameters
[in]p_device_poolPointer to a caller allocated ni_logan_device_pool_t
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]devicenamedevice name
Returns
On success valid device index On failure -1

Definition at line 228 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_add_device()

int ni_logan_rsrc_add_device ( const char *  dev,
int  should_match_rev 
)

Add an NetInt h/w device into resource pool on the host.


Parameters
[in]p_devthe NVMe device name
[in]should_match_rev0: transcoder firmware revision matching the library's version is NOT required for placing the transcoder into resource pool; 1: otherwise
Returns
NI_LOGAN_RETCODE_SUCCESS NI_LOGAN_RETCODE_FAILURE

add the h/w device_info entry

Definition at line 3618 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_allocate_auto()

ni_logan_device_context_t* ni_logan_rsrc_allocate_auto ( ni_logan_device_type_t  device_type,
ni_alloc_rule_t  rule,
ni_codec_t  codec,
int  width,
int  height,
int  frame_rate,
unsigned long *  p_load 
)

Allocate resources for decoding/encoding, based on the provided rule.


Parameters
[in]typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]ruleallocation rule
[in]codecEN_H264 or EN_H265
[in]widthwidth of video resolution
[in]heightheight of video resolution
[in]frame_ratevideo stream frame rate
[out]p_loadthe p_load that will be generated by this encoding task. Returned only for encoder for now.
Returns
pointer to ni_logan_device_context_t if found, NULL otherwise

Note: codec, width, height, fps need to be supplied for NI_LOGAN_DEVICE_TYPE_ENCODER only, they are ignored otherwize. Note: the returned ni_logan_device_context_t content is not supposed to be used by caller directly: should only be passed to API in the subsequent calls; also after its use, the context should be released by calling ni_logan_rsrc_free_device_context.

retrieve the record and based on the allocation rule specified, find the least loaded or least number of s/w instances among the coders

get the individual device_info info and check the load/num-of-instances

Definition at line 2311 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_allocate_direct()

ni_logan_device_context_t* ni_logan_rsrc_allocate_direct ( ni_logan_device_type_t  device_type,
int  guid,
ni_codec_t  codec,
int  width,
int  height,
int  frame_rate,
unsigned long *  p_load 
)

Allocate resources for decoding/encoding, by designating explicitly the device to use.


Parameters
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]guidunique device (decoder or encoder) module id
[in]codecEN_H264 or EN_H265
[in]widthwidth of video resolution
[in]heightheight of video resolution
[in]frame_ratevideo stream frame rate
[out]p_loadthe load that will be generated by this encoding task. Returned only for encoder for now.
Returns
pointer to ni_logan_device_context_t if found, NULL otherwise

Note: codec, width, height, fps need to be supplied by encoder; they are ignored for decoder.

Note: the returned ni_logan_device_context_t content is not supposed to be used by caller directly: should only be passed to API in the subsequent calls; also after its use, the context should be released by calling ni_logan_rsrc_free_device_context.

call libxcoder to allocate a s/w instance on the specified h/w device_info; this might not be necessary as the actual allocation of s/w instance happens when decoding/encoding starts in the codec

update modelled load for encoder

Definition at line 2557 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_allocate_simple_direct()

ni_logan_device_context_t* ni_logan_rsrc_allocate_simple_direct ( ni_logan_device_type_t  device_type,
int  guid 
)

Allocate resources for decoding/encoding, by designating explicitly the device to use. do not track the load on the host side.


Parameters
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]guidunique device (decoder or encoder) module id
Returns
pointer to ni_logan_device_context_t if found, NULL otherwise

Note: only need to specify the device type and guid and codec type

Note: the returned ni_logan_device_context_t content is not supposed to be used by caller directly: should only be passed to API in the subsequent calls; also after its use, the context should be released by calling ni_logan_rsrc_free_device_context.

Definition at line 2627 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_check_hw_available()

int ni_logan_rsrc_check_hw_available ( int  guid,
ni_logan_device_type_t  device_type 
)

check the NetInt h/w device in resource pool on the host.


Parameters
[in]guidthe global unique device index in resource pool device_type NI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
Returns
NI_LOGAN_RETCODE_SUCCESS

Definition at line 2895 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_check_sw_instance()

int ni_logan_rsrc_check_sw_instance ( ni_logan_device_context_t p_device_context,
ni_logan_device_type_t  device_type 
)

Check software instance.


Parameters
[in]p_device_contextthe device context
Returns
the count of active instances if error, return NI_LOGAN_RETCODE_FAILURE

Definition at line 2700 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_codec_is_available()

int ni_logan_rsrc_codec_is_available ( int  guid,
ni_logan_device_type_t  device_type 
)

check the NetInt h/w device in resource pool on the host.


Parameters
[in]guidthe global unique device index in resource pool device_type NI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
Returns
NI_LOGAN_RETCODE_SUCCESS if codec is available, otherwise ni_logan_retcode_t errors (negative values)

Definition at line 2768 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_free_device_context()

void ni_logan_rsrc_free_device_context ( ni_logan_device_context_t p_device_context)

Free previously allocated device context.


Parameters
p_device_contextPointer to previously allocated device context
Returns
None

Definition at line 1664 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_free_device_pool()

void ni_logan_rsrc_free_device_pool ( ni_logan_device_pool_t p_device_pool)

Free all resources taken by the device pool.


Parameters
[in]p_device_poolPoiner to a device pool struct
Returns
None

Definition at line 3863 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_get_available_device()

int ni_logan_rsrc_get_available_device ( int  width,
int  height,
int  frame_rate,
ni_codec_t  codec,
ni_logan_device_type_t  device_type,
ni_logan_device_info_t p_device_info 
)

Get the least used device that can handle decoding or encoding a video stream of certain resolution/frame-rate/codec.


Parameters
[in]widthwidth of video resolution
[in]heightheight of video resolution
[in]frame_ratevideo stream frame rate
[in]codecEN_H264 or EN_H265
[in]typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[out]infodetailed device information. If is non-NULL, the device info is stored in the memory pointed to by it.
Returns
device GUID (>= 0) if found , -1 otherwise

Definition at line 2021 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_get_device_context()

ni_logan_device_context_t* ni_logan_rsrc_get_device_context ( ni_logan_device_type_t  device_type,
int  guid 
)

Allocates and returns a pointer to ni_logan_device_context_t struct based on provided device_type and guid. To be used for load update and codec query.


Parameters
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]guidGUID of the encoder or decoder device
Returns
pointer to ni_logan_device_context_t if found, NULL otherwise

Note: The returned ni_logan_device_context_t content is not supposed to be used by caller directly: should only be passed to API in the subsequent calls; also after its use, the context should be released by calling ni_logan_rsrc_free_device_context.

get names of shared mem and lock by GUID

get names of shared mem and lock by GUID

Definition at line 1449 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_get_device_info()

ni_logan_device_info_t* ni_logan_rsrc_get_device_info ( ni_logan_device_type_t  device_type,
int  guid 
)

Query a specific device with detailed information on the system.


Parameters
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[in]guidunique device(decoder or encoder) id
Returns
pointer to ni_logan_device_info_t if found NULL otherwise

Note: Caller is responsible for releasing memory that was allocated for the returned pointer

Definition at line 1960 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_get_device_pool()

ni_logan_device_pool_t* ni_logan_rsrc_get_device_pool ( void  )

Create and return the allocated ni_logan_device_pool_t struct.


Parameters
None
Returns
Pointer to ni_logan_device_pool_t struct on success, or NULL on failure

Definition at line 307 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_get_local_device_list()

int ni_logan_rsrc_get_local_device_list ( char  ni_logan_devices[][NI_LOGAN_MAX_DEVICE_NAME_LEN],
int  max_handles 
)

Scans system for all NVMe devices and returns the system device names to the user which were identified as NETINT transcoder deivices. Names are suitable for resource management api usage afterwards.

Scans system for all NVMe devices and returns the system device names to the user which were identified as NETINT transcoder deivices. Names are suitable for OpenFile api usage afterwards.


Parameters
[out]ni_logan_devicesList of device names identified as NETINT NVMe transcoders
[in]max_handlesMax number of device names to return
Returns
Number if devices found if successful operation completed 0 if no NETINT NVMe transcoder devices were found NI_LOGAN_RETCODE_ERROR_MEM_ALOC if memory allocation failed

skip current and parent directory

Definition at line 115 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_init()

int ni_logan_rsrc_init ( int  should_match_rev,
int  timeout_seconds 
)

Initialize and create all resources required to work with NETINT NVMe transcoder devices. This is a high level API function which is used mostly with user application like FFMpeg that relies on those resources. In case of custom application integration, revised functionality might be necessary utilizing corresponding API functions.

Initialize and create all resources required to work with NETINT NVMe transcoder devices. This is a high level API function which is used mostly with user application like FFMpeg that relies on those resources. In case of custom application integration, revised functionality might be necessary utilizing coresponding API functions.


Parameters
[in]should_match_rev0: transcoder firmware revision matching the
  • library's version is NOT required for placing the transcoder into resource pool 1: init all fully compatible and partially compatible cards, skipping non-compatible cards 2: init cards only if all detected cards are fully compatible timeout_seconds 0: No timeout amount, loop until init success or fail; else: timeout will fail init once reached
Returns
NI_LOGAN_RETCODE_SUCCESS on success NI_LOGAN_RETCODE_INIT_ALREADY on already init NI_LOGAN_RETCODE_FAILURE on failure

list all XCoder devices under /dev/..

Supported FW API info

store the guid and number of coders in a shared memory too, for later retrieval; the guid is init'd based on value here, and will be changed based on resource distribution logic in resource allocation functions; re-order is not allowed

create the lock

create the lock for encoder

create the lock for decoder

retrieve decoder and encoder info and create shared memory and named lock accordingly, using NVMe "Identify Controller"

check whether Xcoder is supported and retrieve the xcoder info

retrieve decoder and encoder info and create shared memory and named lock accordingly, using NVMe "Identify Controller"

check whether Xcoder is supported and retrieve the xcoder info

add the h/w device_info entry

for each device_info module

if device supports xcoder

for each netint nvme device

Definition at line 542 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_list_all_devices()

ni_logan_retcode_t ni_logan_rsrc_list_all_devices ( ni_logan_device_t p_device)

List all devices with full information including s/w instances on the system.


Parameters
[out]p_deviceThe device information returned.
Returns
NI_LOGAN_RETCODE_SUCCESS NI_LOGAN_RETCODE_INVALID_PARAM NI_LOGAN_RETCODE_FAILURE

Note: Caller is responsible for allocating memory for "p_device".

Definition at line 1817 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_list_devices()

ni_logan_retcode_t ni_logan_rsrc_list_devices ( ni_logan_device_type_t  device_type,
ni_logan_device_info_t p_device_info,
int *  p_device_count 
)

List device(s) based on device type with full information including s/w instances on the system.


Parameters
[in]device_typeNI_LOGAN_DEVICE_TYPE_DECODER or NI_LOGAN_DEVICE_TYPE_ENCODER
[out]p_deviceThe device information returned.
[out]p_device_countThe number of ni_logan_device_info_t structs returned.
Returns
NI_LOGAN_RETCODE_SUCCESS NI_LOGAN_RETCODE_FAILURE

Note: Caller is responsible for allocating memory for "p_device".

Definition at line 1694 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_lock_and_open()

int ni_logan_rsrc_lock_and_open ( int  device_type,
ni_lock_handle_t *  lock 
)

lock a file lock and open a session on a device


Parameters
device_type
lock
Returns
None

Definition at line 3894 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_print_all_devices_capability()

LIB_API void ni_logan_rsrc_print_all_devices_capability ( void  )

Print detailed capability information of all devices on the system.


Parameters
none
Returns
none

print out coders in the order based on their guid

Definition at line 1916 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_print_device_info()

void ni_logan_rsrc_print_device_info ( const ni_logan_device_info_t p_device_info)

Print the content of the ni_logan_device_info_t struct.


Parameters
p_device_info- pointer to the ni_logan_device_info_t struct to print
Returns
None
  • TODO: Change this value to HW capability reported by FW once HW capabilities repoting format has been revamped
  • TODO: Change this value to HW capability reported by FW once HW capabilities repoting format has been revamped

Definition at line 1844 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_refresh()

ni_logan_retcode_t ni_logan_rsrc_refresh ( int  should_match_rev)

Scan and refresh all resources on the host, taking into account hot-plugged and pulled out cards.


Parameters
[in]should_match_rev0: transcoder firmware revision matching the library's version is NOT required for placing the transcoder into resource pool; 1: otherwise
Returns
NI_LOGAN_RETCODE_SUCCESS on success NI_LOGAN_RETCODE_FAILURE on failure

Definition at line 1326 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_release_resource()

void ni_logan_rsrc_release_resource ( ni_logan_device_context_t p_device_context,
ni_codec_t  codec,
unsigned long  load 
)

Release resources allocated for decoding/encoding. function This must be called at the end of transcoding with previously assigned load value by allocate* functions.


Parameters
[in/]p_ctxt the device context
[in]codecEN_H264 or EN_H265
[in]loadthe load value returned by allocate* functions
Returns
None THE API needs to be removed from this fild and related test needs to cleanup

Definition at line 2650 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_remove_device()

int ni_logan_rsrc_remove_device ( const char *  dev)

Remove an NetInt h/w device from resource pool on the host.


Parameters
[in]p_devthe NVMe device name
Returns
NI_LOGAN_RETCODE_SUCCESS NI_LOGAN_RETCODE_FAILURE

Definition at line 3445 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_unlock()

int ni_logan_rsrc_unlock ( int  device_type,
ni_lock_handle_t  lock 
)

unlock a file lock


Parameters
device_type
lock
Returns
None

Definition at line 3984 of file ni_rsrc_api_logan.cpp.

◆ ni_logan_rsrc_update_device_load()

int ni_logan_rsrc_update_device_load ( ni_logan_device_context_t p_device_context,
int  load,
int  sw_instance_cnt,
const ni_logan_sw_instance_info_t  sw_instance_info[] 
)

Update the load value and s/w instances info of a specific decoder or encoder. This is used by resource management daemon to update periodically.


Parameters
[in]p_ctxtThe device context returned by ni_logan_rsrc_get_device_context
[in]p_loadThe latest load value to update
[in]sw_instance_cntNumber of s/w instances
[in]sw_instance_infoInfo of s/w instances
Returns
NI_LOGAN_RETCODE_SUCCESS NI_LOGAN_RETCODE_FAILURE

Definition at line 2250 of file ni_rsrc_api_logan.cpp.

Variable Documentation

◆ g_device_reference_table

ni_logan_rsrc_device_video_ref_cap_t g_device_reference_table[2][2]
Initial value:
=
{
{
{1920, 1080, 240},
{1920, 1080, 240},
},
{
{1920, 1080, 240},
{1920, 1080, 240},
}
}

Definition at line 57 of file ni_rsrc_api_logan.cpp.