2006-05-22 20:31:37 +07:00
|
|
|
Encoder firmware API description
|
|
|
|
================================
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_PING_FW
|
|
|
|
Enum 128/0x80
|
|
|
|
Description
|
|
|
|
Does nothing. Can be used to check if the firmware is responding.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_START_CAPTURE
|
|
|
|
Enum 129/0x81
|
|
|
|
Description
|
|
|
|
Commences the capture of video, audio and/or VBI data. All encoding
|
|
|
|
parameters must be initialized prior to this API call. Captures frames
|
|
|
|
continuously or until a predefined number of frames have been captured.
|
|
|
|
Param[0]
|
|
|
|
Capture stream type:
|
|
|
|
0=MPEG
|
|
|
|
1=Raw
|
|
|
|
2=Raw passthrough
|
|
|
|
3=VBI
|
|
|
|
|
|
|
|
Param[1]
|
|
|
|
Bitmask:
|
|
|
|
Bit 0 when set, captures YUV
|
|
|
|
Bit 1 when set, captures PCM audio
|
|
|
|
Bit 2 when set, captures VBI (same as param[0]=3)
|
|
|
|
Bit 3 when set, the capture destination is the decoder
|
|
|
|
(same as param[0]=2)
|
|
|
|
Bit 4 when set, the capture destination is the host
|
|
|
|
Note: this parameter is only meaningful for RAW capture type.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_STOP_CAPTURE
|
|
|
|
Enum 130/0x82
|
|
|
|
Description
|
|
|
|
Ends a capture in progress
|
|
|
|
Param[0]
|
|
|
|
0=stop at end of GOP (generates IRQ)
|
|
|
|
1=stop immediate (no IRQ)
|
|
|
|
Param[1]
|
|
|
|
Stream type to stop, see param[0] of API 0x81
|
|
|
|
Param[2]
|
|
|
|
Subtype, see param[1] of API 0x81
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_AUDIO_ID
|
|
|
|
Enum 137/0x89
|
|
|
|
Description
|
|
|
|
Assigns the transport stream ID of the encoded audio stream
|
|
|
|
Param[0]
|
|
|
|
Audio Stream ID
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_VIDEO_ID
|
|
|
|
Enum 139/0x8B
|
|
|
|
Description
|
|
|
|
Set video transport stream ID
|
|
|
|
Param[0]
|
|
|
|
Video stream ID
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_PCR_ID
|
|
|
|
Enum 141/0x8D
|
|
|
|
Description
|
|
|
|
Assigns the transport stream ID for PCR packets
|
|
|
|
Param[0]
|
|
|
|
PCR Stream ID
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_FRAME_RATE
|
|
|
|
Enum 143/0x8F
|
|
|
|
Description
|
|
|
|
Set video frames per second. Change occurs at start of new GOP.
|
|
|
|
Param[0]
|
|
|
|
0=30fps
|
|
|
|
1=25fps
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_FRAME_SIZE
|
|
|
|
Enum 145/0x91
|
|
|
|
Description
|
|
|
|
Select video stream encoding resolution.
|
|
|
|
Param[0]
|
|
|
|
Height in lines. Default 480
|
|
|
|
Param[1]
|
|
|
|
Width in pixels. Default 720
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_BIT_RATE
|
|
|
|
Enum 149/0x95
|
|
|
|
Description
|
2006-06-19 00:56:12 +07:00
|
|
|
Assign average video stream bitrate. Note on the last three params:
|
|
|
|
Param[3] and [4] seem to be always 0, param [5] doesn't seem to be used.
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
|
|
|
0=variable bitrate, 1=constant bitrate
|
|
|
|
Param[1]
|
|
|
|
bitrate in bits per second
|
|
|
|
Param[2]
|
|
|
|
peak bitrate in bits per second, divided by 400
|
2006-06-19 00:56:12 +07:00
|
|
|
Param[3]
|
|
|
|
Mux bitrate in bits per second, divided by 400. May be 0 (default).
|
|
|
|
Param[4]
|
|
|
|
Rate Control VBR Padding
|
|
|
|
Param[5]
|
|
|
|
VBV Buffer used by encoder
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_GOP_PROPERTIES
|
|
|
|
Enum 151/0x97
|
|
|
|
Description
|
|
|
|
Setup the GOP structure
|
|
|
|
Param[0]
|
2006-06-19 00:56:12 +07:00
|
|
|
GOP size (maximum is 34)
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[1]
|
|
|
|
Number of B frames between the I and P frame, plus 1.
|
|
|
|
For example: IBBPBBPBBPBB --> GOP size: 12, number of B frames: 2+1 = 3
|
2006-06-19 00:56:12 +07:00
|
|
|
Note that GOP size must be a multiple of (B-frames + 1).
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_ASPECT_RATIO
|
|
|
|
Enum 153/0x99
|
|
|
|
Description
|
|
|
|
Sets the encoding aspect ratio. Changes in the aspect ratio take effect
|
|
|
|
at the start of the next GOP.
|
|
|
|
Param[0]
|
|
|
|
'0000' forbidden
|
|
|
|
'0001' 1:1 square
|
|
|
|
'0010' 4:3
|
|
|
|
'0011' 16:9
|
|
|
|
'0100' 2.21:1
|
|
|
|
'0101' reserved
|
|
|
|
....
|
|
|
|
'1111' reserved
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_DNR_FILTER_MODE
|
|
|
|
Enum 155/0x9B
|
|
|
|
Description
|
|
|
|
Assign Dynamic Noise Reduction operating mode
|
|
|
|
Param[0]
|
|
|
|
Bit0: Spatial filter, set=auto, clear=manual
|
|
|
|
Bit1: Temporal filter, set=auto, clear=manual
|
|
|
|
Param[1]
|
|
|
|
Median filter:
|
|
|
|
0=Disabled
|
|
|
|
1=Horizontal
|
|
|
|
2=Vertical
|
|
|
|
3=Horiz/Vert
|
|
|
|
4=Diagonal
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_DNR_FILTER_PROPS
|
|
|
|
Enum 157/0x9D
|
|
|
|
Description
|
|
|
|
These Dynamic Noise Reduction filter values are only meaningful when
|
|
|
|
the respective filter is set to "manual" (See API 0x9B)
|
|
|
|
Param[0]
|
|
|
|
Spatial filter: default 0, range 0:15
|
|
|
|
Param[1]
|
|
|
|
Temporal filter: default 0, range 0:31
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_CORING_LEVELS
|
|
|
|
Enum 159/0x9F
|
|
|
|
Description
|
|
|
|
Assign Dynamic Noise Reduction median filter properties.
|
|
|
|
Param[0]
|
|
|
|
Threshold above which the luminance median filter is enabled.
|
|
|
|
Default: 0, range 0:255
|
|
|
|
Param[1]
|
|
|
|
Threshold below which the luminance median filter is enabled.
|
|
|
|
Default: 255, range 0:255
|
|
|
|
Param[2]
|
|
|
|
Threshold above which the chrominance median filter is enabled.
|
|
|
|
Default: 0, range 0:255
|
|
|
|
Param[3]
|
|
|
|
Threshold below which the chrominance median filter is enabled.
|
|
|
|
Default: 255, range 0:255
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
|
|
|
|
Enum 161/0xA1
|
|
|
|
Description
|
|
|
|
Assign spatial prefilter parameters
|
|
|
|
Param[0]
|
|
|
|
Luminance filter
|
|
|
|
0=Off
|
|
|
|
1=1D Horizontal
|
|
|
|
2=1D Vertical
|
|
|
|
3=2D H/V Separable (default)
|
|
|
|
4=2D Symmetric non-separable
|
|
|
|
Param[1]
|
|
|
|
Chrominance filter
|
|
|
|
0=Off
|
|
|
|
1=1D Horizontal (default)
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_VBI_LINE
|
|
|
|
Enum 183/0xB7
|
|
|
|
Description
|
|
|
|
Selects VBI line number.
|
|
|
|
Param[0]
|
|
|
|
Bits 0:4 line number
|
|
|
|
Bit 31 0=top_field, 1=bottom_field
|
|
|
|
Bits 0:31 all set specifies "all lines"
|
|
|
|
Param[1]
|
|
|
|
VBI line information features: 0=disabled, 1=enabled
|
|
|
|
Param[2]
|
|
|
|
Slicing: 0=None, 1=Closed Caption
|
|
|
|
Almost certainly not implemented. Set to 0.
|
|
|
|
Param[3]
|
|
|
|
Luminance samples in this line.
|
|
|
|
Almost certainly not implemented. Set to 0.
|
|
|
|
Param[4]
|
|
|
|
Chrominance samples in this line
|
|
|
|
Almost certainly not implemented. Set to 0.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_STREAM_TYPE
|
|
|
|
Enum 185/0xB9
|
|
|
|
Description
|
|
|
|
Assign stream type
|
2006-06-19 00:56:12 +07:00
|
|
|
Note: Transport stream is not working in recent firmwares.
|
|
|
|
And in older firmwares the timestamps in the TS seem to be
|
|
|
|
unreliable.
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
|
|
|
0=Program stream
|
|
|
|
1=Transport stream
|
|
|
|
2=MPEG1 stream
|
|
|
|
3=PES A/V stream
|
|
|
|
5=PES Video stream
|
|
|
|
7=PES Audio stream
|
|
|
|
10=DVD stream
|
|
|
|
11=VCD stream
|
|
|
|
12=SVCD stream
|
|
|
|
13=DVD_S1 stream
|
|
|
|
14=DVD_S2 stream
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_OUTPUT_PORT
|
|
|
|
Enum 187/0xBB
|
|
|
|
Description
|
2006-06-22 03:04:13 +07:00
|
|
|
Assign stream output port. Normally 0 when the data is copied through
|
|
|
|
the PCI bus (DMA), and 1 when the data is streamed to another chip
|
|
|
|
(pvrusb and cx88-blackbird).
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
|
|
|
0=Memory (default)
|
|
|
|
1=Streaming
|
|
|
|
2=Serial
|
2006-06-22 03:04:13 +07:00
|
|
|
Param[1]
|
|
|
|
Unknown, but leaving this to 0 seems to work best. Indications are that
|
|
|
|
this might have to do with USB support, although passing anything but 0
|
2006-10-04 03:52:05 +07:00
|
|
|
only breaks things.
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_AUDIO_PROPERTIES
|
|
|
|
Enum 189/0xBD
|
|
|
|
Description
|
|
|
|
Set audio stream properties, may be called while encoding is in progress.
|
|
|
|
Note: all bitfields are consistent with ISO11172 documentation except
|
|
|
|
bits 2:3 which ISO docs define as:
|
|
|
|
'11' Layer I
|
|
|
|
'10' Layer II
|
|
|
|
'01' Layer III
|
|
|
|
'00' Undefined
|
|
|
|
This discrepancy may indicate a possible error in the documentation.
|
2006-06-19 00:56:12 +07:00
|
|
|
Testing indicated that only Layer II is actually working, and that
|
|
|
|
the minimum bitrate should be 192 kbps.
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
|
|
|
Bitmask:
|
|
|
|
0:1 '00' 44.1Khz
|
2006-06-20 10:30:57 +07:00
|
|
|
'01' 48Khz
|
|
|
|
'10' 32Khz
|
|
|
|
'11' reserved
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
2:3 '01'=Layer I
|
|
|
|
'10'=Layer II
|
|
|
|
|
|
|
|
4:7 Bitrate:
|
2006-06-20 10:30:57 +07:00
|
|
|
Index | Layer I | Layer II
|
|
|
|
------+-------------+------------
|
|
|
|
'0000' | free format | free format
|
|
|
|
'0001' | 32 kbit/s | 32 kbit/s
|
|
|
|
'0010' | 64 kbit/s | 48 kbit/s
|
|
|
|
'0011' | 96 kbit/s | 56 kbit/s
|
|
|
|
'0100' | 128 kbit/s | 64 kbit/s
|
|
|
|
'0101' | 160 kbit/s | 80 kbit/s
|
|
|
|
'0110' | 192 kbit/s | 96 kbit/s
|
|
|
|
'0111' | 224 kbit/s | 112 kbit/s
|
|
|
|
'1000' | 256 kbit/s | 128 kbit/s
|
|
|
|
'1001' | 288 kbit/s | 160 kbit/s
|
|
|
|
'1010' | 320 kbit/s | 192 kbit/s
|
|
|
|
'1011' | 352 kbit/s | 224 kbit/s
|
|
|
|
'1100' | 384 kbit/s | 256 kbit/s
|
|
|
|
'1101' | 416 kbit/s | 320 kbit/s
|
|
|
|
'1110' | 448 kbit/s | 384 kbit/s
|
|
|
|
Note: For Layer II, not all combinations of total bitrate
|
|
|
|
and mode are allowed. See ISO11172-3 3-Annex B, Table 3-B.2
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
8:9 '00'=Stereo
|
2006-06-20 10:30:57 +07:00
|
|
|
'01'=JointStereo
|
|
|
|
'10'=Dual
|
|
|
|
'11'=Mono
|
2006-12-20 16:50:18 +07:00
|
|
|
Note: the cx23415 cannot decode Joint Stereo properly.
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
10:11 Mode Extension used in joint_stereo mode.
|
2006-06-20 10:30:57 +07:00
|
|
|
In Layer I and II they indicate which subbands are in
|
2006-05-22 20:31:37 +07:00
|
|
|
intensity_stereo. All other subbands are coded in stereo.
|
2006-06-20 10:30:57 +07:00
|
|
|
'00' subbands 4-31 in intensity_stereo, bound==4
|
|
|
|
'01' subbands 8-31 in intensity_stereo, bound==8
|
|
|
|
'10' subbands 12-31 in intensity_stereo, bound==12
|
|
|
|
'11' subbands 16-31 in intensity_stereo, bound==16
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
12:13 Emphasis:
|
2006-06-20 10:30:57 +07:00
|
|
|
'00' None
|
|
|
|
'01' 50/15uS
|
|
|
|
'10' reserved
|
|
|
|
'11' CCITT J.17
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
14 CRC:
|
2006-06-20 10:30:57 +07:00
|
|
|
'0' off
|
|
|
|
'1' on
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
15 Copyright:
|
2006-06-20 10:30:57 +07:00
|
|
|
'0' off
|
|
|
|
'1' on
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
16 Generation:
|
2006-06-20 10:30:57 +07:00
|
|
|
'0' copy
|
|
|
|
'1' original
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_HALT_FW
|
|
|
|
Enum 195/0xC3
|
|
|
|
Description
|
|
|
|
The firmware is halted and no further API calls are serviced until the
|
|
|
|
firmware is uploaded again.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_GET_VERSION
|
|
|
|
Enum 196/0xC4
|
|
|
|
Description
|
|
|
|
Returns the version of the encoder firmware.
|
|
|
|
Result[0]
|
|
|
|
Version bitmask:
|
|
|
|
Bits 0:15 build
|
|
|
|
Bits 16:23 minor
|
|
|
|
Bits 24:31 major
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_GOP_CLOSURE
|
|
|
|
Enum 197/0xC5
|
|
|
|
Description
|
|
|
|
Assigns the GOP open/close property.
|
|
|
|
Param[0]
|
|
|
|
0=Open
|
|
|
|
1=Closed
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_GET_SEQ_END
|
|
|
|
Enum 198/0xC6
|
|
|
|
Description
|
|
|
|
Obtains the sequence end code of the encoder's buffer. When a capture
|
|
|
|
is started a number of interrupts are still generated, the last of
|
|
|
|
which will have Result[0] set to 1 and Result[1] will contain the size
|
|
|
|
of the buffer.
|
|
|
|
Result[0]
|
|
|
|
State of the transfer (1 if last buffer)
|
|
|
|
Result[1]
|
|
|
|
If Result[0] is 1, this contains the size of the last buffer, undefined
|
|
|
|
otherwise.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_PGM_INDEX_INFO
|
|
|
|
Enum 199/0xC7
|
|
|
|
Description
|
|
|
|
Sets the Program Index Information.
|
2006-12-20 16:50:18 +07:00
|
|
|
The information is stored as follows:
|
|
|
|
|
|
|
|
struct info {
|
|
|
|
u32 length; // Length of this frame
|
|
|
|
u32 offset_low; // Offset in the file of the
|
|
|
|
u32 offset_high; // start of this frame
|
2007-08-24 03:48:41 +07:00
|
|
|
u32 mask1; // Bits 0-2 are the type mask:
|
2006-12-20 16:50:18 +07:00
|
|
|
// 1=I, 2=P, 4=B
|
2007-08-24 03:48:41 +07:00
|
|
|
// 0=End of Program Index, other fields
|
|
|
|
// are invalid.
|
2006-12-20 16:50:18 +07:00
|
|
|
u32 pts; // The PTS of the frame
|
|
|
|
u32 mask2; // Bit 0 is bit 32 of the pts.
|
|
|
|
};
|
|
|
|
u32 table_ptr;
|
|
|
|
struct info index[400];
|
|
|
|
|
|
|
|
The table_ptr is the encoder memory address in the table were
|
|
|
|
*new* entries will be written. Note that this is a ringbuffer,
|
|
|
|
so the table_ptr will wraparound.
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
|
|
|
Picture Mask:
|
|
|
|
0=No index capture
|
|
|
|
1=I frames
|
|
|
|
3=I,P frames
|
|
|
|
7=I,P,B frames
|
2006-12-20 16:50:18 +07:00
|
|
|
(Seems to be ignored, it always indexes I, P and B frames)
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[1]
|
|
|
|
Elements requested (up to 400)
|
|
|
|
Result[0]
|
2006-12-20 16:50:18 +07:00
|
|
|
Offset in the encoder memory of the start of the table.
|
2006-05-22 20:31:37 +07:00
|
|
|
Result[1]
|
|
|
|
Number of allocated elements up to a maximum of Param[1]
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_VBI_CONFIG
|
|
|
|
Enum 200/0xC8
|
|
|
|
Description
|
|
|
|
Configure VBI settings
|
|
|
|
Param[0]
|
|
|
|
Bitmap:
|
|
|
|
0 Mode '0' Sliced, '1' Raw
|
|
|
|
1:3 Insertion:
|
|
|
|
'000' insert in extension & user data
|
|
|
|
'001' insert in private packets
|
|
|
|
'010' separate stream and user data
|
|
|
|
'111' separate stream and private data
|
|
|
|
8:15 Stream ID (normally 0xBD)
|
|
|
|
Param[1]
|
|
|
|
Frames per interrupt (max 8). Only valid in raw mode.
|
|
|
|
Param[2]
|
|
|
|
Total raw VBI frames. Only valid in raw mode.
|
|
|
|
Param[3]
|
|
|
|
Start codes
|
|
|
|
Param[4]
|
|
|
|
Stop codes
|
|
|
|
Param[5]
|
|
|
|
Lines per frame
|
|
|
|
Param[6]
|
|
|
|
Byte per line
|
|
|
|
Result[0]
|
|
|
|
Observed frames per interrupt in raw mode only. Rage 1 to Param[1]
|
|
|
|
Result[1]
|
|
|
|
Observed number of frames in raw mode. Range 1 to Param[2]
|
|
|
|
Result[2]
|
|
|
|
Memory offset to start or raw VBI data
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_DMA_BLOCK_SIZE
|
|
|
|
Enum 201/0xC9
|
|
|
|
Description
|
|
|
|
Set DMA transfer block size
|
|
|
|
Param[0]
|
|
|
|
DMA transfer block size in bytes or frames. When unit is bytes,
|
|
|
|
supported block sizes are 2^7, 2^8 and 2^9 bytes.
|
|
|
|
Param[1]
|
|
|
|
Unit: 0=bytes, 1=frames
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
|
|
|
|
Enum 202/0xCA
|
|
|
|
Description
|
|
|
|
Returns information on the previous DMA transfer in conjunction with
|
|
|
|
bit 27 of the interrupt mask. Uses mailbox 10.
|
|
|
|
Result[0]
|
|
|
|
Type of stream
|
|
|
|
Result[1]
|
|
|
|
Address Offset
|
|
|
|
Result[2]
|
|
|
|
Maximum size of transfer
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
|
|
|
|
Enum 203/0xCB
|
|
|
|
Description
|
|
|
|
Returns information on the previous DMA transfer in conjunction with
|
2007-01-23 04:27:47 +07:00
|
|
|
bit 27 or 18 of the interrupt mask. Uses mailbox 9.
|
2006-05-22 20:31:37 +07:00
|
|
|
Result[0]
|
|
|
|
Status bits:
|
2007-01-23 04:27:47 +07:00
|
|
|
0 read completed
|
|
|
|
1 write completed
|
|
|
|
2 DMA read error
|
|
|
|
3 DMA write error
|
|
|
|
4 Scatter-Gather array error
|
2006-05-22 20:31:37 +07:00
|
|
|
Result[1]
|
|
|
|
DMA type
|
|
|
|
Result[2]
|
|
|
|
Presentation Time Stamp bits 0..31
|
|
|
|
Result[3]
|
|
|
|
Presentation Time Stamp bit 32
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SCHED_DMA_TO_HOST
|
|
|
|
Enum 204/0xCC
|
|
|
|
Description
|
|
|
|
Setup DMA to host operation
|
|
|
|
Param[0]
|
|
|
|
Memory address of link list
|
|
|
|
Param[1]
|
|
|
|
Length of link list (wtf: what units ???)
|
|
|
|
Param[2]
|
|
|
|
DMA type (0=MPEG)
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_INITIALIZE_INPUT
|
|
|
|
Enum 205/0xCD
|
|
|
|
Description
|
|
|
|
Initializes the video input
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_FRAME_DROP_RATE
|
|
|
|
Enum 208/0xD0
|
|
|
|
Description
|
|
|
|
For each frame captured, skip specified number of frames.
|
|
|
|
Param[0]
|
|
|
|
Number of frames to skip
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_PAUSE_ENCODER
|
|
|
|
Enum 210/0xD2
|
|
|
|
Description
|
|
|
|
During a pause condition, all frames are dropped instead of being encoded.
|
|
|
|
Param[0]
|
|
|
|
0=Pause encoding
|
|
|
|
1=Continue encoding
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_REFRESH_INPUT
|
|
|
|
Enum 211/0xD3
|
|
|
|
Description
|
|
|
|
Refreshes the video input
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_COPYRIGHT
|
|
|
|
Enum 212/0xD4
|
|
|
|
Description
|
|
|
|
Sets stream copyright property
|
|
|
|
Param[0]
|
|
|
|
0=Stream is not copyrighted
|
|
|
|
1=Stream is copyrighted
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_EVENT_NOTIFICATION
|
|
|
|
Enum 213/0xD5
|
|
|
|
Description
|
|
|
|
Setup firmware to notify the host about a particular event. Host must
|
|
|
|
unmask the interrupt bit.
|
|
|
|
Param[0]
|
|
|
|
Event (0=refresh encoder input)
|
|
|
|
Param[1]
|
|
|
|
Notification 0=disabled 1=enabled
|
|
|
|
Param[2]
|
|
|
|
Interrupt bit
|
|
|
|
Param[3]
|
|
|
|
Mailbox slot, -1 if no mailbox required.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_NUM_VSYNC_LINES
|
|
|
|
Enum 214/0xD6
|
|
|
|
Description
|
|
|
|
Depending on the analog video decoder used, this assigns the number
|
|
|
|
of lines for field 1 and 2.
|
|
|
|
Param[0]
|
|
|
|
Field 1 number of lines:
|
|
|
|
0x00EF for SAA7114
|
|
|
|
0x00F0 for SAA7115
|
|
|
|
0x0105 for Micronas
|
|
|
|
Param[1]
|
|
|
|
Field 2 number of lines:
|
|
|
|
0x00EF for SAA7114
|
|
|
|
0x00F0 for SAA7115
|
|
|
|
0x0106 for Micronas
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_SET_PLACEHOLDER
|
|
|
|
Enum 215/0xD7
|
|
|
|
Description
|
|
|
|
Provides a mechanism of inserting custom user data in the MPEG stream.
|
|
|
|
Param[0]
|
|
|
|
0=extension & user data
|
|
|
|
1=private packet with stream ID 0xBD
|
|
|
|
Param[1]
|
|
|
|
Rate at which to insert data, in units of frames (for private packet)
|
|
|
|
or GOPs (for ext. & user data)
|
|
|
|
Param[2]
|
|
|
|
Number of data DWORDs (below) to insert
|
|
|
|
Param[3]
|
|
|
|
Custom data 0
|
|
|
|
Param[4]
|
|
|
|
Custom data 1
|
|
|
|
Param[5]
|
|
|
|
Custom data 2
|
|
|
|
Param[6]
|
|
|
|
Custom data 3
|
|
|
|
Param[7]
|
|
|
|
Custom data 4
|
|
|
|
Param[8]
|
|
|
|
Custom data 5
|
|
|
|
Param[9]
|
|
|
|
Custom data 6
|
|
|
|
Param[10]
|
|
|
|
Custom data 7
|
|
|
|
Param[11]
|
|
|
|
Custom data 8
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_MUTE_VIDEO
|
|
|
|
Enum 217/0xD9
|
|
|
|
Description
|
|
|
|
Video muting
|
|
|
|
Param[0]
|
|
|
|
Bit usage:
|
|
|
|
0 '0'=video not muted
|
|
|
|
'1'=video muted, creates frames with the YUV color defined below
|
|
|
|
1:7 Unused
|
|
|
|
8:15 V chrominance information
|
|
|
|
16:23 U chrominance information
|
|
|
|
24:31 Y luminance information
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_MUTE_AUDIO
|
|
|
|
Enum 218/0xDA
|
|
|
|
Description
|
|
|
|
Audio muting
|
|
|
|
Param[0]
|
|
|
|
0=audio not muted
|
|
|
|
1=audio muted (produces silent mpeg audio stream)
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
2007-04-27 22:31:22 +07:00
|
|
|
Name CX2341X_ENC_SET_VERT_CROP_LINE
|
2006-05-22 20:31:37 +07:00
|
|
|
Enum 219/0xDB
|
|
|
|
Description
|
2007-04-27 22:31:22 +07:00
|
|
|
Something to do with 'Vertical Crop Line'
|
2006-05-22 20:31:37 +07:00
|
|
|
Param[0]
|
2007-04-27 22:31:22 +07:00
|
|
|
If saa7114 and raw VBI capture and 60 Hz, then set to 10001.
|
|
|
|
Else 0.
|
2006-05-22 20:31:37 +07:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Name CX2341X_ENC_MISC
|
|
|
|
Enum 220/0xDC
|
|
|
|
Description
|
|
|
|
Miscellaneous actions. Not known for 100% what it does. It's really a
|
|
|
|
sort of ioctl call. The first parameter is a command number, the second
|
|
|
|
the value.
|
|
|
|
Param[0]
|
|
|
|
Command number:
|
2007-02-03 06:42:02 +07:00
|
|
|
1=set initial SCR value when starting encoding (works).
|
2006-05-22 20:31:37 +07:00
|
|
|
2=set quality mode (apparently some test setting).
|
2007-04-27 22:31:22 +07:00
|
|
|
3=setup advanced VIM protection handling.
|
|
|
|
Always 1 for the cx23416 and 0 for cx23415.
|
|
|
|
4=generate DVD compatible PTS timestamps
|
2006-05-22 20:31:37 +07:00
|
|
|
5=USB flush mode
|
|
|
|
6=something to do with the quantization matrix
|
2007-02-03 06:42:02 +07:00
|
|
|
7=set navigation pack insertion for DVD: adds 0xbf (private stream 2)
|
|
|
|
packets to the MPEG. The size of these packets is 2048 bytes (including
|
|
|
|
the header of 6 bytes: 0x000001bf + length). The payload is zeroed and
|
|
|
|
it is up to the application to fill them in. These packets are apparently
|
|
|
|
inserted every four frames.
|
2006-05-22 20:31:37 +07:00
|
|
|
8=enable scene change detection (seems to be a failure)
|
|
|
|
9=set history parameters of the video input module
|
|
|
|
10=set input field order of VIM
|
|
|
|
11=set quantization matrix
|
2007-04-27 22:31:22 +07:00
|
|
|
12=reset audio interface after channel change or input switch (has no argument).
|
|
|
|
Needed for the cx2584x, not needed for the mspx4xx, but it doesn't seem to
|
|
|
|
do any harm calling it regardless.
|
2006-05-22 20:31:37 +07:00
|
|
|
13=set audio volume delay
|
|
|
|
14=set audio delay
|
|
|
|
|
|
|
|
Param[1]
|
|
|
|
Command value.
|