shithub: hantro9

ref: c6af5fbe1f560644ce362b77c13aecd1412f9fbf
dir: /g1regs.h/

View raw version
enum {
	/* SWREG1 */
	SW_DEC_TIMEOUT = 1<<18,
	SW_DEC_ERROR_INT = 1<<16,
	SW_DEC_BUFFER_INT = 1<<14,
	SW_DEC_RDY_INT = 1<<12,
	SW_DEC_ABORT_INT = 1<<11,
	SW_DEC_IRQ = 1<<8,
	SW_DEC_ABORT_E = 1<<5,
	SW_DEC_IRQ_DIS = 1<<4,
	SW_DEC_E = 1<<0,

	/* SWREG2 */
	SW_DEC_TIMEOUT_E = 1<<23, /* enable timeouts */
	SW_DEC_STRSWAP32_E = 1<<22, /* = 1 (64-bit) */
	SW_DEC_STRENDIAN_E = 1<<21, /* = 1 (little endian) */
	SW_DEC_INSWAP32_E = 1<<20, /* = 1 (64-bit) */
	SW_DEC_OUTSWAP32_E = 1<<19, /* = 1 (64-bit) */
	SW_DEC_CLK_GATE_E = 1<<10, /* clock gate (0=gated 1=running) */
	SW_DEC_IN_ENDIAN = 1<<9, /* = 1 (little endian) */
	SW_DEC_OUT_ENDIAN = 1<<8, /* = 1 (little endian) */
	SW_DEC_MAX_BURST = 0, /* = 16 for AIX is the max */

	/* SWREG3 */
	SW_PIC_INTERLACE_E = 1<<23, /* = !sps.frame_mbs_only_flag &&
	                             *   (sps.mb_adaptive_frame_field_flag || pic.field_pic_flag) */
	SW_PIC_FIELDMODE_E = 1<<22, /* = !sps.frame_mbs_only_flag && pic.field_pic_flag */
	SW_PIC_TOPFIELD_E = 1<<19, /* = !sps.frame_mbs_only_flag && !pic.bottom_field_flag */
	SW_WRITE_MVS_E = 1<<12, /* = sps.profile_idc > 66 && sps.nal_ref_idc != 0 */
	SW_SEQ_MBAFF_E = 1<<10, /* = sps.mb_adaptive_frame_field_flag */
	SW_PICORD_COUNT_E = 1<<9, /* = sps.profile_idc > 66 (higher than baseline profile) */
	SW_DEC_AXI_WR_ID = 0, /* AIX id, 0xff for autoalloc */

	/* SWREG4 */
	SW_PIC_MB_WIDTH = 23, /* = sps.pic_width_in_mbs_minus1 + 1 */
	SW_PIC_MB_HEIGHT_P = 11, /* = sps.pic_height_in_map_units_minus1 + 1 */
	SW_REF_FRAMES = 0, /* = sps.max_num_ref_frames */

	/* SWREG5 */
	SW_STRM_START_BIT = 26, /* = 0 (always starting at byte boundary) */
	SW_TYPE1_QUANT_E = 1<<24, /* = pps.pic_scaling_matrix_present_flag */
	SW_CH_QP_OFFSET = 19, /* = pps.chroma_qp_index_offset */
	SW_CH_QP_OFFSET2 = 14, /* = pps.second_chroma_qp_index_offset */
	SW_FIELDPIC_FLAG_E = 1<<0, /* = !sps.frame_mbs_only_flag */

	/* SWREG6 */
	SW_START_CODE_E = 1<<31, /* = 1 */
	SW_INIT_QP = 25, /* = pps.pic_init_qp_minus26 + 26 */
	SW_STREAM_LEN = 0, /* = size of the available input in bytes */

	/* SWREG7 */
	SW_CABAC_E = 1<<31, /* = pps.entropy_coding_mode_flag */
	SW_BLACKWHITE_E = 1<<30, /* = sps.chroma_format_idc == 0 && sps.profile_idc >= 100 (>= high profile) */
	SW_DIR_8X8_INFER_E = 1<<29, /* = sps.direct_8x8_inference_flag */
	SW_WEIGHT_PRED_E = 1<<28, /* = pps.weighted_pred_flag */
	SW_WEIGHT_BIPR_IDC = 26, /* = pps.weighted_bipred_idc */
	SW_FRAMENUM_LEN = 16, /* = sps.log2_max_frame_num_minus4 + 4 */
	SW_FRAMENUM = 0, /* = pic.frame_num */

