1 /****************************************************************************** 2 * 3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 /** 19 ******************************************************************************* 20 * @file 21 * ivd.h 22 * 23 * @brief 24 * This file contains all the necessary structure and enumeration 25 * definitions needed for the Application Program Interface(API) of the 26 * Ittiam Video Decoders 27 * 28 * @author 29 * 100239(RCY) 30 * 31 * @remarks 32 * None 33 * 34 ******************************************************************************* 35 */ 36 37 #ifndef _IVD_H 38 #define _IVD_H 39 40 /*****************************************************************************/ 41 /* Constant Macros */ 42 /*****************************************************************************/ 43 #define IVD_VIDDEC_MAX_IO_BUFFERS 64 44 /*****************************************************************************/ 45 /* Typedefs */ 46 /*****************************************************************************/ 47 48 /*****************************************************************************/ 49 /* Enums */ 50 /*****************************************************************************/ 51 52 /* IVD_ARCH_T: Architecture Enumeration */ 53 typedef enum 54 { 55 ARCH_NA = 0x7FFFFFFF, 56 ARCH_ARM_NONEON = 0x0, 57 ARCH_ARM_A9Q, 58 ARCH_ARM_A9A, 59 ARCH_ARM_A9, 60 ARCH_ARM_A7, 61 ARCH_ARM_A5, 62 ARCH_ARM_A15, 63 ARCH_ARM_NEONINTR, 64 ARCH_ARMV8_GENERIC, 65 ARCH_X86_GENERIC = 0x100, 66 ARCH_X86_SSSE3, 67 ARCH_X86_SSE42, 68 ARCH_X86_AVX2, 69 ARCH_MIPS_GENERIC = 0x200, 70 ARCH_MIPS_32 71 }IVD_ARCH_T; 72 73 /* IVD_SOC_T: SOC Enumeration */ 74 typedef enum 75 { 76 SOC_NA = 0x7FFFFFFF, 77 SOC_GENERIC = 0x0, 78 SOC_HISI_37X = 0x100, 79 }IVD_SOC_T; 80 81 /* IVD_FRAME_SKIP_MODE_T:Skip mode Enumeration */ 82 83 typedef enum { 84 IVD_SKIP_NONE = 0x7FFFFFFF, 85 IVD_SKIP_P = 0x1, 86 IVD_SKIP_B = 0x2, 87 IVD_SKIP_I = 0x3, 88 IVD_SKIP_IP = 0x4, 89 IVD_SKIP_IB = 0x5, 90 IVD_SKIP_PB = 0x6, 91 IVD_SKIP_IPB = 0x7, 92 IVD_SKIP_IDR = 0x8, 93 IVD_SKIP_DEFAULT = IVD_SKIP_NONE, 94 }IVD_FRAME_SKIP_MODE_T; 95 96 /* IVD_VIDEO_DECODE_MODE_T: Set decoder to decode either frame worth of data */ 97 /* or only header worth of data */ 98 99 typedef enum { 100 IVD_DECODE_MODE_NA = 0x7FFFFFFF, 101 102 /* This enables the codec to process all decodable units */ 103 IVD_DECODE_FRAME = 0x0, 104 105 /* This enables the codec to decode header only */ 106 IVD_DECODE_HEADER = 0x1, 107 108 109 110 }IVD_VIDEO_DECODE_MODE_T; 111 112 113 /* IVD_DISPLAY_FRAME_OUT_MODE_T: Video Display Frame Output Mode */ 114 115 typedef enum { 116 117 IVD_DISPLAY_ORDER_NA = 0x7FFFFFFF, 118 /* To set codec to fill output buffers in display order */ 119 IVD_DISPLAY_FRAME_OUT = 0x0, 120 121 /* To set codec to fill output buffers in decode order */ 122 IVD_DECODE_FRAME_OUT = 0x1, 123 }IVD_DISPLAY_FRAME_OUT_MODE_T; 124 125 126 /* IVD_API_COMMAND_TYPE_T:API command type */ 127 typedef enum { 128 IVD_CMD_VIDEO_NA = 0x7FFFFFFF, 129 IVD_CMD_VIDEO_CTL = IV_CMD_DUMMY_ELEMENT + 1, 130 IVD_CMD_VIDEO_DECODE, 131 IVD_CMD_GET_DISPLAY_FRAME, 132 IVD_CMD_REL_DISPLAY_FRAME, 133 IVD_CMD_SET_DISPLAY_FRAME 134 }IVD_API_COMMAND_TYPE_T; 135 136 /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */ 137 138 typedef enum { 139 IVD_CMD_NA = 0x7FFFFFFF, 140 IVD_CMD_CTL_GETPARAMS = 0x0, 141 IVD_CMD_CTL_SETPARAMS = 0x1, 142 IVD_CMD_CTL_RESET = 0x2, 143 IVD_CMD_CTL_SETDEFAULT = 0x3, 144 IVD_CMD_CTL_FLUSH = 0x4, 145 IVD_CMD_CTL_GETBUFINFO = 0x5, 146 IVD_CMD_CTL_GETVERSION = 0x6, 147 IVD_CMD_CTL_CODEC_SUBCMD_START = 0x7 148 }IVD_CONTROL_API_COMMAND_TYPE_T; 149 150 151 /* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/ 152 /* code to the application. The first 8 bits starting from LSB have been */ 153 /* reserved for the codec to report internal error details. The rest of the */ 154 /* bits will be generic for all video decoders and each bit has an associated*/ 155 /* meaning as mentioned below. The unused bit fields are reserved for future */ 156 /* extenstions and will be zero in the current implementation */ 157 158 typedef enum { 159 /* Bit 8 - Applied concealment. */ 160 IVD_APPLIEDCONCEALMENT = 0x8, 161 /* Bit 9 - Insufficient input data. */ 162 IVD_INSUFFICIENTDATA = 0x9, 163 /* Bit 10 - Data problem/corruption. */ 164 IVD_CORRUPTEDDATA = 0xa, 165 /* Bit 11 - Header problem/corruption. */ 166 IVD_CORRUPTEDHEADER = 0xb, 167 /* Bit 12 - Unsupported feature/parameter in input. */ 168 IVD_UNSUPPORTEDINPUT = 0xc, 169 /* Bit 13 - Unsupported input parameter orconfiguration. */ 170 IVD_UNSUPPORTEDPARAM = 0xd, 171 /* Bit 14 - Fatal error (stop the codec).If there is an */ 172 /* error and this bit is not set, the error is a recoverable one. */ 173 IVD_FATALERROR = 0xe, 174 /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame */ 175 /* buffer for encode/decode call is made with non-valid or zero u4_size */ 176 /* data */ 177 IVD_INVALID_BITSTREAM = 0xf, 178 /* Bit 16 */ 179 IVD_INCOMPLETE_BITSTREAM = 0x10, 180 IVD_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF 181 }IVD_ERROR_BITS_T; 182 183 184 /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */ 185 typedef enum { 186 IVD_ERROR_NONE = 0x0, 187 IVD_NUM_MEM_REC_FAILED = 0x1, 188 IVD_NUM_REC_NOT_SUFFICIENT = 0x2, 189 IVD_FILL_MEM_REC_FAILED = 0x3, 190 IVD_REQUESTED_WIDTH_NOT_SUPPPORTED = 0x4, 191 IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED = 0x5, 192 IVD_INIT_DEC_FAILED = 0x6, 193 IVD_INIT_DEC_NOT_SUFFICIENT = 0x7, 194 IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED = 0x8, 195 IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED = 0x9, 196 IVD_INIT_DEC_MEM_NOT_ALIGNED = 0xa, 197 IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED = 0xb, 198 IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT = 0xc, 199 IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT = 0xd, 200 IVD_BUFFER_SIZE_SET_TO_ZERO = 0xe, 201 IVD_UNEXPECTED_END_OF_STREAM = 0xf, 202 IVD_SEQUENCE_HEADER_NOT_DECODED = 0x10, 203 IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED = 0x11, 204 IVD_MAX_FRAME_LIMIT_REACHED = 0x12, 205 IVD_IP_API_STRUCT_SIZE_INCORRECT = 0x13, 206 IVD_OP_API_STRUCT_SIZE_INCORRECT = 0x14, 207 IVD_HANDLE_NULL = 0x15, 208 IVD_HANDLE_STRUCT_SIZE_INCORRECT = 0x16, 209 IVD_INVALID_HANDLE_NULL = 0x17, 210 IVD_INVALID_API_CMD = 0x18, 211 IVD_UNSUPPORTED_API_CMD = 0x19, 212 IVD_MEM_REC_STRUCT_SIZE_INCORRECT = 0x1a, 213 IVD_DISP_FRM_ZERO_OP_BUFS = 0x1b, 214 IVD_DISP_FRM_OP_BUF_NULL = 0x1c, 215 IVD_DISP_FRM_ZERO_OP_BUF_SIZE = 0x1d, 216 IVD_DEC_FRM_BS_BUF_NULL = 0x1e, 217 IVD_SET_CONFG_INVALID_DEC_MODE = 0x1f, 218 IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH = 0x20, 219 IVD_RESET_FAILED = 0x21, 220 IVD_INIT_DEC_MEM_REC_OVERLAP_ERR = 0x22, 221 IVD_INIT_DEC_MEM_REC_BASE_NULL = 0x23, 222 IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR = 0x24, 223 IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE = 0x25, 224 IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE = 0x26, 225 IVD_DEC_NUMBYTES_INV = 0x27, 226 IVD_DEC_REF_BUF_NULL = 0x28, 227 IVD_DEC_FRM_SKIPPED = 0x29, 228 IVD_RES_CHANGED = 0x2a, 229 IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS = 0x300, 230 }IVD_ERROR_CODES_T; 231 232 233 /*****************************************************************************/ 234 /* Structure */ 235 /*****************************************************************************/ 236 /* structure for passing output buffers to codec during get display buffer */ 237 /* call */ 238 typedef struct { 239 240 /** 241 * number of output buffers 242 */ 243 UWORD32 u4_num_bufs; 244 245 /** 246 *list of pointers to output buffers 247 */ 248 UWORD8 *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS]; 249 250 /** 251 * sizes of each output buffer 252 */ 253 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 254 255 }ivd_out_bufdesc_t; 256 257 /*****************************************************************************/ 258 /* Initialize decoder */ 259 /*****************************************************************************/ 260 261 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_INIT */ 262 263 264 typedef struct { 265 /** 266 * u4_size of the structure 267 */ 268 UWORD32 u4_size; 269 270 /** 271 * e_cmd 272 */ 273 IVD_API_COMMAND_TYPE_T e_cmd; 274 275 /** 276 *no memrecords which are allocated on request of codec through fill mem records 277 */ 278 UWORD32 u4_num_mem_rec; 279 /** 280 * maximum height for which codec should be initialized 281 */ 282 UWORD32 u4_frm_max_wd; 283 /** 284 * maximum width for which codec should be initialized 285 */ 286 UWORD32 u4_frm_max_ht; 287 /** 288 * format in which codec has to give out frame data for display 289 */ 290 IV_COLOR_FORMAT_T e_output_format; 291 /** 292 * pointer to memrecord array, which contains allocated resources 293 */ 294 iv_mem_rec_t *pv_mem_rec_location; 295 }ivd_init_ip_t; 296 297 298 typedef struct { 299 /** 300 * u4_size of the structure 301 */ 302 UWORD32 u4_size; 303 304 /** 305 * u4_error_code 306 */ 307 UWORD32 u4_error_code; 308 }ivd_init_op_t; 309 310 311 /*****************************************************************************/ 312 /* Video Decode */ 313 /*****************************************************************************/ 314 315 316 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE */ 317 318 319 typedef struct { 320 /** 321 * u4_size of the structure 322 */ 323 UWORD32 u4_size; 324 325 /** 326 * e_cmd 327 */ 328 IVD_API_COMMAND_TYPE_T e_cmd; 329 330 /** 331 * u4_ts 332 */ 333 UWORD32 u4_ts; 334 335 /** 336 * u4_num_Bytes 337 */ 338 UWORD32 u4_num_Bytes; 339 340 /** 341 * pv_stream_buffer 342 */ 343 void *pv_stream_buffer; 344 345 /** 346 * output buffer desc 347 */ 348 ivd_out_bufdesc_t s_out_buffer; 349 350 }ivd_video_decode_ip_t; 351 352 353 typedef struct { 354 /** 355 * u4_size of the structure 356 */ 357 UWORD32 u4_size; 358 359 /** 360 * u4_error_code 361 */ 362 UWORD32 u4_error_code; 363 364 /** 365 * num_bytes_consumed 366 */ 367 UWORD32 u4_num_bytes_consumed; 368 369 /** 370 * pic_wd 371 */ 372 UWORD32 u4_pic_wd; 373 374 /** 375 * pic_ht 376 */ 377 UWORD32 u4_pic_ht; 378 379 /** 380 * pic_type 381 */ 382 IV_PICTURE_CODING_TYPE_T e_pic_type; 383 384 /** 385 * frame_decoded_flag 386 */ 387 UWORD32 u4_frame_decoded_flag; 388 389 /** 390 * new_seq 391 */ 392 UWORD32 u4_new_seq; 393 394 /** 395 * output_present 396 */ 397 UWORD32 u4_output_present; 398 399 /** 400 * progressive_frame_flag 401 */ 402 UWORD32 u4_progressive_frame_flag; 403 404 /** 405 * is_ref_flag 406 */ 407 UWORD32 u4_is_ref_flag; 408 409 /** 410 * output_format 411 */ 412 IV_COLOR_FORMAT_T e_output_format; 413 414 /** 415 * disp_frm_buf 416 */ 417 iv_yuv_buf_t s_disp_frm_buf; 418 419 /** 420 * fld_type 421 */ 422 IV_FLD_TYPE_T e4_fld_type; 423 424 /** 425 * ts 426 */ 427 UWORD32 u4_ts; 428 429 /** 430 * disp_buf_id 431 */ 432 UWORD32 u4_disp_buf_id; 433 }ivd_video_decode_op_t; 434 435 436 /*****************************************************************************/ 437 /* Get Display Frame */ 438 /*****************************************************************************/ 439 440 441 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME */ 442 443 typedef struct 444 { 445 /** 446 * u4_size of the structure 447 */ 448 UWORD32 u4_size; 449 450 /** 451 * e_cmd 452 */ 453 IVD_API_COMMAND_TYPE_T e_cmd; 454 455 /** 456 * output buffer desc 457 */ 458 ivd_out_bufdesc_t s_out_buffer; 459 460 }ivd_get_display_frame_ip_t; 461 462 463 typedef struct 464 { 465 /** 466 * u4_size of the structure 467 */ 468 UWORD32 u4_size; 469 470 /** 471 * error_code 472 */ 473 UWORD32 u4_error_code; 474 475 /** 476 * progressive_frame_flag 477 */ 478 UWORD32 u4_progressive_frame_flag; 479 480 /** 481 * pic_type 482 */ 483 IV_PICTURE_CODING_TYPE_T e_pic_type; 484 485 /** 486 * is_ref_flag 487 */ 488 UWORD32 u4_is_ref_flag; 489 490 /** 491 * output_format 492 */ 493 IV_COLOR_FORMAT_T e_output_format; 494 495 /** 496 * disp_frm_buf 497 */ 498 iv_yuv_buf_t s_disp_frm_buf; 499 500 /** 501 * fld_type 502 */ 503 IV_FLD_TYPE_T e4_fld_type; 504 505 /** 506 * ts 507 */ 508 UWORD32 u4_ts; 509 510 /** 511 * disp_buf_id 512 */ 513 UWORD32 u4_disp_buf_id; 514 }ivd_get_display_frame_op_t; 515 516 /*****************************************************************************/ 517 /* Set Display Frame */ 518 /*****************************************************************************/ 519 520 521 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */ 522 523 typedef struct 524 { 525 /** 526 * u4_size of the structure 527 */ 528 UWORD32 u4_size; 529 530 /** 531 * cmd 532 */ 533 IVD_API_COMMAND_TYPE_T e_cmd; 534 535 /** 536 * num_disp_bufs 537 */ 538 UWORD32 num_disp_bufs; 539 540 /** 541 * output buffer desc 542 */ 543 ivd_out_bufdesc_t s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS]; 544 545 }ivd_set_display_frame_ip_t; 546 547 548 typedef struct 549 { 550 /** 551 * u4_size of the structure 552 */ 553 UWORD32 u4_size; 554 555 /** 556 * error code 557 */ 558 UWORD32 u4_error_code; 559 }ivd_set_display_frame_op_t; 560 561 562 /*****************************************************************************/ 563 /* Release Display Frame */ 564 /*****************************************************************************/ 565 566 567 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */ 568 569 typedef struct 570 { 571 /** 572 * u4_size of the structure 573 */ 574 UWORD32 u4_size; 575 576 /** 577 * e_cmd 578 */ 579 IVD_API_COMMAND_TYPE_T e_cmd; 580 581 /** 582 * disp_buf_id 583 */ 584 UWORD32 u4_disp_buf_id; 585 }ivd_rel_display_frame_ip_t; 586 587 588 typedef struct 589 { 590 /** 591 * u4_size of the structure 592 */ 593 UWORD32 u4_size; 594 595 /** 596 * error code 597 */ 598 UWORD32 u4_error_code; 599 }ivd_rel_display_frame_op_t; 600 601 /*****************************************************************************/ 602 /* Video control Flush */ 603 /*****************************************************************************/ 604 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 605 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_FLUSH */ 606 607 608 609 typedef struct { 610 /** 611 * u4_size of the structure 612 */ 613 UWORD32 u4_size; 614 615 /** 616 * cmd 617 */ 618 IVD_API_COMMAND_TYPE_T e_cmd; 619 620 /** 621 * sub_cmd 622 */ 623 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 624 }ivd_ctl_flush_ip_t; 625 626 627 typedef struct { 628 /** 629 * u4_size of the structure 630 */ 631 UWORD32 u4_size; 632 633 /** 634 * error code 635 */ 636 UWORD32 u4_error_code; 637 }ivd_ctl_flush_op_t; 638 639 /*****************************************************************************/ 640 /* Video control reset */ 641 /*****************************************************************************/ 642 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 643 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_RESET */ 644 645 646 typedef struct { 647 /** 648 * u4_size of the structure 649 */ 650 UWORD32 u4_size; 651 652 /** 653 * cmd 654 */ 655 IVD_API_COMMAND_TYPE_T e_cmd; 656 657 /** 658 * sub_cmd 659 */ 660 661 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 662 }ivd_ctl_reset_ip_t; 663 664 665 typedef struct { 666 /** 667 * u4_size of the structure 668 */ 669 UWORD32 u4_size; 670 671 /** 672 * error code 673 */ 674 UWORD32 u4_error_code; 675 }ivd_ctl_reset_op_t; 676 677 678 /*****************************************************************************/ 679 /* Video control Set Params */ 680 /*****************************************************************************/ 681 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 682 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS */ 683 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT */ 684 685 686 687 typedef struct { 688 /** 689 * u4_size of the structure 690 */ 691 UWORD32 u4_size; 692 693 /** 694 * cmd 695 */ 696 IVD_API_COMMAND_TYPE_T e_cmd; 697 698 /** 699 * sub_cmd 700 */ 701 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 702 703 /** 704 * vid_dec_mode 705 */ 706 IVD_VIDEO_DECODE_MODE_T e_vid_dec_mode; 707 708 /** 709 * disp_wd 710 */ 711 UWORD32 u4_disp_wd; 712 713 /** 714 * frm_skip_mode 715 */ 716 IVD_FRAME_SKIP_MODE_T e_frm_skip_mode; 717 718 /** 719 * frm_out_mode 720 */ 721 IVD_DISPLAY_FRAME_OUT_MODE_T e_frm_out_mode; 722 }ivd_ctl_set_config_ip_t; 723 724 725 typedef struct { 726 /** 727 * u4_size of the structure 728 */ 729 UWORD32 u4_size; 730 731 /** 732 * u4_error_code 733 */ 734 UWORD32 u4_error_code; 735 }ivd_ctl_set_config_op_t; 736 737 /*****************************************************************************/ 738 /* Video control:Get Buf Info */ 739 /*****************************************************************************/ 740 741 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 742 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO */ 743 744 745 typedef struct { 746 /** 747 * u4_size of the structure 748 */ 749 UWORD32 u4_size; 750 751 /** 752 * e_cmd 753 */ 754 IVD_API_COMMAND_TYPE_T e_cmd; 755 756 /** 757 * sub_cmd 758 */ 759 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 760 }ivd_ctl_getbufinfo_ip_t; 761 762 763 typedef struct { 764 /** 765 * u4_size of the structure 766 */ 767 UWORD32 u4_size; 768 769 /** 770 * error code 771 */ 772 UWORD32 u4_error_code; 773 774 /** 775 * no of display buffer sets required by codec 776 */ 777 UWORD32 u4_num_disp_bufs; 778 779 /** 780 * no of input buffers required for codec 781 */ 782 UWORD32 u4_min_num_in_bufs; 783 784 /** 785 * no of output buffers required for codec 786 */ 787 UWORD32 u4_min_num_out_bufs; 788 789 /** 790 * sizes of each input buffer required 791 */ 792 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 793 794 /** 795 * sizes of each output buffer required 796 */ 797 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 798 }ivd_ctl_getbufinfo_op_t; 799 800 801 /*****************************************************************************/ 802 /* Video control:Getstatus Call */ 803 /*****************************************************************************/ 804 805 806 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 807 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS */ 808 809 810 typedef struct { 811 /** 812 * u4_size of the structure 813 */ 814 UWORD32 u4_size; 815 816 /** 817 * cmd 818 */ 819 IVD_API_COMMAND_TYPE_T e_cmd; 820 821 /** 822 * sub_cmd 823 */ 824 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 825 }ivd_ctl_getstatus_ip_t; 826 827 828 typedef struct { 829 830 /** 831 * u4_size of the structure 832 */ 833 UWORD32 u4_size; 834 835 /** 836 * error code 837 */ 838 UWORD32 u4_error_code; 839 840 /** 841 * no of display buffer sets required by codec 842 */ 843 UWORD32 u4_num_disp_bufs; 844 845 /** 846 * u4_pic_ht 847 */ 848 UWORD32 u4_pic_ht; 849 850 /** 851 * u4_pic_wd 852 */ 853 UWORD32 u4_pic_wd; 854 855 /** 856 * frame_rate 857 */ 858 UWORD32 u4_frame_rate; 859 860 /** 861 * u4_bit_rate 862 */ 863 UWORD32 u4_bit_rate; 864 865 /** 866 * content_type 867 */ 868 IV_CONTENT_TYPE_T e_content_type; 869 870 /** 871 * output_chroma_format 872 */ 873 IV_COLOR_FORMAT_T e_output_chroma_format; 874 875 /** 876 * no of input buffers required for codec 877 */ 878 UWORD32 u4_min_num_in_bufs; 879 880 /** 881 * no of output buffers required for codec 882 */ 883 UWORD32 u4_min_num_out_bufs; 884 885 /** 886 * sizes of each input buffer required 887 */ 888 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 889 890 /** 891 * sizes of each output buffer required 892 */ 893 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 894 }ivd_ctl_getstatus_op_t; 895 896 897 /*****************************************************************************/ 898 /* Video control:Get Version Info */ 899 /*****************************************************************************/ 900 901 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 902 /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION */ 903 904 905 typedef struct { 906 /** 907 * u4_size of the structure 908 */ 909 UWORD32 u4_size; 910 911 /** 912 * cmd 913 */ 914 IVD_API_COMMAND_TYPE_T e_cmd; 915 916 /** 917 * sub_cmd 918 */ 919 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 920 921 /** 922 * pv_version_buffer 923 */ 924 void *pv_version_buffer; 925 926 /** 927 * version_buffer_size 928 */ 929 UWORD32 u4_version_buffer_size; 930 }ivd_ctl_getversioninfo_ip_t; 931 932 933 typedef struct { 934 /** 935 * u4_size of the structure 936 */ 937 UWORD32 u4_size; 938 939 /** 940 * error code 941 */ 942 UWORD32 u4_error_code; 943 }ivd_ctl_getversioninfo_op_t; 944 945 #endif /* __IVD_H__ */ 946 947