-
Notifications
You must be signed in to change notification settings - Fork 0
/
apiVENC_types.h
1883 lines (1633 loc) · 66.9 KB
/
apiVENC_types.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
*
* Copyright (C) 2015 Advantech Co., Ltd. - http://www.advantech.com.tw/
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Advantech Co., Ltd. nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __API_VENC_TYPES_H__
#define __API_VENC_TYPES_H__
#ifdef __cplusplus
extern "C" {
#endif
/*!
\def API_MAX_NAL_NUM
Defines maxumum number of NAL in an encoded frame.
*/
#define API_MAX_NAL_NUM 255
/*!
\def API_MAX_SEI_NUM
Defines maximum number of SEI encoder can take.
*/
#define API_MAX_SEI_NUM 5
/*!
\def API_MAX_BITRATE
Defines maximum bitrate encoder can accept. Unit: kbps
*/
#define API_MAX_BITRATE 500000
/*!
\def API_VERSION_SIZE_DRIVER
Defines bufffer size for sotring driver version
*/
#define API_VERSION_SIZE_DRIVER 20
/*!
\def API_VERSION_SIZE_HEVC_ENCODER_FIRM
Defines bufffer size for sotring encoder firmware version
*/
#define API_VERSION_SIZE_HEVC_ENCODER_FIRM (15 * sizeof(uint32_t))
/*!
\def API_VERSION_SIZE_SYSTEM_FIRM
Defines bufffer size for sotring system firmware version
*/
#define API_VERSION_SIZE_SYSTEM_FIRM ( 5 * sizeof(uint32_t))
/*!
\def API_CHIP_TYPE
Defines hardware chip type for project
*/
#define API_CHIP_M31 0
#define API_CHIP_M30 1
#define API_CHIP_TYPE API_CHIP_M31
//#define API_CHIP_TYPE API_CHIP_M30
/*!
* \enum API_VENC_RET_E
* \b API_VENC_RET_E enumerates the return values of VEGA330X API.
*
Enum | Description
--------------------------- | --------------------
API_VENC_RET_SUCCESS | Function executes correctly
API_VENC_RET_FAIL | Can not executes function
API_VENC_RET_EMPTY | No output can be read
API_VENC_RET_NO_LAST_FRAME | Last frame is not pushed
API_VENC_RET_NO_LAST_ES | Last ES is not poped
API_VENC_RET_OUT_OF_RANGE | Input value is out of spec
API_VENC_RET_NO_MEM | Can not allocate needed memory
*
*/
typedef enum
{
API_VENC_RET_SUCCESS, /**< OK */
API_VENC_RET_FAIL, /**< NG */
API_VENC_RET_EMPTY,
API_VENC_RET_NO_LAST_FRAME,
API_VENC_RET_NO_LAST_ES,
API_VENC_RET_OUT_OF_RANGE,
API_VENC_RET_NO_MEM,
} API_VENC_RET_E;
/*!
* \enum API_VENC_STATUS_E
* \b API_VENC_STATUS_E enumerates the VEGA330X API status.
*/
typedef enum
{
API_VENC_STATUS_OFF,
API_VENC_STATUS_STANDBY,
API_VENC_STATUS_ENCODING,
API_VENC_STATUS_ERROR,
API_VENC_STATUS_UNAVAILABLE,
} API_VENC_STATUS_E;
/*!
* \enum API_VENC_BOARD_E
* \b API_VENC_BOARD_E enumerates the board ID.
*/
typedef enum
{
API_VENC_BOARD_1,
API_VENC_BOARD_2,
API_VENC_BOARD_3,
API_VENC_BOARD_4,
API_VENC_BOARD_5,
API_VENC_BOARD_6,
API_VENC_BOARD_7,
API_VENC_BOARD_8,
API_VENC_BOARD_MAX,
} API_VENC_BOARD_E;
/*!
* \enum API_VENC_CHN_E
* \b API_VENC_CHN_E enumerates channel ID.
*/
typedef enum
{
API_VENC_CHN_1,
API_VENC_CHN_2,
API_VENC_CHN_3,
API_VENC_CHN_4,
API_VENC_CHN_5,
API_VENC_CHN_6,
API_VENC_CHN_7,
API_VENC_CHN_8,
API_VENC_CHN_9,
API_VENC_CHN_10,
API_VENC_CHN_11,
API_VENC_CHN_12,
API_VENC_CHN_13,
API_VENC_CHN_14,
API_VENC_CHN_15,
API_VENC_CHN_16,
API_VENC_CHN_MAX,
} API_VENC_CHN_E;
/*!
* \enum API_VENC_INPUT_MODE_E
* \b API_VENC_INPUT_MODE_E enumerates the input source for M31 device.
*
Enum | Description
------------------------------------------ | --------------------
API_VENC_INPUT_MODE_DATA | Input source is from host
API_VENC_INPUT_MODE_VIF_SQUARE | Input source is from video interface and the input format of 4K is Square division
API_VENC_INPUT_MODE_VIF_2_SAMPLE_INTERLEAVE | Input source is from video interface and the input format of 4K is 2-Sample interleave division format
*
*/
typedef enum
{
API_VENC_INPUT_MODE_DATA,
API_VENC_INPUT_MODE_VIF_SQUARE,
API_VENC_INPUT_MODE_VIF_2_SAMPLE_INTERLEAVE,
} API_VENC_INPUT_MODE_E;
/*!
* \enum API_VENC_VIF_MODE_INPUT_PORT_E
* \b API_VENC_VIF_MODE_INPUT_PORT_E enumerates the SDI input port for M31 device.
*
Enum | Description
----------------------------------- | --------------------
API_VENC_VIF_MODE_INPUT_PORT_DEFAULT | SDI input source is from default port (VI0: PortA/VI1: PortB/VI2: PortC/VI3: PortD)
API_VENC_VIF_MODE_INPUT_PORT_A | SDI input source is from Port A
API_VENC_VIF_MODE_INPUT_PORT_B | SDI input source is from Port B
API_VENC_VIF_MODE_INPUT_PORT_C | SDI input source is from Port C
API_VENC_VIF_MODE_INPUT_PORT_D | SDI input source is from Port D
*
*/
typedef enum
{
API_VENC_VIF_MODE_INPUT_PORT_DEFAULT,
API_VENC_VIF_MODE_INPUT_PORT_A = 1,
API_VENC_VIF_MODE_INPUT_PORT_B = 2,
API_VENC_VIF_MODE_INPUT_PORT_C = 4,
API_VENC_VIF_MODE_INPUT_PORT_D = 8,
} API_VENC_VIF_MODE_INPUT_PORT_E;
typedef enum
{
API_VENC_VIN_MODE_AUTO,
API_VENC_VIN_MODE_MANUAL,
} API_VENC_VIN_MODE_E;
/*!
* \enum API_VENC_VIF_ROBUST_MODE_E
* \b API_VENC_VIF_ROBUST_MODE_E enumerates the robustness method for SDI input port.
*
Enum | Description
------------------------------------- | --------------------
API_VENC_VIF_ROBUST_MODE_STOP_ENCODING | The encoder stops encoding while the video signal is lost
API_VENC_VIF_ROBUST_MODE_BLUE_SCREEN | The encoder encodes "blue screen" while the video signal is lost
*
*/
typedef enum
{
API_VENC_VIF_ROBUST_MODE_STOP_ENCODING,
API_VENC_VIF_ROBUST_MODE_BLUE_SCREEN,
} API_VENC_VIF_ROBUST_MODE_E;
/*!
* \enum API_VENC_MEMORY_ALLOC_MODE_E
* \b API_VENC_MEMORY_ALLOC_MODE_E enumerates the memory allocation mode for M31 device.
*
Enum | Description
------------------------------------------ | --------------------
API_VENC_MEMORY_ALLOC_MODE_1CH_4K2K | Specify the memory allocation mode is 4K2K. The maximum resolution is 4K2K and the maximum number of channels is 1.
API_VENC_MEMORY_ALLOC_MODE_4CH_1080P | Specify the memory allocation mode is 1080P. The maximum resolution is 1080P and the maximum number of channels is 4.
API_VENC_MEMORY_ALLOC_MODE_8CH_720P | Specify the memory allocation mode is 720P. The maximum resolution is 720P and the maximum number of channels is 8.
API_VENC_MEMORY_ALLOC_MODE_8CH_MIXING | Specify the memory allocation mode is MIXING. The maximum resolution is 1080P and the maximum number of channels is 8.
API_VENC_MEMORY_ALLOC_MODE_16CH_SD | Specify the memory allocation mode is SD. The maximum resolution is SD and the maximum number of channels is 16.
API_VENC_MEMORY_ALLOC_MODE_16CH_SEQUENCE | Specify the memory allocation mode is SEQUENCE. The maximum resolutions are ordered in a sequence from large to small(CH0~CH3:1080P,CH4~CH7:720P,CH8~CH15:SD). The maximum number of channels is 16.
API_VENC_MEMORY_ALLOC_MODE_16CH_720P_MIXING | Specify the memory allocation mode is 720P_MIXING. The maximum resolution is 720P and the maximum number of channels is 16.
API_VENC_MEMORY_ALLOC_MODE_INVALID | There is no channel in encode status. The memory allocation mode is not set.
*
*/
typedef enum
{
API_VENC_MEMORY_ALLOC_MODE_1CH_4K2K,
API_VENC_MEMORY_ALLOC_MODE_4CH_1080P,
API_VENC_MEMORY_ALLOC_MODE_8CH_720P,
API_VENC_MEMORY_ALLOC_MODE_8CH_MIXING,
API_VENC_MEMORY_ALLOC_MODE_16CH_SD,
API_VENC_MEMORY_ALLOC_MODE_16CH_SEQUENCE,
API_VENC_MEMORY_ALLOC_MODE_16CH_720P_MIXING,
API_VENC_MEMORY_ALLOC_MODE_INVALID,
} API_VENC_MEMORY_ALLOC_MODE_E;
/*!
* \enum API_VENC_HEVC_PROFILE_E
* \b API_VENC_HEVC_PROFILE_E enumerates HEVC profiles accepted by M31.
*
* A profile is a defined set of coding tools that can be used to create a bitstream that conforms to that profile.
*
* The detailed description of HEVC profile is in ITU-T H.265, Annex A.3.
*
Enum | Description
------------------------------------- | --------------------
API_VENC_HEVC_MAIN_PROFILE | Main profile allows for a bit depth of 8-bits per sample with 4:2:0 chroma sampling
API_VENC_HEVC_MAIN10_PROFILE | Main 10 profile allows for a bit depth of 8-bits to 10-bits per sample with 4:2:0 chroma sampling
API_VENC_HEVC_MAINSTILLPICTURE_PROFILE | Main Still Picture profile allows for a single still picture to be encoded with the same constraints as the Main profile
API_VENC_HEVC_MAIN422_10_PROFILE | Main 4:2:2 10 profile allows for a bit depth of 8-bits to 10-bits per sample with support for 4:0:0, 4:2:0, and 4:2:2 chroma sampling
*
*/
typedef enum
{
API_VENC_HEVC_MAIN_PROFILE = 1,
API_VENC_HEVC_MAIN10_PROFILE = 2,
API_VENC_HEVC_MAINSTILLPICTURE_PROFILE = 3,
API_VENC_HEVC_MAIN422_10_PROFILE = 4,
} API_VENC_HEVC_PROFILE_E;
/*!
* \enum API_VENC_HEVC_LEVEL_E
* \b API_VENC_HEVC_LEVEL_E enumerates HEVC levels.
*
* A level is a set of constraints for a bitstream.
*
* The detailed definition of HEVC level is in ITU-T H.265, Annex A.4.
*
Enum | Description
------------------------| --------------------
API_VENC_HEVC_LEVEL_AUTO | Decide by encoder automatically
API_VENC_HEVC_LEVEL_10 | Level 1.0
API_VENC_HEVC_LEVEL_20 | Level 2.0
API_VENC_HEVC_LEVEL_21 | Level 2.1
API_VENC_HEVC_LEVEL_30 | Level 3.0
API_VENC_HEVC_LEVEL_31 | Level 3.1
API_VENC_HEVC_LEVEL_40 | Level 4.0
API_VENC_HEVC_LEVEL_41 | Level 4.1
API_VENC_HEVC_LEVEL_50 | Level 5.0
API_VENC_HEVC_LEVEL_51 | Level 5.1
API_VENC_HEVC_LEVEL_52 | Level 5.2
API_VENC_HEVC_LEVEL_60 | Level 6.0
API_VENC_HEVC_LEVEL_61 | Level 6.1
API_VENC_HEVC_LEVEL_62 | Level 6.2
*
*/
typedef enum
{
API_VENC_HEVC_LEVEL_AUTO,
API_VENC_HEVC_LEVEL_10 = 10,
API_VENC_HEVC_LEVEL_20 = 20,
API_VENC_HEVC_LEVEL_21 = 21,
API_VENC_HEVC_LEVEL_30 = 30,
API_VENC_HEVC_LEVEL_31 = 31,
API_VENC_HEVC_LEVEL_40 = 40,
API_VENC_HEVC_LEVEL_41 = 41,
API_VENC_HEVC_LEVEL_50 = 50,
API_VENC_HEVC_LEVEL_51 = 51,
API_VENC_HEVC_LEVEL_52 = 52,
API_VENC_HEVC_LEVEL_60 = 60,
API_VENC_HEVC_LEVEL_61 = 61,
API_VENC_HEVC_LEVEL_62 = 62,
} API_VENC_HEVC_LEVEL_E;
/*!
* \enum API_VENC_HEVC_TIER_E
* \b API_VENC_HEVC_TIER_E enumerates HEVC tiers.
*
* The detailed description of HEVC tier is in ITU-T H.265, Annex A.4.
*
Enum | Description
-----------------------| --------------------
API_VENC_HEVC_MAIN_TIER | Main tier is designed for most applications
API_VENC_HEVC_HIGH_TIER | High tier is designed for very demanding applications
*
*/
typedef enum
{
API_VENC_HEVC_MAIN_TIER,
API_VENC_HEVC_HIGH_TIER,
} API_VENC_HEVC_TIER_E;
/*!
* \enum API_VENC_RESOLUTION_E
* \b API_VENC_RESOLUTION_E enumerates possible input image dimensions.
*
Enum | Width | Height
---------------------------- | ------ | -------
API_VENC_RESOLUTION_352x288 | 352 | 288
API_VENC_RESOLUTION_416x240 | 416 | 240
API_VENC_RESOLUTION_720x480 | 720 | 480
API_VENC_RESOLUTION_720x576 | 720 | 576
API_VENC_RESOLUTION_1280x720 | 1280 | 720
API_VENC_RESOLUTION_1920x1080 | 1920 | 1080
API_VENC_RESOLUTION_2048x1080 | 2048 | 1080
API_VENC_RESOLUTION_3840x2160 | 3840 | 2160
API_VENC_RESOLUTION_4096x2160 | 4096 | 2160
API_VENC_RESOLUTION_INVALID | 0 | 0
*
*/
typedef enum
{
API_VENC_RESOLUTION_352x288,
API_VENC_RESOLUTION_416x240,
API_VENC_RESOLUTION_720x480,
API_VENC_RESOLUTION_720x576,
API_VENC_RESOLUTION_1280x720,
API_VENC_RESOLUTION_1920x1080,
API_VENC_RESOLUTION_2048x1080,
API_VENC_RESOLUTION_3840x2160,
API_VENC_RESOLUTION_4096x2160,
API_VENC_RESOLUTION_INVALID,
} API_VENC_RESOLUTION_E;
/*!
* \enum API_VENC_HEVC_ASPECT_RATIO_IDC_E
* \b API_VENC_HEVC_ASPECT_RATIO_IDC_E enumerates the sample aspect ratio indicator of the luma samples.
*
* The description of aspect ratio is in ITU-T H.265, Table E.1.
*
Enum | Sample Aspect Ratio
--------------------------------- | --------------------
API_VENC_HEVC_ASPECT_RATIO_IDC_0 | Unspecified
API_VENC_HEVC_ASPECT_RATIO_IDC_1 | 1:1
API_VENC_HEVC_ASPECT_RATIO_IDC_2 | 12:11
API_VENC_HEVC_ASPECT_RATIO_IDC_3 | 10:11
API_VENC_HEVC_ASPECT_RATIO_IDC_4 | 16:11
API_VENC_HEVC_ASPECT_RATIO_IDC_5 | 40:33
API_VENC_HEVC_ASPECT_RATIO_IDC_6 | 24:11
API_VENC_HEVC_ASPECT_RATIO_IDC_7 | 20:11
API_VENC_HEVC_ASPECT_RATIO_IDC_8 | 32:11
API_VENC_HEVC_ASPECT_RATIO_IDC_9 | 80:33
API_VENC_HEVC_ASPECT_RATIO_IDC_10 | 18:11
API_VENC_HEVC_ASPECT_RATIO_IDC_11 | 15:11
API_VENC_HEVC_ASPECT_RATIO_IDC_12 | 64:33
API_VENC_HEVC_ASPECT_RATIO_IDC_13 | 160:99
API_VENC_HEVC_ASPECT_RATIO_IDC_14 | 4:3
API_VENC_HEVC_ASPECT_RATIO_IDC_15 | 3:2
API_VENC_HEVC_ASPECT_RATIO_IDC_16 | 2:1
API_VENC_HEVC_ASPECT_RATIO_IDC_EXTENDED_SAR | User defined SAR width and height
*/
typedef enum
{
API_VENC_HEVC_ASPECT_RATIO_IDC_0,
API_VENC_HEVC_ASPECT_RATIO_IDC_1,
API_VENC_HEVC_ASPECT_RATIO_IDC_2,
API_VENC_HEVC_ASPECT_RATIO_IDC_3,
API_VENC_HEVC_ASPECT_RATIO_IDC_4,
API_VENC_HEVC_ASPECT_RATIO_IDC_5,
API_VENC_HEVC_ASPECT_RATIO_IDC_6,
API_VENC_HEVC_ASPECT_RATIO_IDC_7,
API_VENC_HEVC_ASPECT_RATIO_IDC_8,
API_VENC_HEVC_ASPECT_RATIO_IDC_9,
API_VENC_HEVC_ASPECT_RATIO_IDC_10,
API_VENC_HEVC_ASPECT_RATIO_IDC_11,
API_VENC_HEVC_ASPECT_RATIO_IDC_12,
API_VENC_HEVC_ASPECT_RATIO_IDC_13,
API_VENC_HEVC_ASPECT_RATIO_IDC_14,
API_VENC_HEVC_ASPECT_RATIO_IDC_15,
API_VENC_HEVC_ASPECT_RATIO_IDC_16,
API_VENC_HEVC_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
} API_VENC_HEVC_ASPECT_RATIO_IDC_E;
/*!
* \enum API_VENC_IMAGE_FORMAT_E
* \b API_VENC_IMAGE_FORMAT_E enumerates the pixel formats supported for input.
*
Enum | Description
-------------------------------- | ------------------------
API_VENC_IMAGE_FORMAT_NV12 | NV12 4:2:0 8bit
API_VENC_IMAGE_FORMAT_NV16 | NV16 4:2:2 8bit
API_VENC_IMAGE_FORMAT_YUV420 | YUV planar 4:2:0 8bit
API_VENC_IMAGE_FORMAT_YUV420P010 | 4:2:0 10bit packed
API_VENC_IMAGE_FORMAT_YUV422P010 | 4:2:2 10bit packed
API_VENC_IMAGE_FORMAT_YUV420P10LE | 4:2:0 Enveopled 10bit (16bit)
API_VENC_IMAGE_FORMAT_YUV422P10LE | 4:2:2 Enveopled 10bit (16bit)
*
*/
typedef enum
{
API_VENC_IMAGE_FORMAT_NV12,
API_VENC_IMAGE_FORMAT_NV16,
API_VENC_IMAGE_FORMAT_YUV420,
API_VENC_IMAGE_FORMAT_YUV420P010,
API_VENC_IMAGE_FORMAT_YUV422P010,
API_VENC_IMAGE_FORMAT_YUV420P10LE,
API_VENC_IMAGE_FORMAT_YUV422P10LE,
} API_VENC_IMAGE_FORMAT_E;
/*!
* \enum API_VENC_CHROMA_FORMAT_E
* \b API_VENC_CHROMA_FORMAT_E enumerates input chroma pixel formats.
*
Enum | Description
--------------------------------------- | ------------------------
API_VENC_CHROMA_FORMAT_MONO | Only luma are sampled
API_VENC_CHROMA_FORMAT_420 | The two chroma components are sampled at quarter the sample rate of luma: the horizontal and vertical chroma resolution are halved
API_VENC_CHROMA_FORMAT_422 | The two chroma components are sampled at half the sample rate of luma: the horizontal chroma resolution is halved
API_VENC_CHROMA_FORMAT_422_to_420 | To convert the format from 422 to 420
*
*/
typedef enum
{
API_VENC_CHROMA_FORMAT_MONO,
API_VENC_CHROMA_FORMAT_420,
API_VENC_CHROMA_FORMAT_422,
API_VENC_CHROMA_FORMAT_422_to_420,
} API_VENC_CHROMA_FORMAT_E;
/*!
* \enum API_VENC_OVERSCAN_INFO_E
* \b API_VENC_OVERSCAN_INFO_E enumerates VUI overscan information flag.
*
Enum | Description
----------------------------------- | ------------------------
API_VENC_OVERSCAN_INFO_NOT_PRESENT | Unspecified
API_VENC_OVERSCAN_INFO_INAPPROPRIATE | Do not display using overscan
API_VENC_OVERSCAN_INFO_APPROPRIATE | Display using overscan
*
*/
typedef enum
{
API_VENC_OVERSCAN_INFO_NOT_PRESENT,
API_VENC_OVERSCAN_INFO_INAPPROPRIATE,
API_VENC_OVERSCAN_INFO_APPROPRIATE
} API_VENC_OVERSCAN_INFO_E;
/*!
* \enum API_VENC_VIDEO_FORMAT_E
* \b API_VENC_VIDEO_FORMAT_E enumerates the source format of the original analog video prior to digitizing and encoding.
*
Enum | Description
----------------------------------- | ------------------------
API_VENC_VIDEO_FORMAT_COMPONENT | YPbPr analog component video
API_VENC_VIDEO_FORMAT_PAL | Western Europe
API_VENC_VIDEO_FORMAT_NTSC | North America
API_VENC_VIDEO_FORMAT_SECAM | France and East Europe
API_VENC_VIDEO_FORMAT_MAC | MAC
API_VENC_VIDEO_FORMAT_UNSPECIFIED | Unspecified video format
*
*/
typedef enum
{
API_VENC_VIDEO_FORMAT_COMPONENT,
API_VENC_VIDEO_FORMAT_PAL,
API_VENC_VIDEO_FORMAT_NTSC,
API_VENC_VIDEO_FORMAT_SECAM,
API_VENC_VIDEO_FORMAT_MAC,
API_VENC_VIDEO_FORMAT_UNSPECIFIED
} API_VENC_VIDEO_FORMAT_E;
/*!
* \enum API_VENC_COLOR_PRIMARY_E
* \b API_VENC_COLOR_PRIMARY_E enumerates color primaries to use when converting to RGB
*
Enum | Description
------------------------------- | ------------------------
API_VENC_COLOR_PRIMARY_0 | Reserved
API_VENC_COLOR_PRIMARY_BT709 | Rec. ITU-R BT.709-5
API_VENC_COLOR_PRIMARY_2 | Unspecified
API_VENC_COLOR_PRIMARY_3 | Reserved
API_VENC_COLOR_PRIMARY_BT470M | Rec. ITU-R BT.470-6 System M
API_VENC_COLOR_PRIMARY_BT470BG | Rec. ITU-R BT.470-6 System B, G
API_VENC_COLOR_PRIMARY_SMPTE170M | Society of Motion Picture and Television Engineers 170M (2004)
API_VENC_COLOR_PRIMARY_SMPTE240M | Society of Motion Picture and Television Engineers 240M (1999)
API_VENC_COLOR_PRIMARY_FILM | Generic film
API_VENC_COLOR_PRIMARY_BT2020 | Rec. ITU-R BT.2020
API_VENC_COLOR_PRIMARY_RESERVED | Reserved
*
*/
typedef enum
{
API_VENC_COLOR_PRIMARY_0,
API_VENC_COLOR_PRIMARY_BT709,
API_VENC_COLOR_PRIMARY_2,
API_VENC_COLOR_PRIMARY_3,
API_VENC_COLOR_PRIMARY_BT470M,
API_VENC_COLOR_PRIMARY_BT470BG,
API_VENC_COLOR_PRIMARY_SMPTE170M,
API_VENC_COLOR_PRIMARY_SMPTE240M,
API_VENC_COLOR_PRIMARY_FILM,
API_VENC_COLOR_PRIMARY_BT2020,
API_VENC_COLOR_PRIMARY_RESERVED
} API_VENC_COLOR_PRIMARY_E;
/*!
* \enum API_VENC_TRANSFER_CHAR_E
* \b API_VENC_TRANSFER_CHAR_E enumerates the opto-electronic transfer characteristic of the source picture.
*
Enum | Description
----------------------------------- | ------------------------
API_VENC_TRANSFER_CHAR_0 | Reserved
API_VENC_TRANSFER_CHAR_BT709 | Rec. ITU-R BT.709-5
API_VENC_TRANSFER_CHAR_2 | Unspecified
API_VENC_TRANSFER_CHAR_3 | Reserved
API_VENC_TRANSFER_CHAR_BT470M | Rec. ITU-R BT.470-6 System M
API_VENC_TRANSFER_CHAR_BT470BG | Rec. ITU-R BT.470-6 System B, G
API_VENC_TRANSFER_CHAR_SMPTE170M | Society of Motion Picture and Television Engineers 170M (2004)
API_VENC_TRANSFER_CHAR_SMPTE240M | Society of Motion Picture and Television Engineers 240M (1999)
API_VENC_TRANSFER_CHAR_LINEAR | Linear transfer characteristics
API_VENC_TRANSFER_CHAR_LOG100 | Logarithmic transfer characteristic (100:1 range)
API_VENC_TRANSFER_CHAR_LOG316 | Logarithmic transfer characteristic (100 * Sqrt( 10 ) : 1 range)
API_VENC_TRANSFER_CHAR_IEC61966_2_4 | IEC 61966-2-4
API_VENC_TRANSFER_CHAR_BT1361E | Rec. ITU-R BT.1361 extended colour gamut system
API_VENC_TRANSFER_CHAR_IEC61966_2_1 | IEC 61966-2-1 (sRGB or sYCC)
API_VENC_TRANSFER_CHAR_BT2020_10 | Rec. ITU-R BT.2020 for 10 bit system
API_VENC_TRANSFER_CHAR_BT2020_12 | Rec. ITU-R BT.2020 for 12 bit system
*
*/
typedef enum
{
API_VENC_TRANSFER_CHAR_0,
API_VENC_TRANSFER_CHAR_BT709,
API_VENC_TRANSFER_CHAR_2,
API_VENC_TRANSFER_CHAR_3,
API_VENC_TRANSFER_CHAR_BT470M,
API_VENC_TRANSFER_CHAR_BT470BG,
API_VENC_TRANSFER_CHAR_SMPTE170M,
API_VENC_TRANSFER_CHAR_SMPTE240M,
API_VENC_TRANSFER_CHAR_LINEAR,
API_VENC_TRANSFER_CHAR_LOG100,
API_VENC_TRANSFER_CHAR_LOG316,
API_VENC_TRANSFER_CHAR_IEC61966_2_4,
API_VENC_TRANSFER_CHAR_BT1361E,
API_VENC_TRANSFER_CHAR_IEC61966_2_1,
API_VENC_TRANSFER_CHAR_BT2020_10,
API_VENC_TRANSFER_CHAR_BT2020_12,
API_VENC_TRANSFER_CHAR_RESERVED
} API_VENC_TRANSFER_CHAR_E;
/*!
* \enum API_VENC_MATRIX_COEFFS_E
* \b API_VENC_MATRIX_COEFFS_E enumerates the matrix coefficients used in deriving luma and chroma signals from the green, blue, and red primaries.
*
Enum | Description
------------------------------- | ------------------------
API_VENC_MATRIX_COEFFS_GBR | RGB
API_VENC_MATRIX_COEFFS_BT709 | Rec. ITU-R BT.709-5
API_VENC_MATRIX_COEFFS_2 | Unspecified
API_VENC_MATRIX_COEFFS_3 | Reserved
API_VENC_MATRIX_COEFFS_FCC | United States Federal Communications Commission Title 47 Code of Federal Regulations (2003) 73.682 (a) (20)
API_VENC_MATRIX_COEFFS_BT470BG | Rec. ITU-R BT.470-6 System B, G
API_VENC_MATRIX_COEFFS_SMPTE170M | Society of Motion Picture and Television Engineers 170M (2004)
API_VENC_MATRIX_COEFFS_SMPTE240M | Society of Motion Picture and Television Engineers 240M (1999)
API_VENC_MATRIX_COEFFS_YCGCO | See Equations E-22 to E-36
API_VENC_MATRIX_COEFFS_BT2020NC | Rec. ITU-R BT.2020 non-constant luminance system
API_VENC_MATRIX_COEFFS_BT2020C | Rec. ITU-R BT.2020 constant luminance system
*
*/
typedef enum
{
API_VENC_MATRIX_COEFFS_GBR,
API_VENC_MATRIX_COEFFS_BT709,
API_VENC_MATRIX_COEFFS_2,
API_VENC_MATRIX_COEFFS_3,
API_VENC_MATRIX_COEFFS_FCC,
API_VENC_MATRIX_COEFFS_BT470BG,
API_VENC_MATRIX_COEFFS_SMPTE170M,
API_VENC_MATRIX_COEFFS_SMPTE240M,
API_VENC_MATRIX_COEFFS_YCGCO,
API_VENC_MATRIX_COEFFS_BT2020NC,
API_VENC_MATRIX_COEFFS_BT2020C,
API_VENC_MATRIX_COEFFS_RESERVED
} API_VENC_MATRIX_COEFFS_E;
/*!
* \enum API_VENC_CHROMA_SAMPLE_POSITION_E
* \b API_VENC_CHROMA_SAMPLE_POSITION_E enumerates chroma sampling location.
*
Enum | Description
------------------------------------------- | ------------------------
API_VENC_CHROMA_SAMPLE_POSITION_LEFT | Sampling chroma at left
API_VENC_CHROMA_SAMPLE_POSITION_CENTER | Sampling chroma at center
API_VENC_CHROMA_SAMPLE_POSITION_UP_LEFT | Sampling chroma at upper left
API_VENC_CHROMA_SAMPLE_POSITION_UP | Sampling chroma at up
API_VENC_CHROMA_SAMPLE_POSITION_BOT_LEFT | Sampling chroma at bottom left
API_VENC_CHROMA_SAMPLE_POSITION_BOT | Sampling chroma at bottom
*
*/
typedef enum
{
API_VENC_CHROMA_SAMPLE_POSITION_LEFT,
API_VENC_CHROMA_SAMPLE_POSITION_CENTER,
API_VENC_CHROMA_SAMPLE_POSITION_UP_LEFT,
API_VENC_CHROMA_SAMPLE_POSITION_UP,
API_VENC_CHROMA_SAMPLE_POSITION_BOT_LEFT,
API_VENC_CHROMA_SAMPLE_POSITION_BOT,
API_VENC_CHROMA_SAMPLE_POSITION_INVALID
} API_VENC_CHROMA_SAMPLE_POSITION_E;
/*!
* \enum API_VENC_BIT_DEPTH_E
* \b API_VENC_BIT_DEPTH_E enumerates the possible color depth per pixel.
*
Enum | Description
-------------------- | ------------------------
API_VENC_BIT_DEPTH_8 | color depth is in 8 bit
API_VENC_BIT_DEPTH_10 | color depth is in 10 bit
*
*/
typedef enum
{
API_VENC_BIT_DEPTH_8,
API_VENC_BIT_DEPTH_10,
} API_VENC_BIT_DEPTH_E;
/*!
* \enum API_VENC_FPS_E
* \b API_VENC_FPS_E enumerates the possible output frame rates.
*
* HEVC frame rate is calculated by formula: vps_num_units_in_tick / vps_time_scale
*
*
Enum | vps_num_units_in_tick | vps_time_scale
------------------- | --------------------- | ---------------
API_VENC_FPS_15 | 15 | 1
API_VENC_FPS_23_98 | 24000 | 1001
API_VENC_FPS_24 | 24 | 1
API_VENC_FPS_25 | 25 | 1
API_VENC_FPS_29_97 | 30000 | 1001
API_VENC_FPS_30 | 30 | 1
API_VENC_FPS_50 | 50 | 1
API_VENC_FPS_59_94 | 60000 | 1001
API_VENC_FPS_60 | 60 | 1
API_VENC_FPS_CUSTOMED| u32NumUnitsInTicks | u32TimeScale
*
*/
typedef enum
{
API_VENC_FPS_15 = 15,
API_VENC_FPS_23_98 = 23,
API_VENC_FPS_24 = 24,
API_VENC_FPS_25 = 25,
API_VENC_FPS_29_97 = 29,
API_VENC_FPS_30 = 30,
API_VENC_FPS_50 = 50,
API_VENC_FPS_59_94 = 59,
API_VENC_FPS_60 = 60,
API_VENC_FPS_CUSTOMED = 255,
} API_VENC_FPS_E;
/*!
* \enum API_VENC_GOP_TYPE_E
* \b API_VENC_GOP_TYPE_E enumerates the possible group of picture ncoding methods.
*
Enum | Description
----------------------- | ---------------------------------------------
API_VENC_GOP_I | All frames are intra frames
API_VENC_GOP_IP | Intra frame and predictive frame only
API_VENC_GOP_IPB | Intra frame, predictive frame and bi-predictive frame. Number of B frame (\b eBFrameNum) must be specified. eBFrameNum can be 1, 3, and 7.
API_VENC_GOP_IB | Intra frame and bi-predictive frame. Number of B frame (\b eBFrameNum) must be specified. eBFrameNum can be 1, 2, 4 and 8.
*
*/
typedef enum
{
API_VENC_GOP_I,
API_VENC_GOP_IP,
API_VENC_GOP_IPB,
API_VENC_GOP_IB,
} API_VENC_GOP_TYPE_E;
/*!
* \enum API_VENC_GOP_HIERARCHY_E
* \b API_VENC_GOP_HIERARCHY_E enumerates the hierarchy method of the gop.
*
Enum | Description
----------------------------------------------- | ---------------------------------------------
API_VENC_GOP_HIERARCHY | Hierarchical GOP.
API_VENC_GOP_HIERARCHY_NONE | Non hierarchical GOP.
API_VENC_GOP_HIERARCHY_NO_LEADING_PICTURE | Use IDR_N_LP.
*
*/
typedef enum
{
API_VENC_GOP_HIERARCHY,
API_VENC_GOP_HIERARCHY_NONE,
API_VENC_GOP_HIERARCHY_NO_LEADING_PICTURE,
} API_VENC_GOP_HIERARCHY_E;
/*!
* \enum API_VENC_GOP_SIZE_E
* \b API_VENC_GOP_SIZE_E enumerates GOP size, the number of frames between two consecutive intra frames
*
Enum | Description
------------------ | ---------------
API_VENC_GOP_SIZE_0 | Except for first I, no other I frame allowed
API_VENC_GOP_SIZE_1 | Intra frame only
API_VENC_GOP_SIZE_X | X = number of I + number of P + number of B
*
*/
typedef enum
{
API_VENC_GOP_SIZE_0 = 0,
API_VENC_GOP_SIZE_1 = 1,
API_VENC_GOP_SIZE_24 = 24,
API_VENC_GOP_SIZE_25 = 25,
API_VENC_GOP_SIZE_30 = 30,
API_VENC_GOP_SIZE_32 = 32,
API_VENC_GOP_SIZE_60 = 60,
API_VENC_GOP_SIZE_64 = 64,
API_VENC_GOP_SIZE_100 = 100,
API_VENC_GOP_SIZE_128 = 128,
} API_VENC_GOP_SIZE_E;
/*!
* \enum API_VENC_B_FRAME_NUM_E
* \b API_VENC_B_FRAME_NUM_E enumerates the possible settings of B frame number in a GOP.
*
* The encoded GOP structure is influenced by API_VENC_B_FRAME_NUM_E and API_VENC_GOP_TYPE_E.
*
Enum | API_VENC_GOP_IB | API_VENC_GOP_IPB
--------------------- | --------------- | ----------------
API_VENC_B_FRAME_ONE | B | PB
API_VENC_B_FRAME_TWO | BB | x
API_VENC_B_FRAME_THREE | x | PBBB
API_VENC_B_FRAME_FOUR | BBBB | x
API_VENC_B_FRAME_SEVEN | x | PBBBBBBB
API_VENC_B_FRAME_MAX | BBBBBBBB | PBBBBBBB
*
*/
typedef enum
{
API_VENC_B_FRAME_NONE = 0,
API_VENC_B_FRAME_ONE = 1,
API_VENC_B_FRAME_TWO = 2,
API_VENC_B_FRAME_THREE = 3,
API_VENC_B_FRAME_FOUR = 4,
API_VENC_B_FRAME_FIVE = 5,
API_VENC_B_FRAME_SIX = 6,
API_VENC_B_FRAME_SEVEN = 7,
API_VENC_B_FRAME_MAX = 8,
} API_VENC_B_FRAME_NUM_E;
/*!
* \enum API_VENC_IDR_FRAME_NUM_E
* \b API_VENC_IDR_FRAME_NUM_E enumerates interval between two IDR frames; unit of this parameter is intraFrameInterval(IRAP)
*
Enum | Description
---------------------------- | ---------------
API_VENC_IDR_FRAME_FIRST | Only first IRAP frame as IDR (open GOP)
API_VENC_IDR_FRAME_ALL | All IRAP frames are also IDR (closed GOP)
API_VENC_IDR_FRAME_TWO | Every two IRAP frames has one as IDR
API_VENC_IDR_FRAME_100 | Every 100 IRAP frames has one as IDR
*
*/
typedef enum
{
API_VENC_IDR_FRAME_FIRST = 0,
API_VENC_IDR_FRAME_ALL = 1,
API_VENC_IDR_FRAME_TWO = 2,
API_VENC_IDR_FRAME_100 = 100,
} API_VENC_IDR_FRAME_NUM_E;
/*!
* \enum API_VENC_HEVC_IDR_TYPE_E
* \b API_VENC_HEVC_IDR_TYPE_E enumerates IDR NAL type.
*
Enum | Description
--------------------------------- | ---------------
API_VENC_HEVC_IDR_TYPE_W_RADL | Use random access decodable leading pictures IDR NAL
API_VENC_HEVC_IDR_TYPE_N_LP | Use no leading picture IDR NAL
*
*/
typedef enum
{
API_VENC_HEVC_IDR_TYPE_W_RADL,
API_VENC_HEVC_IDR_TYPE_N_LP,
} API_VENC_HEVC_IDR_TYPE_E;
/*!
* \enum API_VENC_FRAME_TYPE_E
* \b API_VENC_FRAME_TYPE_E enumerates encoded frame type.
*
*
Enum | Description
-------------------- | ------------------------
API_VENC_FRAME_TYPE_I | Encoded frame contains intra slices only
API_VENC_FRAME_TYPE_P | Encoded frame may contain predictive slices
API_VENC_FRAME_TYPE_B | Encoded frame may contain bi-predictive slices
*
*/
typedef enum
{
API_VENC_FRAME_TYPE_I,
API_VENC_FRAME_TYPE_P,
API_VENC_FRAME_TYPE_B,
} API_VENC_FRAME_TYPE_E;
typedef enum
{
API_VENC_PICTURE_STRUCT_FRAME,
API_VENC_PICTURE_STRUCT_FIELD_TOP,
API_VENC_PICTURE_STRUCT_FIELD_BOT,
} API_VENC_PICTURE_STRUCT_E;
/*!
* \enum API_VENC_NAL_UNIT_TYPE_E
* \b API_VENC_NAL_UNIT_TYPE_E enumerates HEVC NAL types
* The description of nal unit type is in ITU-T H.265, Table 7.1.
*
Enum | Description
------------------------------------------- | ------------------------
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TRAIL_N | Non-TSA, non-STSA trailing, sub-layer non reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TRAIL_R | Non-TSA, non-STSA trailing, sub-layer reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TSA_N | Temporal sub-layer access, sub-layer non reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TSA_R | Temporal sub-layer access, sub-layer reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_STSA_N | Step-wise temporal sub-layer, sub-layer non reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_STSA_R | Step-wise temporal sub-layer, sub-layer reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RADL_N | Random access decodable, sub-layer non reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RADL_R | Random access decodable, sub-layer reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RASL_N | Random access skipped leading, sub-layer non reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RASL_R | Random access skipped leading, sub-layer reference
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_W_LP | Broken link access, may have leading picture
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_W_RADL| Broken link access, may have RADL
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_N_LP | Broken link access, without leading picture
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_IDR_W_RADL| IDR, may have RADL
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_IDR_N_LP | IDR, without leading picture
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_CRA | Clean random access
API_VENC_HEVC_NAL_UNIT_VPS | Video parameter set
API_VENC_HEVC_NAL_UNIT_SPS | Sequence parameter set
API_VENC_HEVC_NAL_UNIT_PPS | Picture parameter set
API_VENC_HEVC_NAL_UNIT_EOS | End of sequence
API_VENC_HEVC_NAL_UNIT_EOB | End of bitstream
API_VENC_HEVC_NAL_UNIT_FILLER_DATA | Filler data
API_VENC_HEVC_NAL_UNIT_PREFIX_SEI | Supplemental enhancement information
API_VENC_HEVC_NAL_UNIT_SUFFIX_SEI | Supplemental enhancement information
*
*/
typedef enum
{
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TRAIL_N = 0, // 0
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TRAIL_R, // 1
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TSA_N, // 2
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_TSA_R, // 3
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_STSA_N, // 4
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_STSA_R, // 5
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RADL_N, // 6
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RADL_R, // 7
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RASL_N, // 8
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_RASL_R, // 9
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_N10,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_R11,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_N12,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_R13,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_N14,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL_R15,
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_W_LP, // 16
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_W_RADL, // 17
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_BLA_N_LP, // 18
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_IDR_W_RADL, // 19
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_IDR_N_LP, // 20
API_VENC_HEVC_NAL_UNIT_CODED_SLICE_CRA, // 21
API_VENC_HEVC_NAL_UNIT_RESERVED_IRAP_VCL22,
API_VENC_HEVC_NAL_UNIT_RESERVED_IRAP_VCL23,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL24,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL25,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL26,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL27,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL28,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL29,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL30,
API_VENC_HEVC_NAL_UNIT_RESERVED_VCL31,
API_VENC_HEVC_NAL_UNIT_VPS, // 32
API_VENC_HEVC_NAL_UNIT_SPS, // 33
API_VENC_HEVC_NAL_UNIT_PPS, // 34
API_VENC_HEVC_NAL_UNIT_ACCESS_UNIT_DELIMITER, // 35
API_VENC_HEVC_NAL_UNIT_EOS, // 36
API_VENC_HEVC_NAL_UNIT_EOB, // 37
API_VENC_HEVC_NAL_UNIT_FILLER_DATA, // 38
API_VENC_HEVC_NAL_UNIT_PREFIX_SEI, // 39
API_VENC_HEVC_NAL_UNIT_SUFFIX_SEI, // 40
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL41,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL42,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL43,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL44,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL45,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL46,
API_VENC_HEVC_NAL_UNIT_RESERVED_NVCL47,
API_VENC_HEVC_NAL_UNIT_UNSPECIFIED_48,
API_VENC_HEVC_NAL_UNIT_UNSPECIFIED_49,
API_VENC_HEVC_NAL_UNIT_UNSPECIFIED_50,