/*
* Kfir.h
*/
#ifndef _Kfir_H_
#define _Kfir_H_
#define KFIR_NEW_AUDIO_TABLE 1
#ifndef KFIR_NEW_AUDIO_TABLE
#pragma message( "If you want to compile the project with new microcode," )
#pragma message( "please define preprocessor variable KFIR_NEW_AUDIO_TABLE" )
#endif
#define KFIR_D_PAL_FRAME_RATE 25
#define KFIR_D_PAL_MB_WIDTH 44
#define KFIR_D_PAL_MB_HEIGHT 36
#define KFIR_D_NTSC_FRAME_RATE 30
#define KFIR_D_NTSC_MB_WIDTH 44
#define KFIR_D_NTSC_MB_HEIGHT 30
#define KFIR_AUDIO_INPUT_BASE_LB_ADR 0x02000000 // May be changed.
// Pel aspect ratio
#define KFIR_ADR_ASPECT_RATIO 0 // R/W
#define KFIR_D_ASP_RAT_SQUARE 1
#define KFIR_D_ASP_RAT_4_3 2
#define KFIR_D_ASP_RAT_16_9 3
#define KFIR_D_ASP_RAT_2_11__1 4
//Frame rate code
#define KFIR_ADR_FRAME_RATE_CODE 1*4 // R/W
#define KFIR_D_FRAME_RATE_23_976 1
#define KFIR_D_FRAME_RATE_24 2
#define KFIR_D_FRAME_RATE_25 3
#define KFIR_D_FRAME_RATE_29_97 4
#define KFIR_D_FRAME_RATE_30 5
//Color primaries
#define KFIR_ADR_COLOR_PRIM 2*4 // R/W
#define KFIR_D_COLOR_PRIM_ITUR_709 1
#define KFIR_D_COLOR_PRIM_UNSPECIFIED_2 2
#define KFIR_D_COLOR_PRIM_UNSPECIFIED_3 3
#define KFIR_D_COLOR_PRIM_ITUR_ITUR_624_4M 4
#define KFIR_D_COLOR_PRIM_ITUR_ITUR_624_4BG 5
#define KFIR_D_COLOR_PRIM_ITUR_SMPTE_170M 6
#define KFIR_D_COLOR_PRIM_ITUR_SMPTE_240M 7
// Transfer characteristics
#define KFIR_ADR_TRANSFER_CHAR 3*4 // R/W
#define KFIR_D_TRANSFER_CHAR_ITUR_709 1
#define KFIR_D_TRANSFER_CHAR_UNSPECIFIED_2 2
#define KFIR_D_TRANSFER_CHAR_UNSPECIFIED_3 3
#define KFIR_D_TRANSFER_CHAR_ITUR_624_4M 4
#define KFIR_D_TRANSFER_CHAR_ITUR_624_4BG 5
#define KFIR_D_TRANSFER_CHAR_SMPTE_170M 6
#define KFIR_D_TRANSFER_CHAR_SMPTE_240M 7
#define KFIR_D_TRANSFER_CHAR_LINEAR 8
//Matrix coefficients
#define KFIR_ADR_MATRIX_COEFF 4*4 // R/W
#define KFIR_D_MATRIX_COEFF_ITUR 709 1
#define KFIR_D_MATRIX_COEFF_UNSPECIFIED_2 2
#define KFIR_D_MATRIX_COEFF_UNSPECIFIED_3 3
#define KFIR_D_MATRIX_COEFF_FCC 4
#define KFIR_D_MATRIX_COEFF_ITUR_624_4BG 5
#define KFIR_D_MATRIX_COEFF_SMPTE_170M 6
#define KFIR_D_MATRIX_COEFF_SMPTE_240M 7
// 8 least significant bits of the bit rate, in units of 400 bits/sec
#define KFIR_ADR_BIT_RATE_0 5*4 // R/W
// 8 intern significant bits of the bit rate, in units of 400 bits/sec
#define KFIR_ADR_BIT_RATE_1 6*4 // R/W
// 8 most significant bits of the bit rate, in units of 400 bits/sec
#define KFIR_ADR_BIT_RATE_2 7*4 // R/W
//16 least significant bits of VBF buffer size, in units of 16 KBits
#define KFIR_ADR_VBF_BUFFER_SIZE 8*4 // R/W
// Progressive sequence
#define KFIR_ADR_PROGRESSIVE_SEQ 9*4 // R/W
#define KFIR_D_PROGRESSIVE_SEQ_OFF 0
#define KFIR_D_PROGRESSIVE_SEQ_ON 1
// Progressive frame
#define KFIR_ADR_PROGRESSIVE_FRAME 10*4 // R/W
#define KFIR_D_PROGRESSIVE_FRAME_OFF 0
#define KFIR_D_PROGRESSIVE_FRAME_ON 1
// Intra DC precision
#define KFIR_ADR_INTRA_DC_PRECISION 11*4 // R/W
#define KFIR_D_INTRA_DC_PRECISION_8_BIT 0
#define KFIR_D_INTRA_DC_PRECISION_9_BIT 1
#define KFIR_D_INTRA_DC_PRECISION_10_BIT 2
// Intra VLC format for I picture (selects B14/B15)
#define KFIR_ADR_INTRA_VLC_FORMAT_I 12*4 // R/W
#define KFIR_D_INTRA_VLC_FORMAT_I_B14 0
#define KFIR_D_INTRA_VLC_FORMAT_I_B15 1
// Intra VLC format for P picture (selects B14/B15)
#define KFIR_ADR_INTRA_VLC_FORMAT_P 13*4 // R/W
#define KFIR_D_INTRA_VLC_FORMAT_P_B14 0
#define KFIR_D_INTRA_VLC_FORMAT_P_B15 1
// Intra VLC format for B picture (selects B14/B15)
#define KFIR_ADR_INTRA_VLC_FORMAT_B 14*4 // R/W
#define KFIR_D_INTRA_VLC_FORMAT_B_B14 0
#define KFIR_D_INTRA_VLC_FORMAT_B_B15 1
// Alternate scan for I picture (selects alternate or zigzag scans)
#define KFIR_ADR_ALT_SCAN_I 15*4 // R/W
#define KFIR_D_ALT_SCAN_I_ZIGZAG 0
#define KFIR_D_ALT_SCAN_I_ALTERNATE 1
// Alternate scan for P picture (selects alternate or zigzag scans)
#define KFIR_ADR_ALT_SCAN_P 16*4 // R/W
#define KFIR_D_ALT_SCAN_P_ZIGZAG 0
#define KFIR_D_ALT_SCAN_P_ALTERNATE 1
// Alternate scan for B picture (selects alternate or zigzag scans)
#define KFIR_ADR_ALT_SCAN_B 17*4 // R/W
#define KFIR_D_ALT_SCAN_B_ZIGZAG 0
#define KFIR_D_ALT_SCAN_B_ALTERNATE 1
// Frame prediction frame DCT for I picture
#define KFIR_ADR_FRAME_PRED_FRAME_DCT_I 18*4 // R/W
#define KFIR_D_FRAME_PRED_FRAME_DCT_I_FIELD_FRAME 0
#define KFIR_D_FRAME_PRED_FRAME_DCT_I_FRAME 1
// Frame prediction frame DCT for P picture
#define KFIR_ADR_FRAME_PRED_FRAME_DCT_P 19*4 // R/W
#define KFIR_D_FRAME_PRED_FRAME_DCT_P_FIELD_FRAME 0
#define KFIR_D_FRAME_PRED_FRAME_DCT_P_FRAME 1
// Frame prediction frame DCT for B picture
#define KFIR_ADR_FRAME_PRED_FRAME_DCT_B 20*4 // R/W
#define KFIR_D_FRAME_PRED_FRAME_DCT_B_FIELD_FRAME 0
#define KFIR_D_FRAME_PRED_FRAME_DCT_B_FRAME 1
// Initial Average Activity (TM5), bits [15:0]
#define KFIR_ADR_AVG_ACT 21*4 // R/W
#define KFIR_D_AVG_ACT 400
// Initial global complexity for I picture (TM5), bits [15:0]
#define KFIR_ADR_X_I 22*4 // R/W
// Initial global complexity for P picture (TM5), bits [15:0]
#define KFIR_ADR_X_P 23*4 // R/W
// Initial global complexity for B picture (TM5), bits [15:0]
#define KFIR_ADR_X_B 24*4 // R/W
// Initial virtual buffer fullness for I picture (TM5), bits [15:0]
#define KFIR_ADR_D0_I_0 25*4 // R/W
// Initial virtual buffer fullness for P picture (TM5), bits [15:0]
#define KFIR_ADR_D0_P_0 26*4 // R/W
// Initial virtual buffer fullness for B picture (TM5), bits [15:0]
#define KFIR_ADR_D0_B_0 27*4 // R/W
// Initial virtual buffer fullness for I picture (TM5), bits [31:16]
#define KFIR_ADR_D0_I_1 28*4 // R/W
// Initial virtual buffer fullness for P picture (TM5), bits [31:16]
#define KFIR_ADR_D0_P_1 29*4 // R/W
// Initial virtual buffer fullness for B picture (TM5), bits [31:16]
#define KFIR_ADR_D0_B_1 30*4 // R/W
// Intra/Non Intra threshold, bits [9:0]
#define KFIR_ADR_INTRAD 31*4 // R/W
// default=9*64
// Minimal target bits per picture, bits [15:0]
#define KFIR_ADR_TMIN 32*4 // R/W
// floor(bit_rate/(4.0*frame_rate)+0.5)/4)
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_R2 33*4 // R/W
// (int) 31*(1<<22)/r
// MB_WIDTH, bits [7:0]
#define KFIR_ADR_MB_WIDTH 34*4 // R/W
// Parameter for internal use, bits [7:0]
// (mb_width)
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_RMBW 35*4 // R/W
// ((1<<16)/(mb_width*mb_height))
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_RMB 36*4 // R/W
// ((1<<16)/(mb_width*mb_height))
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_GETB 37*4 // R/W
// (int) (90000/(bit_rate>>13))
// A constant for internal use, bits [15:0]
#define KFIR_ADR_C1 38*4 // R/W
// ((int) (256*1.4))
// A constant for internal use, bits [15:0]
#define KFIR_ADR_C2 39*4 // R/W
// ((int) ((1<<16)/1.4))
// Standard picture delay, bits [15:0]
#define KFIR_ADR_STD_PICT_DEL 40*4 // R/W
// ((int)(90000.0/bit_rate)
// First picture delay, bits [15:0]
#define KFIR_ADR_FIRST_PICT_DEL 41*4 // R/W
// ((int)(((vbv_buffer_size*16384*2)/8)*90000.0/bit_rate))
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_GOPR1_1 42*4 // R/W
// (((int)floor((N-M+1)*bit_rate/frame_rate+0.5)/4)>>16)&MS
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_GOPR2_1 43*4 // R/W
// (((int)floor(N*bit_rate/frame_rate+0.5)/4)>>16)&MS
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_GOPR1_0 44*4 // R/W
// ((int)floor((N-M+1)*bit_rate/frame_rate+0.5)/4)&MS
// Parameter for internal use, bits [15:0]
#define KFIR_ADR_GOPR2_0 45*4 // R/W
// ((int)floor(N*bit_rate/frame_rate+0.5)/4)&MS
// Defines # slices per picture
#define KFIR_ADR_SLICE_CONTROL 46*4 // R/W
#define KFIR_D_SLICE_CONTROL_0 0 // Single slice per picture,
#define KFIR_D_SLICE_CONTROL_1 1 // Slice per macroblock line (30 slices for NTSC, 36 slices for PAL).
// Video format flag
#define KFIR_ADR_VIDEO_FORMAT 47*4 // R/W
#define KFIR_D_VIDEO_FORMAT_NTSC 0
#define KFIR_D_VIDEO_FORMAT_PAL 1
// Interlace source flag
#define KFIR_ADR_INTERLACED_SOURCE 48*4 // R/W
#define KFIR_D_INTERLACED_SOURCE 0
#define KFIR_D_PROGRESSIVE_SOURCE 1
// I/P ratio
#define KFIR_ADR_M 49*4 // R/W
#define KFIR_D_M_I 0
#define KFIR_D_M_IP 1
#define KFIR_D_M_IPB 2
#define KFIR_D_M_IPBB 3
// N/M Ratio, determines size of GOP, bits [15:0]
#define KFIR_ADR_MULTIPLE 50*4 // R/W
// (int) N/M
// Total number of macroblocks in picture, bits [15:0]
#define KFIR_ADR_TOTAL_MBS 51*4 // R/W
// mb_width*mb_height
// Total number of macroblocks lines in picture, bits [15:0]
#define KFIR_ADR_MB_LINES 52*4 // R/W
// mb_height
// Inserts sequence start header per each GOP
#define KFIR_ADR_RANDOM_SCAN 53*4 // R/W
#define KFIR_D_RANDOM_SCAN_SINGLE 0
#define KFIR_D_RANDOM_SCAN_SEG_PER_GOP 1
// Variable bit rate encoding flag
#define KFIR_ADR_VBR_ENABLE 54*4 // R/W
#define KFIR_D_VBR_ENABLE_CONST 0
#define KFIR_D_VBR_ENABLE_VAR 1
#define KFIR_D_VBR_ENABLE_QUANT_SCALE 2
// TOP_FIELD_FIRST flag
#define KFIR_ADR_TOP_FIRST 55*4 // R/W
#define KFIR_D_BOTTOM_FIRST 0
#define KFIR_D_TOP_FIRST 1
//Note: this flag is redefined internally if automatic 3-2 pulldown detection is on.
// Determines horizontal motion search window
#define KFIR_ADR_LOW_SEARCH_RANGE 56*4 // R/W
#define KFIR_D_LOW_SEARCH_RANGE_100 0
#define KFIR_D_LOW_SEARCH_RANGE_32 1
// Assigns this constant quantizer scale to each macroblock, , bits [9:0]
#define KFIR_ADR_CONST_MQUANT 57*4 // R/W
// Bits 10
// Low latency flag (video elementary stream latency only)
#define KFIR_ADR_LOW_LATENCY 58*4 // R/W
#define KFIR_D_LOW_LATENCY_FIELD 0
#define KFIR_D_LOW_LATENCY_PICTURE 1
// Automatic 3/2 pulldown detection
#define KFIR_ADR_AUTO_PULLDOWN 59*4 // R/W
#define KFIR_D_AUTO_PULLDOWN_OFF 0
#define KFIR_D_AUTO_PULLDOWN_ON 1
// Compressed video data output width
#define KFIR_ADR_BITSTREAM_WIDTH 60*4 // R/W
#define KFIR_D_BITSTREAM_WIDTH_16 0
#define KFIR_D_BITSTREAM_WIDTH_32 1
// Base address of the SDRAM FIFO, bits [15:0]
#define KFIR_ADR_VOB_BASE_ADDR 61*4 // R/W
#define VOB_BASE_ADDR 2400 // 2000 , 3000 - May be changed.
// SDRAM FIFO enable flag.
#define KFIR_ADR_USE_SDRAM_FIFO 62*4 // R/W
#define KFIR_D_USE_SDRAM_FIFO_OFF 0
#define KFIR_D_USE_SDRAM_FIFO_ON 1
// Video decimation pattern [VIB_DEC_PATTERN / Picture size]
#define KFIR_ADR_VIB_DEC_PATTERN 63*4 // R/W
#define KFIR_D_VIB_DEC_PATTERN_FD1 0x1
#define KFIR_D_VIB_DEC_PATTERN_640 0xff
#define KFIR_D_VIB_DEC_PATTERN_544 0x7
#define KFIR_D_VIB_DEC_PATTERN_480 0x3
#define KFIR_D_VIB_DEC_PATTERN_352 0x1
#define KFIR_D_VIB_DEC_PATTERN_320 0x55
#define KFIR_D_VIB_DEC_PATTERN_160 0x11
// Video decimation size [VIB_DEC_SIZE / Picture size]
#define KFIR_ADR_VIB_DEC_SIZE 64*4 // R/W
#define KFIR_ADR_VIB_DEC_SIZE_FD1 0x1
#define KFIR_ADR_VIB_DEC_SIZE_640 0x9
#define KFIR_ADR_VIB_DEC_SIZE_544 0x4
#define KFIR_ADR_VIB_DEC_SIZE_480 0x3
#define KFIR_ADR_VIB_DEC_SIZE_352 0x2
#define KFIR_ADR_VIB_DEC_SIZE_320 0x9
#define KFIR_ADR_VIB_DEC_SIZE_160 0x9
//# Bits 16
// Retains the number of the GOP currently being encoded
#define KFIR_ADR_VIB_VIDEO_PAR 65*4 // R/W
// bit 0: Horizontal luminance filter: [0]: Off, [1]: On.
#define KFIR_D_VIB_VIDEO_PAR_HOR_FILT_LUMIN_MASK 0x0001
// bit 1: Horizontal chrominance filter: [0]: Off, [1]: On.
#define KFIR_D_VIB_VIDEO_PAR_HOR_FILT_CHROMA_MASK 0x0002
// bit 2-3: Vertical filter for field 0: [00],[01]=off, [10]=C2, [11]=C3.
#define KFIR_D_VIB_VIDEO_PAR_VER_FILT_FIELD_0_MASK 0x000C
// bit 4-5: Vertical filter for field 1: [00],[01]=off, [10]=C2, [11]=C3.
#define KFIR_D_VIB_VIDEO_PAR_VER_FILT_FIELD_1_MASK 0x0030
// bit 6: FILEMODE: [0]: Off, [1]: On.
#define KFIR_D_VIB_VIDEO_PAR_FILEMODE_MASK 0x0040
// bit 7: TOP_FIRST: [0]: Field 0 is BOT, [1]: Field 0 is TOP
#define KFIR_D_VIB_VIDEO_PAR_TOP_FIRST_MASK 0x0080
// bit 8: VIDEO_FORMAT: [0]: NTSC. [1]: PAL
#define KFIR_D_VIB_VIDEO_PAR_VIDEO_FORMAT_MASK 0x0100
// bit 9: CR_FIRST: [0]: CB_Y_CR_Y, [1]: CR_Y_CB_Y
#define KFIR_D_VIB_VIDEO_PAR_CR_FIRST_NASK 0x0200
// Video horizontal offset
#define KFIR_ADR_VIB_HORI_TOP_BOT 66*4 // R/W
// bit 0-3: TOP offset
#define KFIR_D_VIB_HORI_TOP_MASK 0x000F
// bit 4-7: BOT offset
#define KFIR_D_VIB_HORI_BOT_MASK 0x00F0
// Video vertical offset
#define KFIR_ADR_VIB_VERT_TOP_BOT 67*4 // R/W
// bit 0-4: BOT offset
#define KFIR_D_VIB_VERT_BOT_MASK 0x001F
// bit 5-9: TOP offset
#define KFIR_D_VIB_VERT_TOP_MASK 0x03E0
#define KFIR_D_FILTERS_MASK 0x07FF
// Luminance horizontal filter coeff 0 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_0 68*4 // R/W
// Luminance horizontal filter coeff 1 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_1 69*4 // R/W
// Luminance horizontal filter coeff 2 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_2 70*4 // R/W
// Luminance horizontal filter coeff 3 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_3 71*4 // R/W
// Luminance horizontal filter coeff 4 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_4 72*4 // R/W
// Luminance horizontal filter coeff 5 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_5 73*4 // R/W
// Luminance horizontal filter coeff 6 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_YH_6 74*4 // R/W
// Chrominance horizontal filter coeff 0 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_0 75*4 // R/W
// Chrominance horizontal filter coeff 1 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_1 76*4 // R/W
// Chrominance horizontal filter coeff 2 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_2 77*4 // R/W
// Chrominance horizontal filter coeff 3 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_3 78*4 // R/W
// Chrominance horizontal filter coeff 4 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_4 79*4 // R/W
// Chrominance horizontal filter coeff 5 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_5 80*4 // R/W
// Chrominance horizontal filter coeff 6 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CH_6 81*4 // R/W
// Chrominance vertical (field 0) filter coeff 0 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_0 82*4 // R/W
// Chrominance vertical (field 0) filter coeff 1 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_1 83*4 // R/W
// Chrominance vertical (field 0) filter coeff 2 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_2 84*4 // R/W
// Chrominance vertical (field 0) filter coeff 3 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_3 85*4 // R/W
// Chrominance vertical (field 0) filter coeff 4 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_4 86*4 // R/W
// Chrominance vertical (field 0) filter coeff 5 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV0_5 87*4 // R/W
// Chrominance vertical (field 1) filter coeff 0 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_0 88*4 // R/W
// Chrominance vertical (field 1) filter coeff 1 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_1 89*4 // R/W
// Chrominance vertical (field 1) filter coeff 2 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_2 90*4 // R/W
// Chrominance vertical (field 1) filter coeff 3 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_3 91*4 // R/W
// Chrominance vertical (field 1) filter coeff 4 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_4 92*4 // R/W
// Chrominance vertical (field 1) filter coeff 5 (11 bit signed)
#define KFIR_ADR_VIB_FILTERC_CV1_5 93*4 // R/W
// Least significant bits of 3-2 pulldown threshold value
#define KFIR_ADR_TELE_THRESHOLD_0 94*4 // R/W
// 16 Bits
// Mostsignificant bits of 3-2 pulldown threshold value
#define KFIR_ADR_TELE_THRESHOLD_1 95*4 // R/W
// 16 Bits
// tele_threshold>>16
// DMA_BSM_BURST
#define KFIR_ADR_DMA_BSM_BURST 96*4 // R/W
// # Bits 9 bit
// Minimum required lines in bitstream FIFO to assert H_DMA_REQ_BSM
#define KFIR_ADR_DMA_BSM_BURST_END 97*4 // R/W
// # Bits 9 bit
// Minimum required lines in uncompressed video FIFO to negate H_DMA_REQ_VIB
#define KFIR_ADR_DMA_VIB_BURST 98*4 // R/W
// # Bits 9 bit
// Minimum required lines in uncompressed video FIFO to assert
#define KFIR_ADR_DMA_VIB_BURST_END 99*4 // R/W
// # Bits 9 bit
#define KFIR_ADR_FILE_MODE 100*4
// 1 - MPEG 2 mode
// 0 - MPEG 1 mode
#define KFIR_ADR_MPEG_I_NEG 103*4
#define KFIR_ADR_FRAME_SKIP_RATIO 104*4
// # Bits 16 bit
// Maximum number of the parameters.
#define KFIR_MAX_PARAMS 128
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// Kfir registers
// Least significant bits of the GOP number
#define KFIR_ADR_GOP_0 128*4 // R
// # Bits 16
// Most significant bits of the GOP number
#define KFIR_ADR_GOP_1 129*4 // R
// # Bits 16
// Retains the type of the picture currently being encoded
#define KFIR_ADR_PICT_TYPE 132*4 // R
// # Bits 2
#define KFIR_ADR_X 146*4 // ?/W
// 0...43
#define KFIR_ADR_Y 149*4 // ?/W
// 0...35
#define KFIR_ADR_TEST_0 171*4 // R
// 1 in at least one bit - error
// 0 - no errors.
#define KFIR_ADR_TEST_1 172*4 // R
// 1 in at least one bit - error
// 0 - no errors.
// Description Retains the frame # within the GOP currently being encoded
#define KFIR_ADR_FRAME 183*4 // R
// # Bits 4
// FIFO Counter (bits 15:0)
#define KFIR_ADR_FIFO_REG_0 184*4 // R
// Value Retains the number of lines written to the video FIFO since the beginning of encoding.
// # Bits 16
// FIFO Counter (bits 23:16)
#define KFIR_ADR_FIFO_REG_1 185*4 // R
// Value Retains the number of lines written to the video FIFO since the beginning of encoding.
// # Bits 8
// SRAM Counter (bits 15:0)
#define KFIR_ADR_SRAM_CNT_0 186*4 // R
// Retains the number of lines written to the video FIFO since last video interrupt.
// This number increments during the current picture encoding, and is not latched.
// Description SRAM Counter (bits 18:16)
#define KFIR_ADR_SRAM_CNT_1 187*4 // R
// Retains the number of lines written to the video FIFO since last
// video interrupt. This number increments during the current picture encoding, and is not latched.
// # Bits 3
//SRAM register (bits 15:0)
#define KFIR_ADR_SRAM_REG_0 188*4 // R
// Retains the value of the last SRAM counter, valid after each video interrupt. To be used for DMA transfer.
// SRAM register (bits 19:16)
#define KFIR_ADR_SRAM_REG_1 189*4 // R
// Retains the value of the last SRAM counter, valid after the interrupt.
// The most significant bit (19) of the SRAM register toggles
// each interrupt (parify flag of the number of video interrupts). To be used for DMA transfer.
// # Bits 4
#define KFIR_SRAM_REG_1_MASK 0x00000007
#define KFIR_200 200*4 // W
#define KFIR_DEV_INST KFIR_200 // W/R
#define KFIR_201 201*4 // R
#define KFIR_EXEC KFIR_201 // R
#define KFIR_202 202*4
#define KFIR_VIB_FIFO_BASE_ADR 202*4 // W
#define VIB_BASE_ADR_MASK 0x00000FFF
#define KFIR_MUX_FIFO_BASE_ADR 203*4 // W
#define KFIR_203 203*4
#define MUX_BASE_ADR_MASK 0x00000FFF
#define KFIR_AUDIO_FIFO_BASE_ADR 204*4 // W
#define KFIR_204 204*4
#define KF_AUDIO_MEM_BASE KFIR_AUDIO_INPUT_BASE_LB_ADR
#define KF_AUDIO_MEM_SIZE 0x400
#define KFIR_205 205*4
// MUX Memory Size
#define KFIR_207 207*4
// 20 bits
// MUX Memory Counter
#define KFIR_208 208*4
// 20 bits
// VIB, Video Input Buffer, File Mode Memory Size
#define KFIR_209 209*4
// 20 bits
// VIB, Video Input Buffer, File Mode Memory Counter
#define KFIR_210 210*4
// 20 bits
// I960 Config register.
#define KFIR_211 211*4 // W
#define KFIR_211_SLAVE 0
#define KFIR_211_MASTER 1
// Interrupt counter
#define KFIR_ADR_INTERRUPT_CNT 221*4 // R
// Bits [15:0] of audio PTS
#define KFIR_ADR_AUDIO_PTS_0 222*4 // R/W
// # Bits 16
// Bits [31:16] of the audio PTS
#define KFIR_ADR_AUDIO_PTS_1 223*4 // R/W
// # Bits 16
// Most significant bit of the audio PTS
#define KFIR_ADR_AUDIO_PTS_2 224*4 // R/W
// # Bits 1
#define KFIR_ADR_AUDIO_INT_ACK 228*4 // ?/W
#define KFIR_ADR_AUDIO_FRAME_SIZE 229*4 // R/W
#define KFIR_ADR_MUX_CNT_0 231*4
#define KFIR_ADR_MUX_CNT_1 232*4
#define KFIR_ADR_MUX_CNT_2 233*4
// Video interrupt source
#define KFIR_ADR_INT_VIDEO 234*4 // R/W
#define KDIR_D_INT_VIDEO 1
// # Bits 1
// Audio interrupt source
#define KFIR_ADR_INT_AUDIO 235*4 // R/W
#define KDIR_D_INT_AUDIO 1
// # Bits 1
// DMA MUX interrupt source
#define KFIR_ADR_INT_DMA_MUX 236*4 // R/W
#define KDIR_D_INT_DMA_MUX 1
// # Bits 1
// DMA VIB (Filemode) interrupt source
#define KFIR_ADR_INT_DMA_VIB 237*4 // R/W
#define KDIR_D_INT_DMA_VIB 1
// # Bits 1
#define KFIR_ADR_TEST_MODE 252*4 // ?/W
#define KFIR_D_TEST_MODE_ON 1
#define KFIR_D_TEST_MODE_OFF 0
// Bits 1
#define KFIR_ADR_PAUSE 253*4 // R/W
// 0 - Resume
// 1 - Pause
#define KFIR_D_PAUSE 1
#define KFIR_D_RESUME 0
// Status register
#define KFIR_ADR_EREADY 254*4 // R
// Bits 3
// [1]: Kfir is ready to start encoding.
// [2]: Test Mode.
// [3]: RECORD down has been detected. Kfir starts the "stop encoding" sequence
// [4]: Sequence_end code has been transmitted. Kfir empties the internal compressed data buffers.
#define KFIR_D_EREADY_ENCODING 0
#define KFIR_D_EREADY_READY 1
#define KFIR_D_EREADY_TEST 2
#define KFIR_D_EREADY_STOP_DETECT 3
#define KFIR_D_EREADY_SEQ_END 4
// The host sets this register to start the encoding, and resets it to stop the encoding.
#define KFIR_ADR_RECORD 255*4 // R/W
#define KFIR_D_RECORD_START 1
#define KFIR_D_RECORD_STOP 0
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
// MUX_AUDIO_FIFO data.
#define DEFAULT_PROGRAM_NUMBER 1
#define DEFAULT_TRANSPORT_STREAM_ID 0
#define DEFAULT_AUDIO_STREAM_TYPE 3
#define DEFAULT_PMT_PID 0x10
#define DEFAULT_VIDEO_PID 0x11
#define DEFAULT_AUDIO_PID 0x12
#define DEFAULT_VIDEO_STREAM_ID 0xe0
#define DEFAULT_AUDIO_STREAM_ID 0xc0
#define DEFAULT_VIDEO_BITRATE 6000000
#define DEFAULT_AUDIO_BITRATE 0256000
#define DEFAULT_VPTS_OFFSET 30000
#define DEFAULT_APTS_OFFSET DEFAULT_VPTS_OFFSET
#define DEFAULT_PCR_RATE 30
#define DEFAULT_SCR_RATE 30
#define DEFAULT_VIDEO_PES_SIZE (2048)
#define DEFAULT_AUDIO_PES_SIZE (2048)
#define DEFAULT_PAT_RATE 500
#define DEFAULT_FRAMES_PER_100SEC 2997
#define MUX_SCALE 2
// All data is write only.
#define MUX_AUDIO_ADR_STREAM_TYPE 0
// # Bits 16
typedef enum KFIR_D_STREAM_TYPE_Tag {
KFIR_D_VEDEO_ES = 0,
KFIR_D_PACKET_VIDEO_ES = 1,
KFIR_D_PROGRAM = 2,
KFIR_D_TRANSPORT = 3,
KFIR_D_AUDIO_ES = 4,
KFIR_D_PACKET_AUDIO_ES = 5,
KFIR_D_SYSTEM = 4
} KFIR_D_STREAM_TYPE;
//Number (ID) of a program within the transport stream
#define MUX_AUDIO_ADR_PROGRAM_NUMBER 1
// # Bits 16
// Description Transport stream ID
#define MUX_AUDIO_ADR_TRANSPORT_STREAM_ID 2
// # Bits 16
//Audio stream type (according to the audio standard)
#define MUX_AUDIO_ADR_AUDIO_STREAM_TYPE 3
// # Bits 8
//#define DEFAULT_AUDIO_STREAM_TYPE 0x3
// Program map table packet ID
#define MUX_AUDIO_ADR_PMT_PID 4
// # Bits 13
#define MUX_AUDIO_PMT_PID_MASK 0x1FFF
// Video packet ID
#define MUX_AUDIO_ADR_VIDEO_PID 5
// # Bits 13
#define MUX_AUDIO_VIDEO_PID_MASK 0x1FFF
// Audio packet ID
#define MUX_AUDIO_ADR_AUDIO_PID 6
// # Bits 13
// Video stream ID within the PES packet
#define MUX_AUDIO_ADR_VIDEO_STREAM_ID 7
// Value E0 - EF
// # Bits 8
// Audio stream ID with the PES packet
#define MUX_AUDIO_ADR_AUDIO_STREAM_ID 8
//Value C0 - CF
//# Bits 8
// 16 least significant bits of video bit rate
#define MUX_AUDIO_ADR_VIDEO_BITRATE_LOW 9
//Value MUST CONFORM TO BIT RATE (HOST REGISTERS 5-7)
//# Bits 16
// 16 most significant bits of video bit rate
#define MUX_AUDIO_ADR_VIDEO_BITRATE_HIGH 10
//Value MUST CONFORM TO BIT RATE (HOST REGISTERS 5-7)
//Bits 16
// 16 least significant bits of audio bit rate
#define MUX_AUDIO_ADR_AUDIO_BITRATE_LOW 11
// # Bits 16
// 16 most significant bits of audio bit rate
#define MUX_AUDIO_ADR_AUDIO_BITRATE_HIGH 12
// # Bits 16
// 16 least significant bits of transport bitrate
#define MUX_AUDIO_ADR_TRANSPORT_BITRATE_LOW 13
// # Bits 16
// 16 most significant bits of transport bitrate
#define MUX_AUDIO_ADR_TRANSPORT_BITRATE_HIGH 14
//# Bits 16
// 16 most significant bits of initial video PTS/DTS offset, ms
#define MUX_AUDIO_ADR_VPTS_OFFSET_LOW 15
// # Bits 16
// 16 least significant bits of initial video PTS/DTS offset, ms
#define MUX_AUDIO_ADR_VPTS_OFFSET_HIGH 16
// # Bits 16
// 16 most significant bits of initial audio PTS/DTS offset, ms
#define MUX_AUDIO_ADR_APTS_OFFSET_LOW 17
// # Bits 16
// 16 least significant bits of initial audio PTS/DTS offset, ms
#define MUX_AUDIO_ADR_APTS_OFFSET_HIGH 18
// # Bits 16
// Maximum size of a packetized video elementary stream packet, bytes
#define MUX_AUDIO_ADR_MAX_VIDEO_PES_SIZE 19
// # Bits 16
// Maximum size of a packetized audio elementary stream packet, bytes
#define MUX_AUDIO_ADR_MAX_AUDIO_PES_SIZE 20
// # Bits 16
// Time interval between two successive PAT/PMT table transmission, ms.
#define MUX_AUDIO_ADR_PAT_RATE 21
// # Bits 16
// Number of video frames within 100 sec
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_FRAMES_PER_100_SEC 22
#else
#define MUX_AUDIO_ADR_FRAMES_PER_100_SEC 74
#endif
//Value 2997 (NTSC)
// 2500 (PAL)
// # Bits 16
// Size of program association table, bytes
#define MUX_AUDIO_ADR_PAT_TABLE_SIZE 23
// # Bits 16
// Size of program map table, bytes
#define MUX_AUDIO_ADR_PMT_TABLE_SIZE 24
// # Bits 16
// Description pcr_bitlimit [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_LOW 25
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_LOW 75
#endif
// # Bits 16
// pcr_bitlimit [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_MID 26
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_MID 76
#endif
// # Bits 16
// pcr_bitlimit[47:32]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_HIGH 27
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_HIGH 77
#endif
// # Bits 16
// pcr_step [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_LOW 28
#else
#define MUX_AUDIO_ADR_PCR_STEP_LOW 78
#endif
// # Bits 16
// pcr_step [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_MID 29
#else
#define MUX_AUDIO_ADR_PCR_STEP_MID 79
#endif
// # Bits 16
// pcr_step [47:32]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_HIGH 30
#else
#define MUX_AUDIO_ADR_PCR_STEP_HIGH 80
#endif
// # Bits 16
// pcr_step_100sec [15:0]
#define MUX_AUDIO_ADR_PCR_STEP_100SEC_LOW 31
// # Bits 16
// pcr_step_100sec [31:16]
#define MUX_AUDIO_ADR_PCR_STEP_100SEC_HIGH 32
// # Bits 16
// pcrbase_step [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCRBASE_STEP_LOW 33
#else
#define MUX_AUDIO_ADR_PCRBASE_STEP_LOW 81
#endif
// # Bits 16
// pcrbase_step [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCRBASE_STEP_HIGH 34
#else
#define MUX_AUDIO_ADR_PCRBASE_STEP_HIGH 82
#endif
// # Bits 16
// pcrbase_step_100sec [15:0]
#define MUX_AUDIO_ADR_PCRBASE_STEP_100SEC_LOW 35
// # Bits 16
// pcrbase_step_100sec [31:16]
#define MUX_AUDIO_ADR_PCRBASE_STEP_100SEC_HIGH 36
// # Bits 16
// PES packet header constant # 1
#define MUX_AUDIO_ADR_PPH_C1 37
// # Bits 8
// PES packet header constant # 2
#define MUX_AUDIO_ADR_PPH_C2 38
// # Bits 4
// Transport packet header constant #1
#define MUX_AUDIO_ADR_TPH_C1 39
// # Bits 4
// Transport packet header constant # 2
#define MUX_AUDIO_ADR_TPH_C2 40
// # Bits 4
// es_rate_flag
#define MUX_AUDIO_ADR_ES_RATE_FLAG 41
// # Bits 1
// escr_flag
#define MUX_AUDIO_ADR_ESCR_FLAG 42
// # Bits 1
// escr_base [15:0]
#define MUX_AUDIO_ADR_ESCR_BASE_LOW 43
// # Bits 16
// escr_base [31:16]
#define MUX_AUDIO_ADR_ESCR_BASE_MID 44
// # Bits 16
// escr_base [32]
#define MUX_AUDIO_ADR_ESCR_BASE_HIGH 45
// # Bits 1
// escr_extention
#define MUX_AUDIO_ADR_ESCR_EXTENTION 46
// # Bits 9
// scrambling
#define MUX_AUDIO_ADR_SCRAMBLING 47
// # Bits 1
// error_indicator
#define MUX_AUDIO_ADR_ERROR_INDICATOR 48
// # Bits 1
// priority
#define MUX_AUDIO_ADR_PRIORITY 49
// # Bits 1
// DTS_PER_FRAME
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_DTS_PER_FRAME 50
#else
#define MUX_AUDIO_ADR_DTS_PER_FRAME 83
#endif
// # Bits 16
// PTS_DTS_OFFSET
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PTS_DTS_OFFSET 51
#else
#define MUX_AUDIO_ADR_PTS_DTS_OFFSET 84
#endif
// # Bits 16
// pcr_correction_const [10:0]
#define MUX_AUDIO_ADR_PCR_CORRECTION_CONST_LOW 52
// # Bits 11
// pcr_correction_const [21:11]
#define MUX_AUDIO_ADR_PCR_CORRECTION_CONST_HIGH 53
// # Bits 11
// pcrbase_correction_const [10:0]
#define MUX_AUDIO_ADR_PCRBASE_CORRECTION_CONST_LOW 54
// # Bits 11
// pcrbase_correction_const [21:11]
#define MUX_AUDIO_ADR_PCRBASE_CORRECTION_CONST_HIGH 55
// # Bits 11
// es_rate [15:0]
#define MUX_AUDIO_ADR_ES_RATE_LOW 56
// # Bits 16
// es_rate [31:16]
#define MUX_AUDIO_ADR_ES_RATE_HIGH 57
// # Bits 16
// Program mux rate (video bit rate + audio bit rate) in BPS/400, bits [15:0]
#define MUX_AUDIO_ADR_PROGRAM_MUX_RATE_LOW 58
// # Bits 16
// Program mux rate (video bit rate + audio bit rate) in BPS/400, bits [21:16]
#define MUX_AUDIO_ADR_PROGRAM_MUX_RATE_HIGH 59
// # Bits 6
// Max PROGRAM_MUX_RATE over the entire stream, bits [15:0]
#define MUX_AUDIO_ADR_RATE_BOUND_LOW 60
// # Bits 16
// Max PROGRAM_MUX_RATE over the entire stream, bits [21:16]
#define MUX_AUDIO_ADR_RATE_BOUND_HIGH 61
// # Bits 6
// bits [15:0] of SHF
#define MUX_AUDIO_ADR_SHF_LOW 62
// # Bits 16
// bits [24:16] of SHF
#define MUX_AUDIO_ADR_SHF_HIGH 63
// # Bits 9
// AUDIO_PAR_CONST [15:0]
#define MUX_AUDIO_ADR_AUDIO_PAR_CONST_LOW 64
// # Bits 16
// AUDIO_PAR_CONST [23:16]
#define MUX_AUDIO_ADR_AUDIO_PAR_CONST_HIGH 65
// # Bits 16
// VIDEO_PAR_CONST [15:0]
#define MUX_AUDIO_ADR_VIDEO_PAR_CONST_LOW 66
// # Bits 16
// VIDEO_PAR_CONST [23:16]
#define MUX_AUDIO_ADR_VIDEO_PAR_CONST_HIGH 67
// # Bits 16
// Sets the maximum period of waiting for missing audio data before
// sending the video frames (in video frames)
#define MUX_AUDIO_ADR_AUDIO_MISS_LATENCY 68
// # Bits 5
// New parameters.
#define MUX_AUDIO_ADR_PTS_PER_100S_LOW 69
#define MUX_AUDIO_ADR_PTS_PER_100S_HIGH 70
#define MUX_AUDIO_ADR_AUDIO_PUSH 71
// 0 - user provide audio time stamps
// 1 - kfir provide audio time stamps
#define MUX_AUDIO_ADR_FRAME_SIZE 72
#define MUX_AUDIO_ADR_FRAME_TIME 73
#define TRANSPORT_PACKET_SIZE 188
// PAT_TABLE elements, leftmost element first
#define MUX_AUDIO_ADR_PAT_TABLE_0 80
#define MUX_AUDIO_ADR_PAT_TABLE_1 81
#define MUX_AUDIO_ADR_PAT_TABLE_2 82
#define MUX_AUDIO_ADR_PAT_TABLE_3 83
#define MUX_AUDIO_ADR_PAT_TABLE_4 84
#define MUX_AUDIO_ADR_PAT_TABLE_5 85
#define MUX_AUDIO_ADR_PAT_TABLE_6 86
#define MUX_AUDIO_ADR_PAT_TABLE_7 87
#define MUX_AUDIO_ADR_PAT_TABLE_8 88
#define MUX_AUDIO_ADR_PAT_TABLE_9 89
#define MUX_AUDIO_ADR_PAT_TABLE_10 90
#define MUX_AUDIO_ADR_PAT_TABLE_12 91
#define MUX_AUDIO_ADR_PAT_TABLE_13 92
#define MUX_AUDIO_ADR_PAT_TABLE_14 93
#define MUX_AUDIO_ADR_PAT_TABLE_15 94
#define MUX_AUDIO_ADR_PAT_TABLE_16 95
#define MUX_AUDIO_ADR_PAT_TABLE_17 96
#define MUX_AUDIO_ADR_PAT_TABLE_18 97
#define MUX_AUDIO_ADR_PAT_TABLE_19 98
#define MUX_AUDIO_ADR_PAT_TABLE_20 99
#define MUX_AUDIO_ADR_PAT_TABLE_21 100
#define MUX_AUDIO_ADR_PAT_TABLE_22 101
#define MUX_AUDIO_ADR_PAT_TABLE_23 102
#define MUX_AUDIO_ADR_PAT_TABLE_24 103
#define MUX_AUDIO_ADR_PAT_TABLE_25 104
#define MUX_AUDIO_ADR_PAT_TABLE_26 105
#define MUX_AUDIO_ADR_PAT_TABLE_27 106
#define MUX_AUDIO_ADR_PAT_TABLE_28 107
#define MUX_AUDIO_ADR_PAT_TABLE_29 108
#define MUX_AUDIO_ADR_PAT_TABLE_30 109
// # Bits 30 x 16
// PMT_TABLE elements, leftmost element first
#define MUX_AUDIO_ADR_PMT_TABLE_0 110
#define MUX_AUDIO_ADR_PMT_TABLE_1 111
#define MUX_AUDIO_ADR_PMT_TABLE_2 112
#define MUX_AUDIO_ADR_PMT_TABLE_3 113
#define MUX_AUDIO_ADR_PMT_TABLE_4 114
#define MUX_AUDIO_ADR_PMT_TABLE_5 115
#define MUX_AUDIO_ADR_PMT_TABLE_6 116
#define MUX_AUDIO_ADR_PMT_TABLE_7 117
#define MUX_AUDIO_ADR_PMT_TABLE_8 118
#define MUX_AUDIO_ADR_PMT_TABLE_9 119
#define MUX_AUDIO_ADR_PMT_TABLE_10 120
#define MUX_AUDIO_ADR_PMT_TABLE_12 121
#define MUX_AUDIO_ADR_PMT_TABLE_13 122
#define MUX_AUDIO_ADR_PMT_TABLE_14 123
#define MUX_AUDIO_ADR_PMT_TABLE_15 124
#define MUX_AUDIO_ADR_PMT_TABLE_16 125
#define MUX_AUDIO_ADR_PMT_TABLE_17 126
#define MUX_AUDIO_ADR_PMT_TABLE_18 127
#define MUX_AUDIO_ADR_PMT_TABLE_19 128
#define MUX_AUDIO_ADR_PMT_TABLE_20 129
#define MUX_AUDIO_ADR_PMT_TABLE_21 130
#define MUX_AUDIO_ADR_PMT_TABLE_22 131
#define MUX_AUDIO_ADR_PMT_TABLE_23 132
#define MUX_AUDIO_ADR_PMT_TABLE_24 133
#define MUX_AUDIO_ADR_PMT_TABLE_25 134
#define MUX_AUDIO_ADR_PMT_TABLE_26 135
#define MUX_AUDIO_ADR_PMT_TABLE_27 136
#define MUX_AUDIO_ADR_PMT_TABLE_28 137
#define MUX_AUDIO_ADR_PMT_TABLE_29 138
#define MUX_AUDIO_ADR_PMT_TABLE_30 139
// # Bits 30 x 16
// New Parameters for 3/2 pulldown fixes.
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_FRAMES_PER_100_SEC_SEC 140
#else
#define MUX_AUDIO_ADR_FRAMES_PER_100_SEC_SEC 95
#define MUX_SECOND_AUDIO_ADR_FRAMES_PER_100_SEC MUX_AUDIO_ADR_FRAMES_PER_100_SEC_SEC
#endif
//Value 2997 (NTSC)
// 2500 (PAL)
// # Bits 16
// Description pcr_bitlimit [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_LOW_SEC 141
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_LOW_SEC 96
#define MUX_SECOND_AUDIO_ADR_PCR_BITLIMIT_LOW MUX_AUDIO_ADR_PCR_BITLIMIT_LOW_SEC
#endif
// # Bits 16
// pcr_bitlimit [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_MID_SEC 142
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_MID_SEC 97
#define MUX_SECOND_AUDIO_ADR_PCR_BITLIMIT_MID MUX_AUDIO_ADR_PCR_BITLIMIT_MID_SEC
#endif
// # Bits 16
// pcr_bitlimit[47:32]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_BITLIMIT_HIGH_SEC 143
#else
#define MUX_AUDIO_ADR_PCR_BITLIMIT_HIGH_SEC 98
#define MUX_SECOND_AUDIO_ADR_PCR_BITLIMIT_HIGH MUX_AUDIO_ADR_PCR_BITLIMIT_HIGH_SEC
#endif
// pcr_step [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_LOW_SEC 144
#else
#define MUX_AUDIO_ADR_PCR_STEP_LOW_SEC 99
#define MUX_SECOND_AUDIO_ADR_PCR_STEP_LOW MUX_AUDIO_ADR_PCR_STEP_LOW_SEC
#endif
// # Bits 16
// pcr_step [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_MID_SEC 145
#else
#define MUX_AUDIO_ADR_PCR_STEP_MID_SEC 100
#define MUX_SECOND_AUDIO_ADR_PCR_STEP_MID MUX_AUDIO_ADR_PCR_STEP_MID_SEC
#endif
// # Bits 16
// pcr_step [47:32]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCR_STEP_HIGH_SEC 146
#else
#define MUX_AUDIO_ADR_PCR_STEP_HIGH_SEC 101
#define MUX_SECOND_AUDIO_ADR_PCR_STEP_HIGH MUX_AUDIO_ADR_PCR_STEP_HIGH_SEC
#endif
// # Bits 16
// pcrbase_step [15:0]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCRBASE_STEP_LOW_SEC 147
#else
#define MUX_AUDIO_ADR_PCRBASE_STEP_LOW_SEC 102
#define MUX_SECOND_AUDIO_ADR_PCRBASE_STEP_LOW MUX_AUDIO_ADR_PCRBASE_STEP_LOW_SEC
#endif
// # Bits 16
// pcrbase_step [31:16]
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PCRBASE_STEP_HIGH_SEC 148
#else
#define MUX_AUDIO_ADR_PCRBASE_STEP_HIGH_SEC 103
#define MUX_SECOND_AUDIO_ADR_PCRBASE_STEP_HIGH MUX_AUDIO_ADR_PCRBASE_STEP_HIGH_SEC
#endif
// # Bits 16
// DTS_PER_FRAME
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_DTS_PER_FRAME_SEC 149
#else
#define MUX_AUDIO_ADR_DTS_PER_FRAME_SEC 104
#define MUX_SECOND_AUDIO_ADR_DTS_PER_FRAME MUX_AUDIO_ADR_DTS_PER_FRAME_SEC
#endif
// # Bits 16
// PTS_DTS_OFFSET
#ifndef KFIR_NEW_AUDIO_TABLE
#define MUX_AUDIO_ADR_PTS_DTS_OFFSET_SEC 150
#else
#define MUX_AUDIO_ADR_PTS_DTS_OFFSET_SEC 105
#define MUX_SECOND_AUDIO_ADR_PTS_DTS_OFFSET MUX_AUDIO_ADR_PTS_DTS_OFFSET_SEC
#endif
// # Bits 16
#define MUX_AUDIO_TABLES 200
typedef struct KFIR_AUDIO_TABLE_HEADER_Tag {
WORD TableNumber;
WORD PID;
WORD TableSize;
WORD Table[1];
} KFIR_AudiotableHeader;
#define MAX_MUX_PARAMS (400)
typedef enum KFIR_MODE_TAG {
KFIR_MASTER_MODE = 1,
KFIR_GENERIC_MODE = 0,
} KFIR_MODE;
// Do not change this values - MGV 12.05.99 !!!
enum KFIR_M {
KFIR_I_PICT = 0,
KFIR_IP_PICT,
KFIR_IPB_PICT,
KFIR_IPBB_PICT
};
// Kfir 3/2 pulldown values.
// Do not change them, they match the values in IDC_3_2_PULDOWN ComboBox.
enum KFIR_3_2_PULLDOWN {
KFIR_DISABLED = 0,
KFIR_ENABLED = 1,
KFIR_AUTO = 2
};
enum VT_KFIR_AudioFreq {
VT_KFIR_AUDIO_FREQ_5_5125 = 0,
VT_KFIR_AUDIO_FREQ_8_0000 = 1,
VT_KFIR_AUDIO_FREQ_11_025 = 2,
VT_KFIR_AUDIO_FREQ_16_000 = 3,
VT_KFIR_AUDIO_FREQ_22_050 = 4,
VT_KFIR_AUDIO_FREQ_32_000 = 5,
VT_KFIR_AUDIO_FREQ_44_100 = 6,
VT_KFIR_AUDIO_FREQ_48_000 = 7
};
enum KFIR_LIBRARY_MODES {
FULL_D1,
HALF_D1,
SIF
};
enum KFIR_HOR_RESOLUTION {
KFIR_H_160 = 0, //9
KFIR_H_320 = 1, //9,
KFIR_H_352 = 2, //2,
KFIR_H_480 = 3, //3
KFIR_H_544 = 4, //4,
KFIR_H_640 = 5, //9,
KFIR_H_FD1 = 6 //1
};
enum KFIR_VES_ALIGNMENT {
KFIR_VES_8 = 0, //1,
KFIR_VES_16 = 1, //2,
KFIR_VES_32 = 2, //3,
};
enum KFIR_RATE_CONTROL {
KFIR_RATE_CBR = 0,
KFIR_RATE_VBR = 1,
KFIR_RATE_CONST_QUANT_SCALE = 2,
};
enum KFIR_FRAME_RATE {
KFIR_23_976 = 0, //1,
KFIR_24 = 1, //2,
KFIR_25 = 2, //3,
KFIR_29_97 = 3, //4,
KFIR_30 = 4, //5
};
#define FILE_MODE_STEP 0x20000
#define NTSC_LINES_PER_FIELD 480/2
#define PAL_LINES_PER_FIELD 576/2
#define FRAMES_NUMBER 30
// Warning ! Do not change this values !
#define BOARD_REV_B_D 0
#define BOARD_REV_B_D_ 1
#define BOARD_REV_E 5
#define BOARD_REV_F 6
enum KFIR_VERT_ROSOLUTION {
KFIR_V_112 = 0, //3,
KFIR_V_240 = 1, //2,
KFIR_V_480 = 2, //1, // For NTSC
KFIR_V_144 = 0,
KFIR_V_288 = 1,
KFIR_V_576 = 2, // for PAL
};
enum VT_KFIR_Aspect_Ratio {
VT_KFIR_ASPECT_SQUARE = 0,
VT_KFIR_ASPECT_4_3 = 1,
VT_KFIR_ASPECT_16_9 = 2,
VT_KFIR_ASPECT_211_1 = 3
};
enum VT_KFIR_Color_Primaries {
VT_KFIR_COLOR_ITUR_709 = 0,
VT_KFIR_COLOR_UNSPEC = 1,
VT_KFIR_COLOR_UNSPECIFIED = 2,
VT_KFIR_COLOR_ITUR_624_4M = 3,
VT_KFIR_COLOR_ITUR_624_4BG = 4,
VT_KFIR_COLOR_SMPTE_170_M = 5,
VT_KFIR_COLOR_SMPTE_240_M = 6
};
enum VT_KFIR_Trans_Char {
VT_KFIR_TRANS_ITUR_709 = 0,
VT_KFIR_TRANS_UNSPEC = 1,
VT_KFIR_TRANS_UNSPECIFIED = 2,
VT_KFIR_TRANS_ITUR_624_4M = 3,
VT_KFIR_TRANS_ITUR_624_4BG = 4,
VT_KFIR_TRANS_SMPTE_170_M = 5,
VT_KFIR_TRANS_SMPTE_240_M = 6,
VT_KFIR_TRANS_LINEAR = 7
};
enum VT_KFIR_Matrix_Coef {
VT_KFIR_MATRIX_ITUR_709 = 0,
VT_KFIR_MATRIX_UNSPEC = 1,
VT_KFIR_MATRIX_UNSPECIFIED = 2,
VT_KFIR_MATRIX_FCC = 3,
VT_KFIR_MATRIX_ITUR_624_4BG = 4,
VT_KFIR_MATRIX_SMPTE_170_M = 5,
VT_KFIR_MATRIX_SMPTE_240_M = 6
};
enum VT_KFIR_IntraDC_Precision {
VT_KFIR_PREC_8_BITS = 0,
VT_KFIR_PREC_9_BITS = 1,
VT_KFIR_PREC_10_BITS = 2,
VT_KFIR_PREC_11_BITS = 3
};
enum VT_KFIR_Frame_Prediction_DCT {
VT_KFIR_FIELD_FRAME = 0,
VT_KFIR_FRAME = 1
};
enum VT_KFIR_Intra_VLC_Format {
VT_KFIR_B14 = 0,
VT_KFIR_B15 = 1
};
enum VT_KFIR_Alternate_Scan {
VT_KFIR_Zigzag = 0,
VT_KFIR_Alternate = 1
};
enum VT_KFIR_On_Off {
VT_KFIR_OFF = 0,
VT_KFIR_ON = 1
};
enum VT_KFIR_VideoSource {
VT_KFIR_Composite = 0,
VT_KFIR_SVideo = 1,
VT_KFIR_SERIAL_DIGITAL = 2,
VT_KFIR_Component = 2,
VT_KFIR_FILE = 3
};
enum VT_KFIR_VideoFormat {
VT_KFIR_NTSC = 0,
VT_KFIR_PAL = 1
};
enum VT_KFIR_AudioMode {
VT_KFIR_MONO = 0,
VT_KFIR_STEREO = 1,
VT_KFIR_DUAL = 2,
VT_KFIR_JOINT4_31 = 3,
VT_KFIR_JOINT8_31 = 4,
VT_KFIR_JOINT12_31 = 5,
VT_KFIR_JOINT16_31 = 6
};
enum VT_KFIR_AudioFormat {
VT_KFIR_LAYER_I = 0,
VT_KFIR_LAYER_II = 1
};
enum VT_KFIR_StreamType {
VT_KFIR_AUDIO_ES = 0,
VT_KFIR_VIDEO_ES = 1,
VT_KFIR_A_V_ES = 2,
VT_KFIR_PROGRAM = 3,
VT_KFIR_TRANSPORT = 4,
VT_KFIR_PACKET_VES = 5,
VT_KFIR_PACKET_AES = 6,
VT_KFIR_SYSTEM = 7
};
enum VT_KFIR_EncodingType {
VT_KFIR_PAUSED = 1,
VT_KFIR_FILEMODE = 2,
VT_KFIR_LIVEMODE = 4
};
typedef struct _VT_KFIR_params_ {
enum VT_KFIR_Aspect_Ratio AspectRatio;
enum VT_KFIR_IntraDC_Precision IntraDCPrecision;
enum VT_KFIR_Color_Primaries ColorPrimaries;
enum VT_KFIR_Trans_Char TransferCharacteristics;
enum VT_KFIR_Matrix_Coef MatrixCoefficients;
enum VT_KFIR_Frame_Prediction_DCT FramePredictionDCT_I;
enum VT_KFIR_Frame_Prediction_DCT FramePredictionDCT_B;
enum VT_KFIR_Frame_Prediction_DCT FramePredictionDCT_P;
enum VT_KFIR_Intra_VLC_Format IntraVLCFormat_I;
enum VT_KFIR_Intra_VLC_Format IntraVLCFormat_B;
enum VT_KFIR_Intra_VLC_Format IntraVLCFormat_P;
enum VT_KFIR_Alternate_Scan AlternateScan_I;
enum VT_KFIR_Alternate_Scan AlternateScan_B;
enum VT_KFIR_Alternate_Scan AlternateScan_P;
enum VT_KFIR_On_Off ProgressiveSequence;
enum VT_KFIR_On_Off ProgressiveFrame;
enum VT_KFIR_On_Off SliceBypass;
enum VT_KFIR_On_Off VIB_FilterBypass;
enum VT_KFIR_On_Off VIB_ProgressiveSource;
enum VT_KFIR_VideoSource Video_Source;
enum VT_KFIR_VideoFormat Video_Format;
enum VT_KFIR_AudioMode AudioMode;
enum VT_KFIR_AudioFormat AudioFormat;
enum VT_KFIR_AudioFreq AudioFreq;
WORD AudioBitRate;
enum VT_KFIR_On_Off AudioCRC;
enum VT_KFIR_StreamType StreamType;
WORD TopField;
WORD Bottom_Field;
WORD Horiz;
WORD VBFBufferSize;
DWORD BitRate;
enum VT_KFIR_On_Off EachChunkPTS;
BYTE VAD_LuminanceFactor;
BYTE VAD_LuminanceBandPass;
BYTE VAD_Prefilter;
BYTE VAD_LuminanceBrightness;
BYTE VAD_LuminanceContrast;
BYTE VAD_ChromaSaturation;
BYTE VAD_HueControl;
BYTE VAD_ChromLowPass;
BYTE VAD_ChromCombFilterOff;
BYTE VAD_ColorStandard;
BYTE VAD_Dithering;
BYTE VAD_ChromInterFilter;
WORD AudioStreamID;
WORD VideoStreamID;
WORD AudioProgramID;
WORD VideoProgramID;
WORD ProgramMapID;
DWORD VideoBufferSize;
DWORD AudioBufferSize;
DWORD VideoEventSize;
DWORD AudioEventSize;
DWORD SeqStart;
DWORD FieldSize;
DWORD FileModeBufferSize;
DWORD FileModeStep;
DWORD FromFrame;
DWORD ToFrame;
DWORD FlFileDMA;
DWORD TransportRate;
BYTE PATVersion;
DWORD InitialVideoPTS;
DWORD InitialVideoDTS;
DWORD InitialAudioPTS;
DWORD InitialAudioDTS;
WORD ProgramNumber;
WORD TransportStreamID;
// Kfir Ext parameters.
enum KFIR_FRAME_RATE KF_FrameRate;
enum KFIR_HOR_RESOLUTION KF_HorResolution;
enum KFIR_VERT_ROSOLUTION KF_VertResolution;
enum KFIR_VES_ALIGNMENT KF_VESAlignment;
enum KFIR_RATE_CONTROL KF_RateControl;
WORD KF_QuantScale;
WORD KF_GOP_N;
enum KFIR_M KF_GOP_M;
bool KF_TopFiledFirst;
bool KF_SIF_PictureBottomField;
bool KF_LowDelay;
bool KF_LowSearchRange;
bool KF_Auto_3_2_PullDown;
DWORD KF_Threshold;
bool KF_Copyright;
bool KF_Original;
KFIR_MODE KF_Mode;
bool KF_Mpeg_I;
WORD KF_FrameSkipRatio;
enum KFIR_3_2_PULLDOWN KF_3_2_PullDown;
// Kfir Filtering parameters.
bool KF_HorLuminFilter;
int KF_HorLuminFiltC0;
int KF_HorLuminFiltC1;
int KF_HorLuminFiltC2;
int KF_HorLuminFiltC3;
int KF_HorLuminFiltC4;
int KF_HorLuminFiltC5;
int KF_HorLuminFiltC6;
bool KF_HorChromaFilter;
int KF_HorChromaFiltC0;
int KF_HorChromaFiltC1;
int KF_HorChromaFiltC2;
int KF_HorChromaFiltC3;
int KF_HorChromaFiltC4;
int KF_HorChromaFiltC5;
int KF_HorChromaFiltC6;
bool KF_VertChromaTopFilter;
int KF_VertChromaTopFiltCenter;
int KF_VertChromaTopFiltC0;
int KF_VertChromaTopFiltC1;
int KF_VertChromaTopFiltC2;
int KF_VertChromaTopFiltC3;
int KF_VertChromaTopFiltC4;
int KF_VertChromaTopFiltC5;
bool KF_VertChromaBottomFilter;
int KF_VertChromaBottomFiltCenter;
int KF_VertChromaBottomFiltC0;
int KF_VertChromaBottomFiltC1;
int KF_VertChromaBottomFiltC2;
int KF_VertChromaBottomFiltC3;
int KF_VertChromaBottomFiltC4;
int KF_VertChromaBottomFiltC5;
} VT_KFIR_CParams;
// kfir status.
typedef struct KFIR_INT_REG_Tag {
WORD IntCnt; // 0 - 221
WORD OldIntCnt;
WORD GOP_0; // 4 - 128
WORD GOP_1; // 5 - 129
WORD Frame; // 6 - 183
WORD PictType; // 7 - 132
WORD MuxCnt_0; // 8 - 231
WORD MuxCnt_1; // 9 - 232
WORD MuxCnt_2; // 10 - 233
WORD FIFO_Reg_0; // 12 - 184
WORD FIFO_Reg_1; // 13 - 185
WORD SRAM_Reg_0; // 14 - 188
WORD SRAM_Reg_1; // 15 - 189
WORD SRAM_Cnt_0; // 16 - 186
WORD SRAM_Cnt_1; // 17 - 187
WORD KfirEReady; // 18 - 254
WORD IntVideo; // 22 - 234
WORD IntAudio; // 23 - 235
WORD IntDMA_Mux; // 24 - 236
WORD IntDMA_VIB; // 25 - 237
} KFIR_INT_REG;
// 1 - Source of interrupt on Read
// 1 - Clear Interrupt when Write
#define ALT_ADR_INT_REG_CLR_REV_5E 0x3000
#define ALT_D_INT_REQ_CLR_KFIR_INT 0x0001
#define ALT_D_INT_REQ_CLR_ADSP_INT 0x0002
#define ALT_D_INT_CLEAR_ALL 0xFF
#define ALT_ADR_I2C_SLAVE_SHIFT 16
#define ALT_D_I2C_READY 0x1000
// 1 - Mask this interupt when Write
#define ALT_ADR_INT_MASK_REV_5E 0x3004
#define ALT_ADR_RESET_REG_REV_5E 0x3008
#define ALT_D_RESET_REG_KFIR_REV_5E 0x0001
#define ALT_D_RESET_REG_KFIR_PLL_REV_5E 0x0002
// ADSP address when write - IAL
#define ALT_ADR_ADSP_ADDR_REV_5E 0x300C
// ADSP data when read/write - IDMA
#define ALT_ADR_ADSP_DATA_REV_5E 0x3010
// Set ADSP IRQs (write 0, then 1) - GPPORT
#define ALT_ADR_ADSP_IRQ_REV_5E 0x3014
#define ALT_D_ADSP_IRQ_E 0x0001
#define ALT_D_ADSP_IRQ_2 0x0002
#define ALT_ADR_AUDIO_FREQ_REV_5E 0x3018
#define ALT_ADR_I2C_REV_5E 0x301C
#define ALT_ADR_OUTPUT_REV_5E 0x3020
#define ALT_D_SERIAL 0x0
#define ALT_D_PARALLEL 0x1
#define ALT_ADR_CLOCK_PADI_DEF 0x302C
#define ADR0 0x7fd8
#define ADR1 (ADR0+0x0001)
#define ADR2 (ADR0+0x0002)
#define ADR3 (ADR0+0x0003)
#define ADR4 (ADR0+0x0004)
#define ADR5 (ADR0+0x0005)
#define MUX_DMA_LENGTH (0x4000)
enum AudioCommands {
DSPAPI_VERIFYSYSTEM = 0x0001,
DSPAPI_QUERYSUPPORTPLAY = 0x0002,
DSPAPI_SETSTYLE = 0x0003,
DSPAPI_SETSAMPLINGRATE = 0x0004,
DSPAPI_SETCHANNELS = 0x0005,
DSPAPI_SETRESOLUTION = 0x0006,
DSPAPI_SETCRCOPTIONS = 0x0007,
DSPAPI_BUFENQFOR = 0x0008,
DSPAPI_LOGBUFFER = 0x0009,
DSPAPI_STARTPLAY = 0x000a,
DSPAPI_STOPPLAY = 0x000b,
DSPAPI_AUTOSTOP = 0x000c,
DSPAPI_STARTRECORD = 0x000d,
DSPAPI_STOPRECORD = 0x000e,
DSPAPI_GETLASTPROCESSEDBUFFER = 0x000f,
DSPAPI_PAUSEPLAYRECORD = 0x0010,
DSPAPI_RESTARTPLAYRECORD = 0x0011,
DSPAPI_SETVOLUME = 0x0012,
DSPAPI_QUERYSUPPORTRECORD = 0x0013,
DSPAPI_GENERALBUFENQ = 0x0014,
DSPAPI_SETDOWNMIXTYPE = 0x0015,
DSPAPI_SETINPUTGAIN = 0x0016,
DSPAPI_SETLINEOUT = 0x0017,
DSPAPI_SETLANGMIXTYPE = 0x0018
};
enum AudioSystemCommands {
SYSCMD_STARTMASTERDSP = 0x0001,
SYSCMD_STOPMASTERDSP = 0x0004,
SYSCMD_DISABLEINT = 0x0020,
SYSCMD_CANCELMASTERINT = 0x0040,
SYSCMD_MASTERDSPINT = 0x0100,
SYSCMD_SELECTINT = 0x0400,
SYSCMD_DESELECTINT = 0x0800,
SYSCMD_RAISEIRQEINT = 0x1000
};
enum AudioCommandCodes {
CLEARIRQLED = 0xB,
RAISEIRQ2INT = 0xD,
RAISEIRQEINT = 0xE,
RESETALLINTS = 0xF,
START_DSP = 0x8,
CHKBOARD = 0x4
};
#endif
LinuxTV legacy CVS <linuxtv.org/cvs>