123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709 |
- 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
- 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.
- 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
- 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
- -------------------------------------------------------------------------------
- Name CX2341X_ENC_SET_GOP_PROPERTIES
- Enum 151/0x97
- Description
- Setup the GOP structure
- Param[0]
- GOP size (maximum is 34)
- 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
- Note that GOP size must be a multiple of (B-frames + 1).
- -------------------------------------------------------------------------------
- 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
- Note: Transport stream is not working in recent firmwares.
- And in older firmwares the timestamps in the TS seem to be
- unreliable.
- 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
- 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).
- Param[0]
- 0=Memory (default)
- 1=Streaming
- 2=Serial
- 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
- only breaks things.
- -------------------------------------------------------------------------------
- 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.
- Testing indicated that only Layer II is actually working, and that
- the minimum bitrate should be 192 kbps.
- Param[0]
- Bitmask:
- 0:1 '00' 44.1Khz
- '01' 48Khz
- '10' 32Khz
- '11' reserved
- 2:3 '01'=Layer I
- '10'=Layer II
- 4:7 Bitrate:
- 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
- 8:9 '00'=Stereo
- '01'=JointStereo
- '10'=Dual
- '11'=Mono
- Note: the cx23415 cannot decode Joint Stereo properly.
- 10:11 Mode Extension used in joint_stereo mode.
- In Layer I and II they indicate which subbands are in
- intensity_stereo. All other subbands are coded in stereo.
- '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
- 12:13 Emphasis:
- '00' None
- '01' 50/15uS
- '10' reserved
- '11' CCITT J.17
- 14 CRC:
- '0' off
- '1' on
- 15 Copyright:
- '0' off
- '1' on
- 16 Generation:
- '0' copy
- '1' original
- -------------------------------------------------------------------------------
- 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.
- 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
- u32 mask1; // Bits 0-2 are the type mask:
- // 1=I, 2=P, 4=B
- // 0=End of Program Index, other fields
- // are invalid.
- 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.
- Param[0]
- Picture Mask:
- 0=No index capture
- 1=I frames
- 3=I,P frames
- 7=I,P,B frames
- (Seems to be ignored, it always indexes I, P and B frames)
- Param[1]
- Elements requested (up to 400)
- Result[0]
- Offset in the encoder memory of the start of the table.
- 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
- bit 27 or 18 of the interrupt mask. Uses mailbox 9.
- Result[0]
- Status bits:
- 0 read completed
- 1 write completed
- 2 DMA read error
- 3 DMA write error
- 4 Scatter-Gather array error
- 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)
- -------------------------------------------------------------------------------
- Name CX2341X_ENC_SET_VERT_CROP_LINE
- Enum 219/0xDB
- Description
- Something to do with 'Vertical Crop Line'
- Param[0]
- If saa7114 and raw VBI capture and 60 Hz, then set to 10001.
- Else 0.
- -------------------------------------------------------------------------------
- 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:
- 1=set initial SCR value when starting encoding (works).
- 2=set quality mode (apparently some test setting).
- 3=setup advanced VIM protection handling.
- Always 1 for the cx23416 and 0 for cx23415.
- 4=generate DVD compatible PTS timestamps
- 5=USB flush mode
- 6=something to do with the quantization matrix
- 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.
- 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
- 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.
- 13=set audio volume delay
- 14=set audio delay
- Param[1]
- Command value.
|