| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 1 | Decoder firmware API description | 
|  | 2 | ================================ | 
|  | 3 |  | 
|  | 4 | Note: this API is part of the decoder firmware, so it's cx23415 only. | 
|  | 5 |  | 
|  | 6 | ------------------------------------------------------------------------------- | 
|  | 7 |  | 
|  | 8 | Name 	CX2341X_DEC_PING_FW | 
|  | 9 | Enum 	0/0x00 | 
|  | 10 | Description | 
|  | 11 | This API call does nothing. It may be used to check if the firmware | 
|  | 12 | is responding. | 
|  | 13 |  | 
|  | 14 | ------------------------------------------------------------------------------- | 
|  | 15 |  | 
|  | 16 | Name 	CX2341X_DEC_START_PLAYBACK | 
|  | 17 | Enum 	1/0x01 | 
|  | 18 | Description | 
|  | 19 | Begin or resume playback. | 
|  | 20 | Param[0] | 
|  | 21 | 0 based frame number in GOP to begin playback from. | 
|  | 22 | Param[1] | 
|  | 23 | Specifies the number of muted audio frames to play before normal | 
| Hans Verkuil | 20a919f | 2006-12-18 22:43:36 -0300 | [diff] [blame] | 24 | audio resumes. (This is not implemented in the firmware, leave at 0) | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 25 |  | 
|  | 26 | ------------------------------------------------------------------------------- | 
|  | 27 |  | 
|  | 28 | Name 	CX2341X_DEC_STOP_PLAYBACK | 
|  | 29 | Enum 	2/0x02 | 
|  | 30 | Description | 
|  | 31 | Ends playback and clears all decoder buffers. If PTS is not zero, | 
|  | 32 | playback stops at specified PTS. | 
|  | 33 | Param[0] | 
|  | 34 | Display 0=last frame, 1=black | 
| Hans Verkuil | e12ceaf | 2006-12-18 13:06:30 -0300 | [diff] [blame] | 35 | Note: this takes effect immediately, so if you want to wait for a PTS, | 
|  | 36 | then use '0', otherwise the screen goes to black at once. | 
|  | 37 | You can call this later (even if there is no playback) with a 1 value | 
|  | 38 | to set the screen to black. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 39 | Param[1] | 
|  | 40 | PTS low | 
|  | 41 | Param[2] | 
|  | 42 | PTS high | 
|  | 43 |  | 
|  | 44 | ------------------------------------------------------------------------------- | 
|  | 45 |  | 
|  | 46 | Name 	CX2341X_DEC_SET_PLAYBACK_SPEED | 
|  | 47 | Enum 	3/0x03 | 
|  | 48 | Description | 
|  | 49 | Playback stream at speed other than normal. There are two modes of | 
|  | 50 | operation: | 
|  | 51 | Smooth: host transfers entire stream and firmware drops unused | 
|  | 52 | frames. | 
|  | 53 | Coarse: host drops frames based on indexing as required to achieve | 
|  | 54 | desired speed. | 
|  | 55 | Param[0] | 
|  | 56 | Bitmap: | 
|  | 57 | 0:7  0 normal | 
|  | 58 | 1 fast only "1.5 times" | 
|  | 59 | n nX fast, 1/nX slow | 
|  | 60 | 30   Framedrop: | 
|  | 61 | '0' during 1.5 times play, every other B frame is dropped | 
|  | 62 | '1' during 1.5 times play, stream is unchanged (bitrate | 
|  | 63 | must not exceed 8mbps) | 
|  | 64 | 31   Speed: | 
|  | 65 | '0' slow | 
|  | 66 | '1' fast | 
| Hans Verkuil | 20a919f | 2006-12-18 22:43:36 -0300 | [diff] [blame] | 67 | Note: n is limited to 2. Anything higher does not result in | 
| Hans Verkuil | e12ceaf | 2006-12-18 13:06:30 -0300 | [diff] [blame] | 68 | faster playback. Instead the host should start dropping frames. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 69 | Param[1] | 
|  | 70 | Direction: 0=forward, 1=reverse | 
| Hans Verkuil | e12ceaf | 2006-12-18 13:06:30 -0300 | [diff] [blame] | 71 | Note: to make reverse playback work you have to write full GOPs in | 
|  | 72 | reverse order. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 73 | Param[2] | 
|  | 74 | Picture mask: | 
|  | 75 | 1=I frames | 
|  | 76 | 3=I, P frames | 
|  | 77 | 7=I, P, B frames | 
|  | 78 | Param[3] | 
|  | 79 | B frames per GOP (for reverse play only) | 
| Hans Verkuil | 20a919f | 2006-12-18 22:43:36 -0300 | [diff] [blame] | 80 | Note: for reverse playback the Picture Mask should be set to I or I, P. | 
|  | 81 | Adding B frames to the mask will result in corrupt video. This field | 
|  | 82 | has to be set to the correct value in order to keep the timing correct. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 83 | Param[4] | 
|  | 84 | Mute audio: 0=disable, 1=enable | 
|  | 85 | Param[5] | 
|  | 86 | Display 0=frame, 1=field | 
|  | 87 | Param[6] | 
|  | 88 | Specifies the number of muted audio frames to play before normal audio | 
| Hans Verkuil | 20a919f | 2006-12-18 22:43:36 -0300 | [diff] [blame] | 89 | resumes. (Not implemented in the firmware, leave at 0) | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 90 |  | 
|  | 91 | ------------------------------------------------------------------------------- | 
|  | 92 |  | 
|  | 93 | Name 	CX2341X_DEC_STEP_VIDEO | 
|  | 94 | Enum 	5/0x05 | 
|  | 95 | Description | 
|  | 96 | Each call to this API steps the playback to the next unit defined below | 
|  | 97 | in the current playback direction. | 
|  | 98 | Param[0] | 
|  | 99 | 0=frame, 1=top field, 2=bottom field | 
|  | 100 |  | 
|  | 101 | ------------------------------------------------------------------------------- | 
|  | 102 |  | 
|  | 103 | Name 	CX2341X_DEC_SET_DMA_BLOCK_SIZE | 
|  | 104 | Enum 	8/0x08 | 
|  | 105 | Description | 
|  | 106 | Set DMA transfer block size. Counterpart to API 0xC9 | 
|  | 107 | Param[0] | 
|  | 108 | DMA transfer block size in bytes. A different size may be specified | 
|  | 109 | when issuing the DMA transfer command. | 
|  | 110 |  | 
|  | 111 | ------------------------------------------------------------------------------- | 
|  | 112 |  | 
|  | 113 | Name 	CX2341X_DEC_GET_XFER_INFO | 
|  | 114 | Enum 	9/0x09 | 
|  | 115 | Description | 
| Matt LaPlante | 6c28f2c | 2006-10-03 22:46:31 +0200 | [diff] [blame] | 116 | This API call may be used to detect an end of stream condition. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 117 | Result[0] | 
|  | 118 | Stream type | 
|  | 119 | Result[1] | 
|  | 120 | Address offset | 
|  | 121 | Result[2] | 
|  | 122 | Maximum bytes to transfer | 
|  | 123 | Result[3] | 
|  | 124 | Buffer fullness | 
|  | 125 |  | 
|  | 126 | ------------------------------------------------------------------------------- | 
|  | 127 |  | 
|  | 128 | Name 	CX2341X_DEC_GET_DMA_STATUS | 
|  | 129 | Enum 	10/0x0A | 
|  | 130 | Description | 
|  | 131 | Status of the last DMA transfer | 
|  | 132 | Result[0] | 
|  | 133 | Bit 1 set means transfer complete | 
|  | 134 | Bit 2 set means DMA error | 
|  | 135 | Bit 3 set means linked list error | 
|  | 136 | Result[1] | 
|  | 137 | DMA type: 0=MPEG, 1=OSD, 2=YUV | 
|  | 138 |  | 
|  | 139 | ------------------------------------------------------------------------------- | 
|  | 140 |  | 
|  | 141 | Name 	CX2341X_DEC_SCHED_DMA_FROM_HOST | 
|  | 142 | Enum 	11/0x0B | 
|  | 143 | Description | 
|  | 144 | Setup DMA from host operation. Counterpart to API 0xCC | 
|  | 145 | Param[0] | 
|  | 146 | Memory address of link list | 
|  | 147 | Param[1] | 
|  | 148 | Total # of bytes to transfer | 
|  | 149 | Param[2] | 
|  | 150 | DMA type (0=MPEG, 1=OSD, 2=YUV) | 
|  | 151 |  | 
|  | 152 | ------------------------------------------------------------------------------- | 
|  | 153 |  | 
|  | 154 | Name 	CX2341X_DEC_PAUSE_PLAYBACK | 
|  | 155 | Enum 	13/0x0D | 
|  | 156 | Description | 
|  | 157 | Freeze playback immediately. In this mode, when internal buffers are | 
|  | 158 | full, no more data will be accepted and data request IRQs will be | 
|  | 159 | masked. | 
|  | 160 | Param[0] | 
|  | 161 | Display: 0=last frame, 1=black | 
|  | 162 |  | 
|  | 163 | ------------------------------------------------------------------------------- | 
|  | 164 |  | 
|  | 165 | Name 	CX2341X_DEC_HALT_FW | 
|  | 166 | Enum 	14/0x0E | 
|  | 167 | Description | 
|  | 168 | The firmware is halted and no further API calls are serviced until | 
|  | 169 | the firmware is uploaded again. | 
|  | 170 |  | 
|  | 171 | ------------------------------------------------------------------------------- | 
|  | 172 |  | 
|  | 173 | Name 	CX2341X_DEC_SET_STANDARD | 
|  | 174 | Enum 	16/0x10 | 
|  | 175 | Description | 
|  | 176 | Selects display standard | 
|  | 177 | Param[0] | 
|  | 178 | 0=NTSC, 1=PAL | 
|  | 179 |  | 
|  | 180 | ------------------------------------------------------------------------------- | 
|  | 181 |  | 
|  | 182 | Name 	CX2341X_DEC_GET_VERSION | 
|  | 183 | Enum 	17/0x11 | 
|  | 184 | Description | 
|  | 185 | Returns decoder firmware version information | 
|  | 186 | Result[0] | 
|  | 187 | Version bitmask: | 
|  | 188 | Bits  0:15 build | 
|  | 189 | Bits 16:23 minor | 
|  | 190 | Bits 24:31 major | 
|  | 191 |  | 
|  | 192 | ------------------------------------------------------------------------------- | 
|  | 193 |  | 
|  | 194 | Name 	CX2341X_DEC_SET_STREAM_INPUT | 
|  | 195 | Enum 	20/0x14 | 
|  | 196 | Description | 
|  | 197 | Select decoder stream input port | 
|  | 198 | Param[0] | 
|  | 199 | 0=memory (default), 1=streaming | 
|  | 200 |  | 
|  | 201 | ------------------------------------------------------------------------------- | 
|  | 202 |  | 
|  | 203 | Name 	CX2341X_DEC_GET_TIMING_INFO | 
|  | 204 | Enum 	21/0x15 | 
|  | 205 | Description | 
|  | 206 | Returns timing information from start of playback | 
|  | 207 | Result[0] | 
|  | 208 | Frame count by decode order | 
|  | 209 | Result[1] | 
|  | 210 | Video PTS bits 0:31 by display order | 
|  | 211 | Result[2] | 
|  | 212 | Video PTS bit 32 by display order | 
|  | 213 | Result[3] | 
|  | 214 | SCR bits 0:31 by display order | 
|  | 215 | Result[4] | 
|  | 216 | SCR bit 32 by display order | 
|  | 217 |  | 
|  | 218 | ------------------------------------------------------------------------------- | 
|  | 219 |  | 
|  | 220 | Name 	CX2341X_DEC_SET_AUDIO_MODE | 
|  | 221 | Enum 	22/0x16 | 
|  | 222 | Description | 
|  | 223 | Select audio mode | 
|  | 224 | Param[0] | 
|  | 225 | Dual mono mode action | 
| Hans Verkuil | e12ceaf | 2006-12-18 13:06:30 -0300 | [diff] [blame] | 226 | 0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 227 | Param[1] | 
|  | 228 | Stereo mode action: | 
|  | 229 | 0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged | 
|  | 230 |  | 
|  | 231 | ------------------------------------------------------------------------------- | 
|  | 232 |  | 
|  | 233 | Name 	CX2341X_DEC_SET_EVENT_NOTIFICATION | 
|  | 234 | Enum 	23/0x17 | 
|  | 235 | Description | 
|  | 236 | Setup firmware to notify the host about a particular event. | 
|  | 237 | Counterpart to API 0xD5 | 
|  | 238 | Param[0] | 
| Hans Verkuil | d84e2bd | 2006-12-20 06:50:18 -0300 | [diff] [blame] | 239 | Event: 0=Audio mode change between mono, (joint) stereo and dual channel. | 
| Hans Verkuil | e12ceaf | 2006-12-18 13:06:30 -0300 | [diff] [blame] | 240 | Event: 3=Decoder started | 
|  | 241 | Event: 4=Unknown: goes off 10-15 times per second while decoding. | 
|  | 242 | Event: 5=Some sync event: goes off once per frame. | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 243 | Param[1] | 
|  | 244 | Notification 0=disabled, 1=enabled | 
|  | 245 | Param[2] | 
|  | 246 | Interrupt bit | 
|  | 247 | Param[3] | 
|  | 248 | Mailbox slot, -1 if no mailbox required. | 
|  | 249 |  | 
|  | 250 | ------------------------------------------------------------------------------- | 
|  | 251 |  | 
|  | 252 | Name 	CX2341X_DEC_SET_DISPLAY_BUFFERS | 
|  | 253 | Enum 	24/0x18 | 
|  | 254 | Description | 
|  | 255 | Number of display buffers. To decode all frames in reverse playback you | 
|  | 256 | must use nine buffers. | 
|  | 257 | Param[0] | 
|  | 258 | 0=six buffers, 1=nine buffers | 
|  | 259 |  | 
|  | 260 | ------------------------------------------------------------------------------- | 
|  | 261 |  | 
|  | 262 | Name 	CX2341X_DEC_EXTRACT_VBI | 
|  | 263 | Enum 	25/0x19 | 
|  | 264 | Description | 
|  | 265 | Extracts VBI data | 
|  | 266 | Param[0] | 
|  | 267 | 0=extract from extension & user data, 1=extract from private packets | 
|  | 268 | Result[0] | 
|  | 269 | VBI table location | 
|  | 270 | Result[1] | 
|  | 271 | VBI table size | 
|  | 272 |  | 
|  | 273 | ------------------------------------------------------------------------------- | 
|  | 274 |  | 
|  | 275 | Name 	CX2341X_DEC_SET_DECODER_SOURCE | 
|  | 276 | Enum 	26/0x1A | 
|  | 277 | Description | 
|  | 278 | Selects decoder source. Ensure that the parameters passed to this | 
|  | 279 | API match the encoder settings. | 
|  | 280 | Param[0] | 
|  | 281 | Mode: 0=MPEG from host, 1=YUV from encoder, 2=YUV from host | 
|  | 282 | Param[1] | 
|  | 283 | YUV picture width | 
|  | 284 | Param[2] | 
|  | 285 | YUV picture height | 
|  | 286 | Param[3] | 
|  | 287 | Bitmap: see Param[0] of API 0xBD | 
|  | 288 |  | 
|  | 289 | ------------------------------------------------------------------------------- | 
|  | 290 |  | 
| Mauro Carvalho Chehab | 447d6fb | 2006-05-22 10:31:37 -0300 | [diff] [blame] | 291 | Name 	CX2341X_DEC_SET_PREBUFFERING | 
|  | 292 | Enum 	30/0x1E | 
|  | 293 | Description | 
|  | 294 | Decoder prebuffering, when enabled up to 128KB are buffered for | 
|  | 295 | streams <8mpbs or 640KB for streams >8mbps | 
|  | 296 | Param[0] | 
|  | 297 | 0=off, 1=on |