| /****************************************************************************** |
| * |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ***************************************************************************** |
| * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| */ |
| |
| #ifndef __IMPEG2_DEFS_H__ |
| #define __IMPEG2_DEFS_H__ |
| |
| #include <assert.h> |
| |
| /****************************************************************************** |
| * MPEG2 Start code and other code definitions |
| *******************************************************************************/ |
| #define START_CODE_PREFIX 0x000001 |
| #define SEQUENCE_HEADER_CODE 0x000001B3 |
| #define EXTENSION_START_CODE 0x000001B5 |
| #define USER_DATA_START_CODE 0x000001B2 |
| #define GOP_START_CODE 0x000001B8 |
| #define PICTURE_START_CODE 0x00000100 |
| #define SEQUENCE_END_CODE 0x000001B7 |
| #define RESERVED_START_CODE 0x000001B0 |
| #define MB_ESCAPE_CODE 0x008 |
| |
| /****************************************************************************** |
| * MPEG2 Length of various codes definitions |
| *******************************************************************************/ |
| #define START_CODE_LEN 32 |
| #define START_CODE_PREFIX_LEN 24 |
| #define MB_ESCAPE_CODE_LEN 11 |
| #define EXT_ID_LEN 4 |
| #define MB_QUANT_SCALE_CODE_LEN 5 |
| #define MB_DCT_TYPE_LEN 1 |
| #define MB_MOTION_TYPE_LEN 2 |
| #define BYTE_LEN 8 |
| |
| /****************************************************************************** |
| * MPEG1 code definitions |
| *******************************************************************************/ |
| #define MB_STUFFING_CODE 0x00F |
| |
| /****************************************************************************** |
| * MPEG1 Length of various codes definitions |
| *******************************************************************************/ |
| #define MB_STUFFING_CODE_LEN 11 |
| |
| /****************************************************************************** |
| * MPEG2 MB definitions |
| *******************************************************************************/ |
| #define MPEG2_INTRA_MB 0x04 |
| #define MPEG2_INTRAQ_MB 0x44 |
| #define MPEG2_INTER_MB 0x28 |
| #define MB_MOTION_BIDIRECT 0x30 |
| #define MB_INTRA_OR_PATTERN 0x0C |
| |
| /****************************************************************************** |
| * Tools definitions |
| *******************************************************************************/ |
| #define SPATIAL_SCALABILITY 0x01 |
| #define TEMPORAL_SCALABILITY 0x03 |
| |
| /****************************************************************************** |
| * Extension IDs definitions |
| *******************************************************************************/ |
| #define SEQ_DISPLAY_EXT_ID 0x02 |
| #define SEQ_SCALABLE_EXT_ID 0x05 |
| #define QUANT_MATRIX_EXT_ID 0x03 |
| #define COPYRIGHT_EXT_ID 0x04 |
| #define PIC_DISPLAY_EXT_ID 0x07 |
| #define PIC_SPATIAL_SCALABLE_EXT_ID 0x09 |
| #define PIC_TEMPORAL_SCALABLE_EXT_ID 0x0A |
| #define CAMERA_PARAM_EXT_ID 0x0B |
| #define ITU_T_EXT_ID 0x0C |
| /****************************************************************************** |
| * Extension IDs Length definitions |
| *******************************************************************************/ |
| #define CAMERA_PARAMETER_EXTENSION_LEN 377 |
| #define COPYRIGHT_EXTENSION_LEN 88 |
| #define GROUP_OF_PICTURE_LEN 59 |
| |
| |
| /****************************************************************************** |
| * MPEG2 Picture structure definitions |
| *******************************************************************************/ |
| #define TOP_FIELD 1 |
| #define BOTTOM_FIELD 2 |
| #define FRAME_PICTURE 3 |
| |
| /****************************************************************************** |
| * MPEG2 Profile definitions |
| *******************************************************************************/ |
| #define MPEG2_SIMPLE_PROFILE 0x05 |
| #define MPEG2_MAIN_PROFILE 0x04 |
| |
| /****************************************************************************** |
| * MPEG2 Level definitions |
| *******************************************************************************/ |
| #define MPEG2_LOW_LEVEL 0x0a |
| #define MPEG2_MAIN_LEVEL 0x08 |
| |
| /****************************************************************************** |
| * MPEG2 Prediction types |
| *******************************************************************************/ |
| #define FIELD_PRED 0 |
| #define FRAME_PRED 1 |
| #define DUAL_PRED 2 |
| #define RESERVED -1 |
| #define MC_16X8_PRED 3 |
| |
| /***************************************************************************** |
| * MPEG2 Motion vector format |
| ******************************************************************************/ |
| #define FIELD_MV 0 |
| #define FRAME_MV 1 |
| |
| /******************************************************************************/ |
| /* General Video related definitions */ |
| /******************************************************************************/ |
| |
| #define BLK_SIZE 8 |
| #define NUM_COEFFS ((BLK_SIZE)*(BLK_SIZE)) |
| #define LUMA_BLK_SIZE (2 * (BLK_SIZE)) |
| #define CHROMA_BLK_SIZE (BLK_SIZE) |
| #define BLOCKS_IN_MB 6 |
| #define MB_SIZE 16 |
| #define MB_CHROMA_SIZE 8 |
| #define NUM_PELS_IN_BLOCK 64 |
| #define NUM_LUMA_BLKS 4 |
| #define NUM_CHROMA_BLKS 2 |
| #define MAX_COLR_COMPS 3 |
| #define Y_LUMA 0 |
| #define U_CHROMA 1 |
| #define V_CHROMA 2 |
| #define MB_LUMA_MEM_SIZE ((MB_SIZE) * (MB_SIZE)) |
| #define MB_CHROMA_MEM_SIZE ((MB_SIZE/2) * (MB_SIZE/2)) |
| |
| #define BITS_IN_INT 32 |
| /******************************************************************************/ |
| /* MPEG2 Motion compensation related definitions */ |
| /******************************************************************************/ |
| #define REF_FRM_MB_WIDTH 18 |
| #define REF_FRM_MB_HEIGHT 18 |
| #define REF_FLD_MB_HEIGHT 10 |
| #define REF_FLD_MB_WIDTH 18 |
| |
| /******************************************************************************/ |
| /* Maximum number of bits per MB */ |
| /******************************************************************************/ |
| #define I_MB_BIT_SIZE 90 |
| #define P_MB_BIT_SIZE 90 |
| #define B_MB_BIT_SIZE 150 |
| |
| /******************************************************************************/ |
| /* Aspect ratio related definitions */ |
| /******************************************************************************/ |
| #define MPG1_NTSC_4_3 0x8 |
| #define MPG1_PAL_4_3 0xc |
| #define MPG1_NTSC_16_9 0x6 |
| #define MPG1_PAL_16_9 0x3 |
| #define MPG1_1_1 0x1 |
| |
| #define MPG2_4_3 0x2 |
| #define MPG2_16_9 0x3 |
| #define MPG2_1_1 0x1 |
| |
| /******************************************************************************/ |
| /* Inverse Quantizer Output range */ |
| /******************************************************************************/ |
| #define IQ_OUTPUT_MAX 2047 |
| #define IQ_OUTPUT_MIN -2048 |
| |
| /******************************************************************************/ |
| /* IDCT Output range */ |
| /******************************************************************************/ |
| #define IDCT_OUTPUT_MAX 255 |
| #define IDCT_OUTPUT_MIN -256 |
| |
| /******************************************************************************/ |
| /* Output pixel range */ |
| /******************************************************************************/ |
| #define PEL_VALUE_MAX 255 |
| #define PEL_VALUE_MIN 0 |
| |
| /******************************************************************************/ |
| /* inv scan types */ |
| /******************************************************************************/ |
| #define ZIG_ZAG_SCAN 0 |
| #define VERTICAL_SCAN 1 |
| |
| /******************************************************************************/ |
| /* Related VLD codes */ |
| /******************************************************************************/ |
| #define ESC_CODE_VALUE 0x0058 |
| #define EOB_CODE_VALUE 0x07d0 |
| |
| #define END_OF_BLOCK 0x01 |
| #define ESCAPE_CODE 0x06 |
| |
| #define END_OF_BLOCK_ZERO 0x01ff |
| #define END_OF_BLOCK_ONE 0x01ff |
| |
| /******************** Idct Specific ***************/ |
| #define TRANS_SIZE_8 8 |
| #define IDCT_STG1_SHIFT 12 |
| #define IDCT_STG2_SHIFT 16 |
| |
| #define IDCT_STG1_ROUND ((1 << IDCT_STG1_SHIFT) >> 1) |
| #define IDCT_STG2_ROUND ((1 << IDCT_STG2_SHIFT) >> 1) |
| |
| |
| /****************************************************************************** |
| * Sample Version Definitions |
| *******************************************************************************/ |
| #define SAMPLE_VERS_MAX_FRAMES_DECODE 999 |
| |
| #define MAX_FRAME_BUFFER 7 |
| |
| /* vop coding type */ |
| typedef enum |
| { |
| I_PIC = 1, |
| P_PIC, |
| B_PIC, |
| D_PIC |
| } e_pic_type_t; |
| |
| typedef enum |
| { |
| MPEG_2_VIDEO, |
| MPEG_1_VIDEO |
| } e_video_type_t; |
| |
| typedef enum |
| { |
| FORW, |
| BACK, |
| BIDIRECT |
| } e_pred_direction_t; |
| |
| typedef enum |
| { |
| TOP, |
| BOTTOM |
| } e_field_t; |
| |
| /* Motion vectors (first/second) */ |
| enum |
| { |
| FIRST, |
| SECOND, |
| THIRD, |
| FOURTH |
| }; |
| |
| enum |
| { |
| MV_X, |
| MV_Y |
| }; |
| |
| /* Enumeration defining the various kinds of interpolation possible in |
| motion compensation */ |
| typedef enum |
| { |
| FULL_XFULL_Y, |
| FULL_XHALF_Y, |
| HALF_XFULL_Y, |
| HALF_XHALF_Y |
| } e_sample_type_t; |
| typedef enum |
| { |
| /* Params of the reference buffer used as input to MC */ |
| /* frame prediction in P frame picture */ |
| MC_FRM_FW_OR_BK_1MV, |
| /* field prediction in P frame picture */ |
| MC_FRM_FW_OR_BK_2MV, |
| /* frame prediction in B frame picture */ |
| MC_FRM_FW_AND_BK_2MV, |
| /* field prediction in B frame picture */ |
| MC_FRM_FW_AND_BK_4MV, |
| /* dual prime prediction in P frame picture */ |
| MC_FRM_FW_DUAL_PRIME_1MV, |
| /* frame prediction in P field picture */ |
| MC_FLD_FW_OR_BK_1MV, |
| /* 16x8 prediction in P field picture */ |
| MC_FLD_FW_OR_BK_2MV, |
| /* field prediction in B field picture */ |
| MC_FLD_FW_AND_BK_2MV, |
| /* 16x8 prediction in B field picture */ |
| MC_FLD_FW_AND_BK_4MV, |
| /* dual prime prediction in P field picture */ |
| MC_FLD_FW_DUAL_PRIME_1MV, |
| } e_mb_type_t; |
| |
| #endif /* __IMPEG2_DEFS_H__ */ |
| |