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