	/* SWREG8 */
	SW_CONST_INTRA_E = 1<<31, /* = pps.constrained_intra_pred_flag */
	SW_FILT_CTRL_PRES = 1<<30, /* = pps.deblocking_filter_control_present_flag */
	SW_RDPIC_CNT_PRES = 1<<29, /* = pps.redundant_pic_cnt_present_flag */
	SW_8X8TRANS_FLAG_E = 1<<28, /* = pps.transform_8x8_mode_flag */
	SW_REFPIC_MK_LEN = 17, /* = size (in bits) of pic.dec_ref_pic_marking */
	SW_IDR_PIC_E = 1<<16, /* = pic.nal_unit_type == 5 (IDR slice) */
	SW_IDR_PIC_ID = 0, /* = pic.idr_pic_id  */

	/* SWREG9 */
	SW_PPS_ID = 24, /* = pps.pic_parameter_set_id */
	SW_REFIDX1_ACTIVE = 19, /* = pps.num_ref_idx_l1_default_active_minus1 + 1 */
	SW_REFIDX0_ACTIVE = 14, /* = pps.num_ref_idx_l0_default_active_minus1 + 1 */
	SW_POC_LENGTH = 0, /* = sum of sizes (in bits) of:
	                    * 1) pic.pic_order_cnt_lsb
	                    * 2) pic.delta_pic_order_cnt_bottom
	                    * 3) pic.delta_pic_order_cnt0
	                    * 4) pic.delta_pic_order_cnt1
	                    */

	/* SWREG12 */
	SW_RLC_VLC_BASE = 0, /* current pointer to the stream */

	/* SWREG13 */
	SW_DEC_OUT_BASE = 0, /* output buffer */

	/* SWREG14 ... SWREG29 */
	SW_REFERx_BASE = 0,
	SW_REFERx_FIELD_E = 1<<1,
	SW_REFERx_TOPC_E = 1<<0,

	/* SWREG30 ... SWREG37 */
	SW_REFERx_NBR_NEXT = 16,

	/* SWREG38 */
	SW_REFER_LTERM_E = 0, /* long term flag for ref pic id
	                       * 31:15 set to 1 if frame is being decoded, 31 is picid=0, 30 picid=1 etc
	                       * 31:0  set to 1 if field decode, 31 is picid=0 top, 30 picid=0 *bottom* etc
	                       */

	/* SWREG39 */
	SW_REFER_VALID_E = 0, /* valid flag for ref pic id ^ */

	/* SWREG40 */
	SW_QTABLE_BASE = 0, /* pointer to
	                     * 1) CABAC init data (pps.entropy_coding_mode_flag != 0)
	                     *    (see cabac_gen.h)
	                     * 2) picture order count table (sps.profile_idc > 66)
	                     *    (see 8.2.1.1 - 8.2.1.3)
	                     *    alternating top and bottom field order counts
	                     *    32 + 2 - 32-bit ints
	                     * 3) scaling lists (sps.scaling_matrix_present_flag != 0 ||
	                     *                   pps.pic_scaling_matrix_present_flag != 0)
	                     *    4x4     + 8x8     - after inverse scanning process (8.5.6)
	                     *    [6][16] + [6][64] - [3][2][1][0][7][6][5][4]... (little endia, 64bit)
	                     */

	/* SWREG41 */
	SW_DIR_MV_BASE = 0, /* destination for motion vector data (sps.profile_idc > 66 && sps.nal_ref_idc != 0)
	                     * max size is 416 bytes/MB (that's a bit more than 3Mb for full hd frame)
	                     */

	/* SWREG42 ... SWREG47 */
	SW_BINIT_RLIST_Bx = 5,
	SW_BINIT_RLIST_Fx = 0,

	/* SWREG49 */
	SW_PRED_BC_TAP_0_0 = 22, /* = 1 (fixed 6-tap filter values) */
	SW_PRED_BC_TAP_0_1 = 12, /* = -5 ^ */
	SW_PRED_BC_TAP_0_2 = 2,  /* = 20 ^ */

	/* SWREG58 */
	SW_DEC_MULTICORE_E = 1<<30, /* is this even usable? */
	SW_DEC_WRITESTAT_E = 1<<29,
};