aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/video4linux/cx2341x/fw-encoder-api.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/video4linux/cx2341x/fw-encoder-api.txt')
-rw-r--r--Documentation/video4linux/cx2341x/fw-encoder-api.txt694
1 files changed, 694 insertions, 0 deletions
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
new file mode 100644
index 000000000000..001c68644b08
--- /dev/null
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -0,0 +1,694 @@
1Encoder firmware API description
2================================
3
4-------------------------------------------------------------------------------
5
6Name CX2341X_ENC_PING_FW
7Enum 128/0x80
8Description
9 Does nothing. Can be used to check if the firmware is responding.
10
11-------------------------------------------------------------------------------
12
13Name CX2341X_ENC_START_CAPTURE
14Enum 129/0x81
15Description
16 Commences the capture of video, audio and/or VBI data. All encoding
17 parameters must be initialized prior to this API call. Captures frames
18 continuously or until a predefined number of frames have been captured.
19Param[0]
20 Capture stream type:
21 0=MPEG
22 1=Raw
23 2=Raw passthrough
24 3=VBI
25
26Param[1]
27 Bitmask:
28 Bit 0 when set, captures YUV
29 Bit 1 when set, captures PCM audio
30 Bit 2 when set, captures VBI (same as param[0]=3)
31 Bit 3 when set, the capture destination is the decoder
32 (same as param[0]=2)
33 Bit 4 when set, the capture destination is the host
34 Note: this parameter is only meaningful for RAW capture type.
35
36-------------------------------------------------------------------------------
37
38Name CX2341X_ENC_STOP_CAPTURE
39Enum 130/0x82
40Description
41 Ends a capture in progress
42Param[0]
43 0=stop at end of GOP (generates IRQ)
44 1=stop immediate (no IRQ)
45Param[1]
46 Stream type to stop, see param[0] of API 0x81
47Param[2]
48 Subtype, see param[1] of API 0x81
49
50-------------------------------------------------------------------------------
51
52Name CX2341X_ENC_SET_AUDIO_ID
53Enum 137/0x89
54Description
55 Assigns the transport stream ID of the encoded audio stream
56Param[0]
57 Audio Stream ID
58
59-------------------------------------------------------------------------------
60
61Name CX2341X_ENC_SET_VIDEO_ID
62Enum 139/0x8B
63Description
64 Set video transport stream ID
65Param[0]
66 Video stream ID
67
68-------------------------------------------------------------------------------
69
70Name CX2341X_ENC_SET_PCR_ID
71Enum 141/0x8D
72Description
73 Assigns the transport stream ID for PCR packets
74Param[0]
75 PCR Stream ID
76
77-------------------------------------------------------------------------------
78
79Name CX2341X_ENC_SET_FRAME_RATE
80Enum 143/0x8F
81Description
82 Set video frames per second. Change occurs at start of new GOP.
83Param[0]
84 0=30fps
85 1=25fps
86
87-------------------------------------------------------------------------------
88
89Name CX2341X_ENC_SET_FRAME_SIZE
90Enum 145/0x91
91Description
92 Select video stream encoding resolution.
93Param[0]
94 Height in lines. Default 480
95Param[1]
96 Width in pixels. Default 720
97
98-------------------------------------------------------------------------------
99
100Name CX2341X_ENC_SET_BIT_RATE
101Enum 149/0x95
102Description
103 Assign average video stream bitrate. Note on the last three params:
104 Param[3] and [4] seem to be always 0, param [5] doesn't seem to be used.
105Param[0]
106 0=variable bitrate, 1=constant bitrate
107Param[1]
108 bitrate in bits per second
109Param[2]
110 peak bitrate in bits per second, divided by 400
111Param[3]
112 Mux bitrate in bits per second, divided by 400. May be 0 (default).
113Param[4]
114 Rate Control VBR Padding
115Param[5]
116 VBV Buffer used by encoder
117
118-------------------------------------------------------------------------------
119
120Name CX2341X_ENC_SET_GOP_PROPERTIES
121Enum 151/0x97
122Description
123 Setup the GOP structure
124Param[0]
125 GOP size (maximum is 34)
126Param[1]
127 Number of B frames between the I and P frame, plus 1.
128 For example: IBBPBBPBBPBB --> GOP size: 12, number of B frames: 2+1 = 3
129 Note that GOP size must be a multiple of (B-frames + 1).
130
131-------------------------------------------------------------------------------
132
133Name CX2341X_ENC_SET_ASPECT_RATIO
134Enum 153/0x99
135Description
136 Sets the encoding aspect ratio. Changes in the aspect ratio take effect
137 at the start of the next GOP.
138Param[0]
139 '0000' forbidden
140 '0001' 1:1 square
141 '0010' 4:3
142 '0011' 16:9
143 '0100' 2.21:1
144 '0101' reserved
145 ....
146 '1111' reserved
147
148-------------------------------------------------------------------------------
149
150Name CX2341X_ENC_SET_DNR_FILTER_MODE
151Enum 155/0x9B
152Description
153 Assign Dynamic Noise Reduction operating mode
154Param[0]
155 Bit0: Spatial filter, set=auto, clear=manual
156 Bit1: Temporal filter, set=auto, clear=manual
157Param[1]
158 Median filter:
159 0=Disabled
160 1=Horizontal
161 2=Vertical
162 3=Horiz/Vert
163 4=Diagonal
164
165-------------------------------------------------------------------------------
166
167Name CX2341X_ENC_SET_DNR_FILTER_PROPS
168Enum 157/0x9D
169Description
170 These Dynamic Noise Reduction filter values are only meaningful when
171 the respective filter is set to "manual" (See API 0x9B)
172Param[0]
173 Spatial filter: default 0, range 0:15
174Param[1]
175 Temporal filter: default 0, range 0:31
176
177-------------------------------------------------------------------------------
178
179Name CX2341X_ENC_SET_CORING_LEVELS
180Enum 159/0x9F
181Description
182 Assign Dynamic Noise Reduction median filter properties.
183Param[0]
184 Threshold above which the luminance median filter is enabled.
185 Default: 0, range 0:255
186Param[1]
187 Threshold below which the luminance median filter is enabled.
188 Default: 255, range 0:255
189Param[2]
190 Threshold above which the chrominance median filter is enabled.
191 Default: 0, range 0:255
192Param[3]
193 Threshold below which the chrominance median filter is enabled.
194 Default: 255, range 0:255
195
196-------------------------------------------------------------------------------
197
198Name CX2341X_ENC_SET_SPATIAL_FILTER_TYPE
199Enum 161/0xA1
200Description
201 Assign spatial prefilter parameters
202Param[0]
203 Luminance filter
204 0=Off
205 1=1D Horizontal
206 2=1D Vertical
207 3=2D H/V Separable (default)
208 4=2D Symmetric non-separable
209Param[1]
210 Chrominance filter
211 0=Off
212 1=1D Horizontal (default)
213
214-------------------------------------------------------------------------------
215
216Name CX2341X_ENC_SET_3_2_PULLDOWN
217Enum 177/0xB1
218Description
219 3:2 pulldown properties
220Param[0]
221 0=enabled
222 1=disabled
223
224-------------------------------------------------------------------------------
225
226Name CX2341X_ENC_SET_VBI_LINE
227Enum 183/0xB7
228Description
229 Selects VBI line number.
230Param[0]
231 Bits 0:4 line number
232 Bit 31 0=top_field, 1=bottom_field
233 Bits 0:31 all set specifies "all lines"
234Param[1]
235 VBI line information features: 0=disabled, 1=enabled
236Param[2]
237 Slicing: 0=None, 1=Closed Caption
238 Almost certainly not implemented. Set to 0.
239Param[3]
240 Luminance samples in this line.
241 Almost certainly not implemented. Set to 0.
242Param[4]
243 Chrominance samples in this line
244 Almost certainly not implemented. Set to 0.
245
246-------------------------------------------------------------------------------
247
248Name CX2341X_ENC_SET_STREAM_TYPE
249Enum 185/0xB9
250Description
251 Assign stream type
252 Note: Transport stream is not working in recent firmwares.
253 And in older firmwares the timestamps in the TS seem to be
254 unreliable.
255Param[0]
256 0=Program stream
257 1=Transport stream
258 2=MPEG1 stream
259 3=PES A/V stream
260 5=PES Video stream
261 7=PES Audio stream
262 10=DVD stream
263 11=VCD stream
264 12=SVCD stream
265 13=DVD_S1 stream
266 14=DVD_S2 stream
267
268-------------------------------------------------------------------------------
269
270Name CX2341X_ENC_SET_OUTPUT_PORT
271Enum 187/0xBB
272Description
273 Assign stream output port. Normally 0 when the data is copied through
274 the PCI bus (DMA), and 1 when the data is streamed to another chip
275 (pvrusb and cx88-blackbird).
276Param[0]
277 0=Memory (default)
278 1=Streaming
279 2=Serial
280Param[1]
281 Unknown, but leaving this to 0 seems to work best. Indications are that
282 this might have to do with USB support, although passing anything but 0
283 onl breaks things.
284
285-------------------------------------------------------------------------------
286
287Name CX2341X_ENC_SET_AUDIO_PROPERTIES
288Enum 189/0xBD
289Description
290 Set audio stream properties, may be called while encoding is in progress.
291 Note: all bitfields are consistent with ISO11172 documentation except
292 bits 2:3 which ISO docs define as:
293 '11' Layer I
294 '10' Layer II
295 '01' Layer III
296 '00' Undefined
297 This discrepancy may indicate a possible error in the documentation.
298 Testing indicated that only Layer II is actually working, and that
299 the minimum bitrate should be 192 kbps.
300Param[0]
301 Bitmask:
302 0:1 '00' 44.1Khz
303 '01' 48Khz
304 '10' 32Khz
305 '11' reserved
306
307 2:3 '01'=Layer I
308 '10'=Layer II
309
310 4:7 Bitrate:
311 Index | Layer I | Layer II
312 ------+-------------+------------
313 '0000' | free format | free format
314 '0001' | 32 kbit/s | 32 kbit/s
315 '0010' | 64 kbit/s | 48 kbit/s
316 '0011' | 96 kbit/s | 56 kbit/s
317 '0100' | 128 kbit/s | 64 kbit/s
318 '0101' | 160 kbit/s | 80 kbit/s
319 '0110' | 192 kbit/s | 96 kbit/s
320 '0111' | 224 kbit/s | 112 kbit/s
321 '1000' | 256 kbit/s | 128 kbit/s
322 '1001' | 288 kbit/s | 160 kbit/s
323 '1010' | 320 kbit/s | 192 kbit/s
324 '1011' | 352 kbit/s | 224 kbit/s
325 '1100' | 384 kbit/s | 256 kbit/s
326 '1101' | 416 kbit/s | 320 kbit/s
327 '1110' | 448 kbit/s | 384 kbit/s
328 Note: For Layer II, not all combinations of total bitrate
329 and mode are allowed. See ISO11172-3 3-Annex B, Table 3-B.2
330
331 8:9 '00'=Stereo
332 '01'=JointStereo
333 '10'=Dual
334 '11'=Mono
335 Note: testing seems to indicate that Mono and possibly
336 JointStereo are not working (default to stereo).
337 Dual does work, though.
338
339 10:11 Mode Extension used in joint_stereo mode.
340 In Layer I and II they indicate which subbands are in
341 intensity_stereo. All other subbands are coded in stereo.
342 '00' subbands 4-31 in intensity_stereo, bound==4
343 '01' subbands 8-31 in intensity_stereo, bound==8
344 '10' subbands 12-31 in intensity_stereo, bound==12
345 '11' subbands 16-31 in intensity_stereo, bound==16
346
347 12:13 Emphasis:
348 '00' None
349 '01' 50/15uS
350 '10' reserved
351 '11' CCITT J.17
352
353 14 CRC:
354 '0' off
355 '1' on
356
357 15 Copyright:
358 '0' off
359 '1' on
360
361 16 Generation:
362 '0' copy
363 '1' original
364
365-------------------------------------------------------------------------------
366
367Name CX2341X_ENC_HALT_FW
368Enum 195/0xC3
369Description
370 The firmware is halted and no further API calls are serviced until the
371 firmware is uploaded again.
372
373-------------------------------------------------------------------------------
374
375Name CX2341X_ENC_GET_VERSION
376Enum 196/0xC4
377Description
378 Returns the version of the encoder firmware.
379Result[0]
380 Version bitmask:
381 Bits 0:15 build
382 Bits 16:23 minor
383 Bits 24:31 major
384
385-------------------------------------------------------------------------------
386
387Name CX2341X_ENC_SET_GOP_CLOSURE
388Enum 197/0xC5
389Description
390 Assigns the GOP open/close property.
391Param[0]
392 0=Open
393 1=Closed
394
395-------------------------------------------------------------------------------
396
397Name CX2341X_ENC_GET_SEQ_END
398Enum 198/0xC6
399Description
400 Obtains the sequence end code of the encoder's buffer. When a capture
401 is started a number of interrupts are still generated, the last of
402 which will have Result[0] set to 1 and Result[1] will contain the size
403 of the buffer.
404Result[0]
405 State of the transfer (1 if last buffer)
406Result[1]
407 If Result[0] is 1, this contains the size of the last buffer, undefined
408 otherwise.
409
410-------------------------------------------------------------------------------
411
412Name CX2341X_ENC_SET_PGM_INDEX_INFO
413Enum 199/0xC7
414Description
415 Sets the Program Index Information.
416Param[0]
417 Picture Mask:
418 0=No index capture
419 1=I frames
420 3=I,P frames
421 7=I,P,B frames
422Param[1]
423 Elements requested (up to 400)
424Result[0]
425 Offset in SDF memory of the table.
426Result[1]
427 Number of allocated elements up to a maximum of Param[1]
428
429-------------------------------------------------------------------------------
430
431Name CX2341X_ENC_SET_VBI_CONFIG
432Enum 200/0xC8
433Description
434 Configure VBI settings
435Param[0]
436 Bitmap:
437 0 Mode '0' Sliced, '1' Raw
438 1:3 Insertion:
439 '000' insert in extension & user data
440 '001' insert in private packets
441 '010' separate stream and user data
442 '111' separate stream and private data
443 8:15 Stream ID (normally 0xBD)
444Param[1]
445 Frames per interrupt (max 8). Only valid in raw mode.
446Param[2]
447 Total raw VBI frames. Only valid in raw mode.
448Param[3]
449 Start codes
450Param[4]
451 Stop codes
452Param[5]
453 Lines per frame
454Param[6]
455 Byte per line
456Result[0]
457 Observed frames per interrupt in raw mode only. Rage 1 to Param[1]
458Result[1]
459 Observed number of frames in raw mode. Range 1 to Param[2]
460Result[2]
461 Memory offset to start or raw VBI data
462
463-------------------------------------------------------------------------------
464
465Name CX2341X_ENC_SET_DMA_BLOCK_SIZE
466Enum 201/0xC9
467Description
468 Set DMA transfer block size
469Param[0]
470 DMA transfer block size in bytes or frames. When unit is bytes,
471 supported block sizes are 2^7, 2^8 and 2^9 bytes.
472Param[1]
473 Unit: 0=bytes, 1=frames
474
475-------------------------------------------------------------------------------
476
477Name CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
478Enum 202/0xCA
479Description
480 Returns information on the previous DMA transfer in conjunction with
481 bit 27 of the interrupt mask. Uses mailbox 10.
482Result[0]
483 Type of stream
484Result[1]
485 Address Offset
486Result[2]
487 Maximum size of transfer
488
489-------------------------------------------------------------------------------
490
491Name CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
492Enum 203/0xCB
493Description
494 Returns information on the previous DMA transfer in conjunction with
495 bit 27 of the interrupt mask. Uses mailbox 9.
496Result[0]
497 Status bits:
498 Bit 0 set indicates transfer complete
499 Bit 2 set indicates transfer error
500 Bit 4 set indicates linked list error
501Result[1]
502 DMA type
503Result[2]
504 Presentation Time Stamp bits 0..31
505Result[3]
506 Presentation Time Stamp bit 32
507
508-------------------------------------------------------------------------------
509
510Name CX2341X_ENC_SCHED_DMA_TO_HOST
511Enum 204/0xCC
512Description
513 Setup DMA to host operation
514Param[0]
515 Memory address of link list
516Param[1]
517 Length of link list (wtf: what units ???)
518Param[2]
519 DMA type (0=MPEG)
520
521-------------------------------------------------------------------------------
522
523Name CX2341X_ENC_INITIALIZE_INPUT
524Enum 205/0xCD
525Description
526 Initializes the video input
527
528-------------------------------------------------------------------------------
529
530Name CX2341X_ENC_SET_FRAME_DROP_RATE
531Enum 208/0xD0
532Description
533 For each frame captured, skip specified number of frames.
534Param[0]
535 Number of frames to skip
536
537-------------------------------------------------------------------------------
538
539Name CX2341X_ENC_PAUSE_ENCODER
540Enum 210/0xD2
541Description
542 During a pause condition, all frames are dropped instead of being encoded.
543Param[0]
544 0=Pause encoding
545 1=Continue encoding
546
547-------------------------------------------------------------------------------
548
549Name CX2341X_ENC_REFRESH_INPUT
550Enum 211/0xD3
551Description
552 Refreshes the video input
553
554-------------------------------------------------------------------------------
555
556Name CX2341X_ENC_SET_COPYRIGHT
557Enum 212/0xD4
558Description
559 Sets stream copyright property
560Param[0]
561 0=Stream is not copyrighted
562 1=Stream is copyrighted
563
564-------------------------------------------------------------------------------
565
566Name CX2341X_ENC_SET_EVENT_NOTIFICATION
567Enum 213/0xD5
568Description
569 Setup firmware to notify the host about a particular event. Host must
570 unmask the interrupt bit.
571Param[0]
572 Event (0=refresh encoder input)
573Param[1]
574 Notification 0=disabled 1=enabled
575Param[2]
576 Interrupt bit
577Param[3]
578 Mailbox slot, -1 if no mailbox required.
579
580-------------------------------------------------------------------------------
581
582Name CX2341X_ENC_SET_NUM_VSYNC_LINES
583Enum 214/0xD6
584Description
585 Depending on the analog video decoder used, this assigns the number
586 of lines for field 1 and 2.
587Param[0]
588 Field 1 number of lines:
589 0x00EF for SAA7114
590 0x00F0 for SAA7115
591 0x0105 for Micronas
592Param[1]
593 Field 2 number of lines:
594 0x00EF for SAA7114
595 0x00F0 for SAA7115
596 0x0106 for Micronas
597
598-------------------------------------------------------------------------------
599
600Name CX2341X_ENC_SET_PLACEHOLDER
601Enum 215/0xD7
602Description
603 Provides a mechanism of inserting custom user data in the MPEG stream.
604Param[0]
605 0=extension & user data
606 1=private packet with stream ID 0xBD
607Param[1]
608 Rate at which to insert data, in units of frames (for private packet)
609 or GOPs (for ext. & user data)
610Param[2]
611 Number of data DWORDs (below) to insert
612Param[3]
613 Custom data 0
614Param[4]
615 Custom data 1
616Param[5]
617 Custom data 2
618Param[6]
619 Custom data 3
620Param[7]
621 Custom data 4
622Param[8]
623 Custom data 5
624Param[9]
625 Custom data 6
626Param[10]
627 Custom data 7
628Param[11]
629 Custom data 8
630
631-------------------------------------------------------------------------------
632
633Name CX2341X_ENC_MUTE_VIDEO
634Enum 217/0xD9
635Description
636 Video muting
637Param[0]
638 Bit usage:
639 0 '0'=video not muted
640 '1'=video muted, creates frames with the YUV color defined below
641 1:7 Unused
642 8:15 V chrominance information
643 16:23 U chrominance information
644 24:31 Y luminance information
645
646-------------------------------------------------------------------------------
647
648Name CX2341X_ENC_MUTE_AUDIO
649Enum 218/0xDA
650Description
651 Audio muting
652Param[0]
653 0=audio not muted
654 1=audio muted (produces silent mpeg audio stream)
655
656-------------------------------------------------------------------------------
657
658Name CX2341X_ENC_UNKNOWN
659Enum 219/0xDB
660Description
661 Unknown API, it's used by Hauppauge though.
662Param[0]
663 0 This is the value Hauppauge uses, Unknown what it means.
664
665-------------------------------------------------------------------------------
666
667Name CX2341X_ENC_MISC
668Enum 220/0xDC
669Description
670 Miscellaneous actions. Not known for 100% what it does. It's really a
671 sort of ioctl call. The first parameter is a command number, the second
672 the value.
673Param[0]
674 Command number:
675 1=set initial SCR value when starting encoding.
676 2=set quality mode (apparently some test setting).
677 3=setup advanced VIM protection handling (supposedly only for the cx23416
678 for raw YUV).
679 Actually it looks like this should be 0 for saa7114/5 based card and 1
680 for cx25840 based cards.
681 4=generate artificial PTS timestamps
682 5=USB flush mode
683 6=something to do with the quantization matrix
684 7=set navigation pack insertion for DVD
685 8=enable scene change detection (seems to be a failure)
686 9=set history parameters of the video input module
687 10=set input field order of VIM
688 11=set quantization matrix
689 12=reset audio interface
690 13=set audio volume delay
691 14=set audio delay
692
693Param[1]
694 Command value.