docs-6.1.0/api/rocdecode.h Source File

docs-6.1.0/api/rocdecode.h Source File#

rocDecode: docs-6.1.0/api/rocdecode.h Source File
rocdecode.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2023 - 2024 Advanced Micro Devices, Inc. All rights reserved.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is
9 furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 THE SOFTWARE.
21 */
22 
23 #ifndef ROCDECAPI
24 #if defined(_WIN32)
25 #define ROCDECAPI __stdcall // for future: only linux is supported in this version
26 #else
27 #define ROCDECAPI
28 #endif
29 #endif
30 
31 #pragma once
32 #include "hip/hip_runtime.h"
33 
43 #if defined(__cplusplus)
44 extern "C" {
45 #endif // __cplusplus
46 
47 /*********************************************************************************/
50 /*********************************************************************************/
51 
52 typedef void *rocDecDecoderHandle;
53 
54 /*********************************************************************************/
59 /*********************************************************************************/
60 typedef enum rocDecStatus_enum{
61  ROCDEC_DEVICE_INVALID = -1,
62  ROCDEC_CONTEXT_INVALID = -2,
63  ROCDEC_RUNTIME_ERROR = -3,
64  ROCDEC_OUTOF_MEMORY = -4,
65  ROCDEC_INVALID_PARAMETER = -5,
66  ROCDEC_NOT_IMPLEMENTED = -6,
67  ROCDEC_NOT_INITIALIZED = -7,
68  ROCDEC_NOT_SUPPORTED = -8,
69  ROCDEC_SUCCESS = 0,
70 }rocDecStatus;
71 
72 /*********************************************************************************/
77 /*********************************************************************************/
78 typedef enum rocDecVideoCodec_enum {
89  // Uncompressed YUV
90  rocDecVideoCodec_YUV420 = (('I'<<24)|('Y'<<16)|('U'<<8)|('V')),
91  rocDecVideoCodec_YV12 = (('Y'<<24)|('V'<<16)|('1'<<8)|('2')),
92  rocDecVideoCodec_NV12 = (('N'<<24)|('V'<<16)|('1'<<8)|('2')),
93  rocDecVideoCodec_YUYV = (('Y'<<24)|('U'<<16)|('Y'<<8)|('V')),
94  rocDecVideoCodec_UYVY = (('U'<<24)|('Y'<<16)|('V'<<8)|('Y'))
95 } rocDecVideoCodec;
96 
97 /*********************************************************************************/
102 /*********************************************************************************/
110 } rocDecVideoSurfaceFormat;
111 
112 /**************************************************************************************************************/
117 /**************************************************************************************************************/
123 } rocDecVideoChromaFormat;
124 
125 
126 /*************************************************************************/
131 /*************************************************************************/
132 typedef enum rocDecodeStatus_enum {
133  rocDecodeStatus_Invalid = 0, // Decode status is not valid
134  rocDecodeStatus_InProgress = 1, // Decode is in progress
135  rocDecodeStatus_Success = 2, // Decode is completed without any errors
136  // 3 to 7 enums are reserved for future use
137  rocDecodeStatus_Error = 8, // Decode is completed with an error (error is not concealed)
138  rocDecodeStatus_Error_Concealed = 9, // Decode is completed with an error and error is concealed
139  rocDecodeStatus_Displaying = 10, // Decode is completed, displaying in progress
140 } rocDecDecodeStatus;
141 
142 /**************************************************************************************************************/
146 /**************************************************************************************************************/
147 typedef struct _RocdecDecodeCaps {
148  uint8_t device_id;
149  rocDecVideoCodec codec_type;
150  rocDecVideoChromaFormat chroma_format;
151  uint32_t bit_depth_minus_8;
152  uint32_t reserved_1[3];
153  uint8_t is_supported;
154  uint8_t num_decoders;
156  uint32_t max_width;
157  uint32_t max_height;
158  uint16_t min_width;
159  uint16_t min_height;
160  uint32_t reserved_2[6];
162 
163 /**************************************************************************************************************/
167 /**************************************************************************************************************/
168 typedef struct _RocDecoderCreateInfo {
169  uint8_t device_id;
171  uint32_t width;
172  uint32_t height;
174  rocDecVideoCodec codec_type;
175  rocDecVideoChromaFormat chroma_format;
176  uint32_t bit_depth_minus_8;
177  uint32_t intra_decode_only;
182  uint32_t max_width;
183  uint32_t max_height;
184  struct {
185  int16_t left;
186  int16_t top;
187  int16_t right;
188  int16_t bottom;
190  rocDecVideoSurfaceFormat output_format;
191  uint32_t target_width;
192  uint32_t target_height;
194  struct {
195  int16_t left;
196  int16_t top;
197  int16_t right;
198  int16_t bottom;
199  } target_rect;
201  uint32_t reserved_2[4];
203 
204 /*********************************************************************************************************/
209 /*********************************************************************************************************/
210 typedef struct _RocdecDecodeStatus {
211  rocDecDecodeStatus decode_status;
212  uint32_t reserved[31];
213  void *p_reserved[8];
215 
216 /****************************************************/
221 /****************************************************/
223  uint32_t width;
224  uint32_t height;
225  uint32_t target_width;
226  uint32_t target_height;
228  uint32_t reserved_1[12];
232  struct {
233  int16_t left;
234  int16_t top;
235  int16_t right;
236  int16_t bottom;
241  struct {
242  int16_t left;
243  int16_t top;
244  int16_t right;
245  int16_t bottom;
247  uint32_t reserved_2[11];
249 
250 /*********************************************************/
255 /*********************************************************/
256 typedef struct _RocdecAvcPicture {
257  int pic_idx;
258  uint32_t frame_idx;
259  uint32_t flags;
262  uint32_t reserved[4];
264 
265 /* flags in RocdecAvcPicture could be OR of the following */
266 #define RocdecAvcPicture_FLAGS_INVALID 0x00000001
267 #define RocdecAvcPicture_FLAGS_TOP_FIELD 0x00000002
268 #define RocdecAvcPicture_FLAGS_BOTTOM_FIELD 0x00000004
269 #define RocdecAvcPicture_FLAGS_SHORT_TERM_REFERENCE 0x00000008
270 #define RocdecAvcPicture_FLAGS_LONG_TERM_REFERENCE 0x00000010
271 #define RocdecAvcPicture_FLAGS_NON_EXISTING 0x00000020
272 
273 /*********************************************************/
278 /*********************************************************/
279 typedef struct _RocdecHevcPicture {
280  int pic_idx;
283 
286  int poc;
287  uint32_t flags;
288  uint32_t reserved[4];
290 
291 /* flags in RocdecHevcPicture could be OR of the following */
292 #define RocdecHevcPicture_INVALID 0x00000001
296 #define RocdecHevcPicture_FIELD_PIC 0x00000002
301 #define RocdecHevcPicture_BOTTOM_FIELD 0x00000004
303 #define RocdecHevcPicture_LONG_TERM_REFERENCE 0x00000008
318 #define RocdecHevcPicture_RPS_ST_CURR_BEFORE 0x00000010
323 #define RocdecHevcPicture_RPS_ST_CURR_AFTER 0x00000020
328 #define RocdecHevcPicture_RPS_LT_CURR 0x00000040
329 
330 /***********************************************************/
335 /***********************************************************/
336 typedef struct _RocdecJPEGPicParams {
337  int reserved;
339 
340 /***********************************************************/
345 /***********************************************************/
346 typedef struct _RocdecMpeg2QMatrix {
347  int32_t load_intra_quantiser_matrix;
348  int32_t load_non_intra_quantiser_matrix;
349  int32_t load_chroma_intra_quantiser_matrix;
350  int32_t load_chroma_non_intra_quantiser_matrix;
351  uint8_t intra_quantiser_matrix[64];
352  uint8_t non_intra_quantiser_matrix[64];
353  uint8_t chroma_intra_quantiser_matrix[64];
354  uint8_t chroma_non_intra_quantiser_matrix[64];
356 
357 /***********************************************************/
362 /***********************************************************/
363 typedef struct _RocdecMpeg2PicParams {
364  uint16_t horizontal_size;
365  uint16_t vertical_size;
366  uint32_t forward_reference_pic; // surface_id for forward reference
367  uint32_t backward_reference_picture; // surface_id for backward reference
368  /* meanings of the following fields are the same as in the standard */
369  int32_t picture_coding_type;
370  int32_t f_code; /* pack all four fcode into this */
371  union {
372  struct {
373  uint32_t intra_dc_precision : 2;
374  uint32_t picture_structure : 2;
375  uint32_t top_field_first : 1;
376  uint32_t frame_pred_frame_dct : 1;
377  uint32_t concealment_motion_vectors : 1;
378  uint32_t q_scale_type : 1;
379  uint32_t intra_vlc_format : 1;
380  uint32_t alternate_scan : 1;
381  uint32_t repeat_first_field : 1;
382  uint32_t progressive_frame : 1;
383  uint32_t is_first_field : 1; // indicate whether the current field is the first field for field picture
384  } bits;
385  uint32_t value;
386  } picture_coding_extension;
387 
388  RocdecMpeg2QMatrix q_matrix;
389  uint32_t reserved[4];
391 
392 /***********************************************************/
397 /***********************************************************/
398 typedef struct _RocdecVc1PicParams {
399  int reserved;
401 
402 /***********************************************************/
408 /***********************************************************/
409 typedef struct _RocdecAvcPicParams {
410  RocdecAvcPicture curr_pic;
411  RocdecAvcPicture ref_frames[16]; /* in DPB */
412  uint16_t picture_width_in_mbs_minus1;
413  uint16_t picture_height_in_mbs_minus1;
414  uint8_t bit_depth_luma_minus8;
415  uint8_t bit_depth_chroma_minus8;
416  uint8_t num_ref_frames;
417  union {
418  struct {
419  uint32_t chroma_format_idc : 2;
420  uint32_t residual_colour_transform_flag : 1;
421  uint32_t gaps_in_frame_num_value_allowed_flag : 1;
422  uint32_t frame_mbs_only_flag : 1;
423  uint32_t mb_adaptive_frame_field_flag : 1;
424  uint32_t direct_8x8_inference_flag : 1;
425  uint32_t MinLumaBiPredSize8x8 : 1; /* see A.3.3.2 */
426  uint32_t log2_max_frame_num_minus4 : 4;
427  uint32_t pic_order_cnt_type : 2;
428  uint32_t log2_max_pic_order_cnt_lsb_minus4 : 4;
429  uint32_t delta_pic_order_always_zero_flag : 1;
430  } bits;
431  uint32_t value;
432  } seq_fields;
433 
434  // FMO/ASO
435  uint8_t num_slice_groups_minus1;
436  uint8_t slice_group_map_type;
437  uint16_t slice_group_change_rate_minus1;
438  int8_t pic_init_qp_minus26;
439  int8_t pic_init_qs_minus26;
440  int8_t chroma_qp_index_offset;
441  int8_t second_chroma_qp_index_offset;
442  union {
443  struct {
444  uint32_t entropy_coding_mode_flag : 1;
445  uint32_t weighted_pred_flag : 1;
446  uint32_t weighted_bipred_idc : 2;
447  uint32_t transform_8x8_mode_flag : 1;
448  uint32_t field_pic_flag : 1;
449  uint32_t constrained_intra_pred_flag : 1;
450  uint32_t pic_order_present_flag : 1;
451  uint32_t deblocking_filter_control_present_flag : 1;
452  uint32_t redundant_pic_cnt_present_flag : 1;
453  uint32_t reference_pic_flag : 1; /* nal_ref_idc != 0 */
454  } bits;
455  uint32_t value;
456  } pic_fields;
457  uint16_t frame_num;
458 
459  uint32_t reserved[8];
461 
462 /***********************************************************/
467 /***********************************************************/
468 typedef struct _RocdecAvcSliceParams {
469  uint32_t slice_data_size; // slice size in bytes
470  uint32_t slice_data_offset; // byte offset of the current slice in the slice data buffer
471  uint32_t slice_data_flag; /* see VA_SLICE_DATA_FLAG_XXX defintions */
483 
484  uint16_t first_mb_in_slice;
485  uint8_t slice_type;
486  uint8_t direct_spatial_mv_pred_flag;
487  uint8_t num_ref_idx_l0_active_minus1;
488  uint8_t num_ref_idx_l1_active_minus1;
489  uint8_t cabac_init_idc;
490  int8_t slice_qp_delta;
491  uint8_t disable_deblocking_filter_idc;
492  int8_t slice_alpha_c0_offset_div2;
493  int8_t slice_beta_offset_div2;
494  RocdecAvcPicture ref_pic_list_0[32]; // 8.2.4.2
495  RocdecAvcPicture ref_pic_list_1[32]; // 8.2.4.2
496  uint8_t luma_log2_weight_denom;
497  uint8_t chroma_log2_weight_denom;
498  uint8_t luma_weight_l0_flag;
499  int16_t luma_weight_l0[32];
500  int16_t luma_offset_l0[32];
501  uint8_t chroma_weight_l0_flag;
502  int16_t chroma_weight_l0[32][2];
503  int16_t chroma_offset_l0[32][2];
504  uint8_t luma_weight_l1_flag;
505  int16_t luma_weight_l1[32];
506  int16_t luma_offset_l1[32];
507  uint8_t chroma_weight_l1_flag;
508  int16_t chroma_weight_l1[32][2];
509  int16_t chroma_offset_l1[32][2];
510 
511  uint32_t reserved[4];
513 
514 /***********************************************************/
519 /***********************************************************/
520 typedef struct _RocdecAvcIQMatrix {
522  uint8_t scaling_list_4x4[6][16];
524  uint8_t scaling_list_8x8[2][64];
525 
527  uint32_t reserved[4];
529 
530 /***********************************************************/
535 /***********************************************************/
536 typedef struct _RocdecHevcPicParams {
537  RocdecHevcPicture curr_pic;
538  RocdecHevcPicture ref_frames[15]; /* reference frame list in DPB */
539  uint16_t picture_width_in_luma_samples;
540  uint16_t picture_height_in_luma_samples;
541  union {
542  struct {
544  uint32_t chroma_format_idc : 2;
545  uint32_t separate_colour_plane_flag : 1;
546  uint32_t pcm_enabled_flag : 1;
547  uint32_t scaling_list_enabled_flag : 1;
548  uint32_t transform_skip_enabled_flag : 1;
549  uint32_t amp_enabled_flag : 1;
550  uint32_t strong_intra_smoothing_enabled_flag : 1;
551  uint32_t sign_data_hiding_enabled_flag : 1;
552  uint32_t constrained_intra_pred_flag : 1;
553  uint32_t cu_qp_delta_enabled_flag : 1;
554  uint32_t weighted_pred_flag : 1;
555  uint32_t weighted_bipred_flag : 1;
556  uint32_t transquant_bypass_enabled_flag : 1;
557  uint32_t tiles_enabled_flag : 1;
558  uint32_t entropy_coding_sync_enabled_flag : 1;
559  uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
560  uint32_t loop_filter_across_tiles_enabled_flag : 1;
561  uint32_t pcm_loop_filter_disabled_flag : 1;
565  uint32_t no_bi_pred_flag : 1;
566  uint32_t reserved_bits : 11;
567  } bits;
568  uint32_t value;
569  } pic_fields;
570 
573  uint8_t bit_depth_luma_minus8;
574  uint8_t bit_depth_chroma_minus8;
575  uint8_t pcm_sample_bit_depth_luma_minus1;
576  uint8_t pcm_sample_bit_depth_chroma_minus1;
577  uint8_t log2_min_luma_coding_block_size_minus3;
578  uint8_t log2_diff_max_min_luma_coding_block_size;
579  uint8_t log2_min_transform_block_size_minus2;
580  uint8_t log2_diff_max_min_transform_block_size;
581  uint8_t log2_min_pcm_luma_coding_block_size_minus3;
582  uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
583  uint8_t max_transform_hierarchy_depth_intra;
584  uint8_t max_transform_hierarchy_depth_inter;
585  int8_t init_qp_minus26;
586  uint8_t diff_cu_qp_delta_depth;
587  int8_t pps_cb_qp_offset;
588  int8_t pps_cr_qp_offset;
589  uint8_t log2_parallel_merge_level_minus2;
590  uint8_t num_tile_columns_minus1;
591  uint8_t num_tile_rows_minus1;
596  uint16_t column_width_minus1[19];
597  uint16_t row_height_minus1[21];
598 
599  union {
600  struct {
603  uint32_t long_term_ref_pics_present_flag : 1;
604  uint32_t sps_temporal_mvp_enabled_flag : 1;
605  uint32_t cabac_init_present_flag : 1;
606  uint32_t output_flag_present_flag : 1;
607  uint32_t dependent_slice_segments_enabled_flag : 1;
608  uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
609  uint32_t sample_adaptive_offset_enabled_flag : 1;
610  uint32_t deblocking_filter_override_enabled_flag : 1;
611  uint32_t pps_disable_deblocking_filter_flag : 1;
612  uint32_t slice_segment_header_extension_present_flag : 1;
613 
615  uint32_t rap_pic_flag : 1;
617  uint32_t idr_pic_flag : 1;
619  uint32_t intra_pic_flag : 1;
620 
621  uint32_t reserved_bits : 18;
622  } bits;
623  uint32_t value;
624  } slice_parsing_fields;
625 
628  uint8_t num_short_term_ref_pic_sets;
629  uint8_t num_long_term_ref_pic_sps;
630  uint8_t num_ref_idx_l0_default_active_minus1;
631  uint8_t num_ref_idx_l1_default_active_minus1;
632  int8_t pps_beta_offset_div2;
633  int8_t pps_tc_offset_div2;
634  uint8_t num_extra_slice_header_bits;
645  uint32_t st_rps_bits;
646 
647  uint32_t reserved[8];
649 
650 /***********************************************************/
655 /***********************************************************/
656 typedef struct _RocdecHevcSliceParams {
660  uint32_t slice_data_size;
664  uint32_t slice_data_flag;
683  uint8_t ref_pic_list[2][15];
684  union {
685  uint32_t value;
686  struct {
688  uint32_t last_slice_of_pic : 1;
691  uint32_t slice_type : 2;
692  uint32_t color_plane_id : 2;
693  uint32_t slice_sao_luma_flag : 1;
694  uint32_t slice_sao_chroma_flag : 1;
695  uint32_t mvd_l1_zero_flag : 1;
696  uint32_t cabac_init_flag : 1;
697  uint32_t slice_temporal_mvp_enabled_flag : 1;
698  uint32_t slice_deblocking_filter_disabled_flag : 1;
699  uint32_t collocated_from_l0_flag : 1;
700  uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
701  uint32_t reserved : 18;
702  } fields;
703  } long_slice_flags;
704 
707  uint8_t num_ref_idx_l0_active_minus1;
708  uint8_t num_ref_idx_l1_active_minus1;
709  int8_t slice_qp_delta;
710  int8_t slice_cb_qp_offset;
711  int8_t slice_cr_qp_offset;
712  int8_t slice_beta_offset_div2;
713  int8_t slice_tc_offset_div2;
714  uint8_t luma_log2_weight_denom;
715  int8_t delta_chroma_log2_weight_denom;
716  int8_t delta_luma_weight_l0[15];
717  int8_t luma_offset_l0[15];
718  int8_t delta_chroma_weight_l0[15][2];
720  int8_t chroma_offset_l0[15][2];
723  int8_t luma_offset_l1[15];
724  int8_t delta_chroma_weight_l1[15][2];
726  int8_t chroma_offset_l1[15][2];
729  uint16_t num_entry_point_offsets;
730  uint16_t entry_offset_to_subset_array;
733 
734  uint32_t reserved[2];
736 
737 /***********************************************************/
746 /***********************************************************/
747 typedef struct _RocdecHevcIQMatrix {
753  uint8_t scaling_list_4x4[6][16];
759  uint8_t scaling_list_8x8[6][64];
765  uint8_t scaling_list_16x16[6][64];
771  uint8_t scaling_list_32x32[2][64];
786 
787  uint32_t reserved[4];
789 
790 /******************************************************************************************/
796 /******************************************************************************************/
797 typedef struct _RocdecPicParams {
798  int pic_width;
804  // Bitstream data
806  const uint8_t *bitstream_data;
807  uint32_t num_slices;
811  uint32_t reserved[30];
813  // IN: Codec-specific data
814  union {
816  RocdecAvcPicParams avc;
817  RocdecHevcPicParams hevc;
818  RocdecVc1PicParams vc1;
819  RocdecJPEGPicParams jpeg;
820  uint32_t codec_reserved[256];
821  } pic_params;
822 
825  union {
826  // Todo: Add slice params defines for other codecs.
828  RocdecHevcSliceParams *hevc;
830 
831  union {
832  // Todo: Added IQ matrix defines for other codecs.
833  RocdecAvcIQMatrix avc;
834  RocdecHevcIQMatrix hevc;
835  } iq_matrix;
837 
838 /******************************************************/
843 /******************************************************/
844 typedef struct _RocdecProcParams
845 {
848  uint32_t reserved_flags[2];
850  // The fields below are used for raw YUV input
851  uint64_t raw_input_dptr;
852  uint32_t raw_input_pitch;
853  uint32_t raw_input_format;
854  uint64_t raw_output_dptr;
855  uint32_t raw_output_pitch;
856  uint32_t raw_output_format;
857  uint32_t reserved[16];
859 
860 /*****************************************************************************************************/
864 /*****************************************************************************************************/
865 extern rocDecStatus ROCDECAPI rocDecCreateDecoder(rocDecDecoderHandle *decoder_handle, RocDecoderCreateInfo *decoder_create_info);
866 
867 /*****************************************************************************************************/
871 /*****************************************************************************************************/
872 extern rocDecStatus ROCDECAPI rocDecDestroyDecoder(rocDecDecoderHandle decoder_handle);
873 
874 /**********************************************************************************************************************/
881 /**********************************************************************************************************************/
882 extern rocDecStatus ROCDECAPI rocDecGetDecoderCaps(RocdecDecodeCaps *decode_caps);
883 
884 /*****************************************************************************************************/
889 /*****************************************************************************************************/
890 extern rocDecStatus ROCDECAPI rocDecDecodeFrame(rocDecDecoderHandle decoder_handle, RocdecPicParams *pic_params);
891 
892 /************************************************************************************************************/
898 /************************************************************************************************************/
899 extern rocDecStatus ROCDECAPI rocDecGetDecodeStatus(rocDecDecoderHandle decoder_handle, int pic_idx, RocdecDecodeStatus* decode_status);
900 
901 /*********************************************************************************************************/
906 /*********************************************************************************************************/
907 extern rocDecStatus ROCDECAPI rocDecReconfigureDecoder(rocDecDecoderHandle decoder_handle, RocdecReconfigureDecoderInfo *reconfig_params);
908 
909 /************************************************************************************************************************/
916 /************************************************************************************************************************/
917 extern rocDecStatus ROCDECAPI rocDecGetVideoFrame(rocDecDecoderHandle decoder_handle, int pic_idx,
918  void *dev_mem_ptr[3], uint32_t (&horizontal_pitch)[3],
919  RocdecProcParams *vid_postproc_params);
920 
921 /*****************************************************************************************************/
925 /*****************************************************************************************************/
926 extern const char* ROCDECAPI rocDecGetErrorName(rocDecStatus rocdec_status);
927 
928 #ifdef __cplusplus
929 }
930 #endif
rocDecStatus ROCDECAPI rocDecCreateDecoder(rocDecDecoderHandle *decoder_handle, RocDecoderCreateInfo *decoder_create_info)
rocDecStatus ROCDECAPI rocDecReconfigureDecoder(rocDecDecoderHandle decoder_handle, RocdecReconfigureDecoderInfo *reconfig_params)
int poc
picture order count. ! in HEVC, POCs for top and bottom fields of same picture should take different ...
Definition: rocdecode.h:286
rocDecStatus ROCDECAPI rocDecDecodeFrame(rocDecDecoderHandle decoder_handle, RocdecPicParams *pic_params)
rocDecStatus ROCDECAPI rocDecDestroyDecoder(rocDecDecoderHandle decoder_handle)
const char *ROCDECAPI rocDecGetErrorName(rocDecStatus rocdec_status)
rocDecStatus ROCDECAPI rocDecGetDecodeStatus(rocDecDecoderHandle decoder_handle, int pic_idx, RocdecDecodeStatus *decode_status)
rocDecVideoCodec_enum
Definition: rocdecode.h:78
@ rocDecVideoCodec_NV12
Definition: rocdecode.h:92
@ rocDecVideoCodec_YV12
Definition: rocdecode.h:91
@ rocDecVideoCodec_YUV420
Definition: rocdecode.h:90
@ rocDecVideoCodec_UYVY
Definition: rocdecode.h:94
@ rocDecVideoCodec_YUYV
Definition: rocdecode.h:93
@ rocDecVideoCodec_AV1
Definition: rocdecode.h:84
@ rocDecVideoCodec_MPEG4
Definition: rocdecode.h:81
@ rocDecVideoCodec_HEVC
Definition: rocdecode.h:83
@ rocDecVideoCodec_MPEG1
Definition: rocdecode.h:79
@ rocDecVideoCodec_JPEG
Definition: rocdecode.h:87
@ rocDecVideoCodec_VP9
Definition: rocdecode.h:86
@ rocDecVideoCodec_AVC
Definition: rocdecode.h:82
@ rocDecVideoCodec_MPEG2
Definition: rocdecode.h:80
@ rocDecVideoCodec_VP8
Definition: rocdecode.h:85
@ rocDecVideoCodec_NumCodecs
Definition: rocdecode.h:88
rocDecVideoSurfaceFormat_enum
Definition: rocdecode.h:103
@ rocDecVideoSurfaceFormat_YUV444_16Bit
Definition: rocdecode.h:108
@ rocDecVideoSurfaceFormat_P016
Definition: rocdecode.h:105
@ rocDecVideoSurfaceFormat_NV12
Definition: rocdecode.h:104
@ rocDecVideoSurfaceFormat_YUV444
Definition: rocdecode.h:107
void * rocDecDecoderHandle
Definition: rocdecode.h:52
rocDecVideoChromaFormat_enum
Definition: rocdecode.h:118
@ rocDecVideoChromaFormat_422
Definition: rocdecode.h:121
@ rocDecVideoChromaFormat_444
Definition: rocdecode.h:122
@ rocDecVideoChromaFormat_420
Definition: rocdecode.h:120
@ rocDecVideoChromaFormat_Monochrome
Definition: rocdecode.h:119
Definition: rocdecode.h:168
uint32_t height
Definition: rocdecode.h:172
uint32_t width
Definition: rocdecode.h:171
uint32_t target_width
Definition: rocdecode.h:191
uint32_t max_height
Definition: rocdecode.h:183
uint32_t bit_depth_minus_8
Definition: rocdecode.h:176
uint32_t num_output_surfaces
Definition: rocdecode.h:193
uint8_t device_id
Definition: rocdecode.h:169
struct _RocDecoderCreateInfo::@1 target_rect
rocDecVideoChromaFormat chroma_format
Definition: rocdecode.h:175
uint32_t num_decode_surfaces
Definition: rocdecode.h:173
rocDecVideoCodec codec_type
Definition: rocdecode.h:174
uint32_t max_width
Definition: rocdecode.h:182
rocDecVideoSurfaceFormat output_format
Definition: rocdecode.h:190
struct _RocDecoderCreateInfo::@0 display_area
uint32_t target_height
Definition: rocdecode.h:192
uint32_t intra_decode_only
Definition: rocdecode.h:177
uint32_t reserved_2[4]
Definition: rocdecode.h:201
Definition: rocdecode.h:520
uint8_t scaling_list_8x8[2][64]
8x8 scaling list, in raster scan order.
Definition: rocdecode.h:524
uint32_t reserved[4]
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:527
uint8_t scaling_list_4x4[6][16]
4x4 scaling list, in raster scan order.
Definition: rocdecode.h:522
Definition: rocdecode.h:409
Definition: rocdecode.h:256
int32_t top_field_order_cnt
Definition: rocdecode.h:260
int pic_idx
Definition: rocdecode.h:257
uint32_t flags
Definition: rocdecode.h:259
int32_t bottom_field_order_cnt
Definition: rocdecode.h:261
uint32_t frame_idx
Definition: rocdecode.h:258
Definition: rocdecode.h:468
uint16_t slice_data_bit_offset
Bit offset from NAL Header Unit to the begining of slice_data().
Definition: rocdecode.h:482
Definition: rocdecode.h:147
uint16_t min_width
Definition: rocdecode.h:158
uint32_t reserved_1[3]
Definition: rocdecode.h:152
uint32_t reserved_2[6]
Definition: rocdecode.h:160
uint8_t num_decoders
Definition: rocdecode.h:154
rocDecVideoCodec codec_type
Definition: rocdecode.h:149
uint8_t device_id
Definition: rocdecode.h:148
uint16_t min_height
Definition: rocdecode.h:159
uint32_t max_width
Definition: rocdecode.h:156
rocDecVideoChromaFormat chroma_format
Definition: rocdecode.h:150
uint16_t output_format_mask
Definition: rocdecode.h:155
uint8_t is_supported
Definition: rocdecode.h:153
uint32_t max_height
Definition: rocdecode.h:157
uint32_t bit_depth_minus_8
Definition: rocdecode.h:151
Definition: rocdecode.h:210
Definition: rocdecode.h:747
uint8_t scaling_list_8x8[6][64]
8x8 scaling, correspongs i = 1, MatrixID is in the range of 0 to 5, inclusive. And j is in the range ...
Definition: rocdecode.h:759
uint8_t scaling_list_4x4[6][16]
4x4 scaling, correspongs i = 0, MatrixID is in the range of 0 to 5, inclusive. And j is in the range ...
Definition: rocdecode.h:753
uint8_t scaling_list_dc_32x32[2]
DC values of the 32x32 scaling lists, corresponds to HEVC spec syntax scaling_list_dc_coef_minus8[ si...
Definition: rocdecode.h:785
uint8_t scaling_list_16x16[6][64]
16x16 scaling, correspongs i = 2, MatrixID is in the range of 0 to 5, inclusive. And j is in the rang...
Definition: rocdecode.h:765
uint8_t scaling_list_dc_16x16[6]
DC values of the 16x16 scaling lists, corresponds to HEVC spec syntax scaling_list_dc_coef_minus8[ si...
Definition: rocdecode.h:778
uint8_t scaling_list_32x32[2][64]
32x32 scaling, correspongs i = 3, MatrixID is in the range of 0 to 1, inclusive. And j is in the rang...
Definition: rocdecode.h:771
Definition: rocdecode.h:536
uint16_t column_width_minus1[19]
Definition: rocdecode.h:596
uint32_t idr_pic_flag
Definition: rocdecode.h:617
uint32_t chroma_format_idc
Definition: rocdecode.h:544
uint32_t st_rps_bits
number of bits that structure short_term_ref_pic_set( num_short_term_ref_pic_sets ) takes in slice se...
Definition: rocdecode.h:645
uint32_t no_bi_pred_flag
Definition: rocdecode.h:565
uint32_t intra_pic_flag
Definition: rocdecode.h:619
uint8_t sps_max_dec_pic_buffering_minus1
Definition: rocdecode.h:572
uint32_t no_pic_reordering_flag
Definition: rocdecode.h:563
uint32_t lists_modification_present_flag
Definition: rocdecode.h:602
uint32_t rap_pic_flag
Definition: rocdecode.h:615
uint8_t log2_max_pic_order_cnt_lsb_minus4
Definition: rocdecode.h:627
Definition: rocdecode.h:279
uint32_t flags
Definition: rocdecode.h:287
int pic_idx
Definition: rocdecode.h:280
uint32_t reserved[4]
Definition: rocdecode.h:288
Definition: rocdecode.h:656
uint32_t slice_segment_address
Definition: rocdecode.h:677
uint32_t slice_data_flag
Slice data buffer flags. See VA_SLICE_DATA_FLAG_XXX.
Definition: rocdecode.h:664
uint8_t five_minus_max_num_merge_cand
Definition: rocdecode.h:728
uint32_t slice_data_offset
The offset to the NAL unit header for this slice.
Definition: rocdecode.h:662
uint32_t last_slice_of_pic
Definition: rocdecode.h:688
uint32_t slice_data_size
Number of bytes in the slice data buffer for this slice counting from and including NAL unit header.
Definition: rocdecode.h:660
int8_t delta_luma_weight_l1[15]
Definition: rocdecode.h:722
int8_t chroma_offset_l1[15][2]
Definition: rocdecode.h:726
int8_t chroma_offset_l0[15][2]
Definition: rocdecode.h:720
uint16_t slice_data_num_emu_prevn_bytes
Number of emulation prevention bytes in slice header.
Definition: rocdecode.h:732
uint8_t collocated_ref_idx
Definition: rocdecode.h:706
uint8_t ref_pic_list[2][15]
index into ReferenceFrames[] ref_pic_list[0][] corresponds to RefPicList0[] of HEVC variable....
Definition: rocdecode.h:683
uint32_t dependent_slice_segment_flag
Definition: rocdecode.h:690
uint32_t slice_data_byte_offset
Byte offset from NAL unit header to the begining of slice_data().
Definition: rocdecode.h:675
Definition: rocdecode.h:336
Definition: rocdecode.h:363
Definition: rocdecode.h:346
Definition: rocdecode.h:797
uint32_t reserved[30]
Definition: rocdecode.h:811
RocdecMpeg2PicParams mpeg2
Definition: rocdecode.h:815
int bottom_field_flag
Definition: rocdecode.h:802
union _RocdecPicParams::@17 slice_params
Variable size array. The user should allocate one slice param struct for each slice.
int intra_pic_flag
Definition: rocdecode.h:810
int pic_height
Definition: rocdecode.h:799
int ref_pic_flag
Definition: rocdecode.h:809
const uint8_t * bitstream_data
Definition: rocdecode.h:806
uint32_t num_slices
Definition: rocdecode.h:807
int curr_pic_idx
Definition: rocdecode.h:800
int field_pic_flag
Definition: rocdecode.h:801
uint32_t bitstream_data_len
Definition: rocdecode.h:805
int second_field
Definition: rocdecode.h:803
int pic_width
Definition: rocdecode.h:798
Definition: rocdecode.h:845
uint32_t raw_input_format
Definition: rocdecode.h:853
uint64_t raw_output_dptr
Definition: rocdecode.h:854
uint32_t raw_output_pitch
Definition: rocdecode.h:855
int progressive_frame
Definition: rocdecode.h:846
uint64_t raw_input_dptr
Definition: rocdecode.h:851
uint32_t reserved_flags[2]
Definition: rocdecode.h:848
uint32_t raw_input_pitch
Definition: rocdecode.h:852
uint32_t raw_output_format
Definition: rocdecode.h:856
uint32_t reserved[16]
Definition: rocdecode.h:857
int top_field_first
Definition: rocdecode.h:847
Definition: rocdecode.h:222
uint32_t target_width
Definition: rocdecode.h:225
struct _RocdecReconfigureDecoderInfo::@3 target_rect
uint32_t num_decode_surfaces
Definition: rocdecode.h:227
uint32_t height
Definition: rocdecode.h:224
uint32_t width
Definition: rocdecode.h:223
struct _RocdecReconfigureDecoderInfo::@2 roi_area
uint32_t reserved_1[12]
Definition: rocdecode.h:228
uint32_t reserved_2[11]
Definition: rocdecode.h:247
uint32_t target_height
Definition: rocdecode.h:226
Definition: rocdecode.h:398