sched: make early bootup sched_clock() use safer
[wrt350n-kernel.git] / Documentation / video4linux / cx2341x / fw-decoder-api.txt
blob8c317b7a4fc9fc64bced2d0b87c75c8db0ab592b
1 Decoder firmware API description
2 ================================
4 Note: this API is part of the decoder firmware, so it's cx23415 only.
6 -------------------------------------------------------------------------------
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.
14 -------------------------------------------------------------------------------
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
24         audio resumes. (This is not implemented in the firmware, leave at 0)
26 -------------------------------------------------------------------------------
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
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.
39 Param[1]
40         PTS low
41 Param[2]
42         PTS high
44 -------------------------------------------------------------------------------
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
67         Note: n is limited to 2. Anything higher does not result in
68         faster playback. Instead the host should start dropping frames.
69 Param[1]
70         Direction: 0=forward, 1=reverse
71         Note: to make reverse playback work you have to write full GOPs in
72         reverse order.
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)
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.
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
89         resumes. (Not implemented in the firmware, leave at 0)
91 -------------------------------------------------------------------------------
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
101 -------------------------------------------------------------------------------
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.
111 -------------------------------------------------------------------------------
113 Name    CX2341X_DEC_GET_XFER_INFO
114 Enum    9/0x09
115 Description
116         This API call may be used to detect an end of stream condition.
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
126 -------------------------------------------------------------------------------
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
139 -------------------------------------------------------------------------------
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)
152 -------------------------------------------------------------------------------
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
163 -------------------------------------------------------------------------------
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.
171 -------------------------------------------------------------------------------
173 Name    CX2341X_DEC_SET_STANDARD
174 Enum    16/0x10
175 Description
176         Selects display standard
177 Param[0]
178         0=NTSC, 1=PAL
180 -------------------------------------------------------------------------------
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
192 -------------------------------------------------------------------------------
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
201 -------------------------------------------------------------------------------
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
218 -------------------------------------------------------------------------------
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
226             0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
227 Param[1]
228         Stereo mode action:
229             0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
231 -------------------------------------------------------------------------------
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]
239         Event: 0=Audio mode change between mono, (joint) stereo and dual channel.
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.
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.
250 -------------------------------------------------------------------------------
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
260 -------------------------------------------------------------------------------
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
273 -------------------------------------------------------------------------------
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
289 -------------------------------------------------------------------------------
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