• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/Documentation/video4linux/cx2341x/
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_VBI_LINE
217Enum 	183/0xB7
218Description
219	Selects VBI line number.
220Param[0]
221	Bits 0:4 	line number
222	Bit  31		0=top_field, 1=bottom_field
223	Bits 0:31 	all set specifies "all lines"
224Param[1]
225	VBI line information features: 0=disabled, 1=enabled
226Param[2]
227	Slicing: 0=None, 1=Closed Caption
228	Almost certainly not implemented. Set to 0.
229Param[3]
230	Luminance samples in this line.
231	Almost certainly not implemented. Set to 0.
232Param[4]
233	Chrominance samples in this line
234	Almost certainly not implemented. Set to 0.
235
236-------------------------------------------------------------------------------
237
238Name 	CX2341X_ENC_SET_STREAM_TYPE
239Enum 	185/0xB9
240Description
241	Assign stream type
242	Note: Transport stream is not working in recent firmwares.
243	And in older firmwares the timestamps in the TS seem to be
244	unreliable.
245Param[0]
246	 0=Program stream
247	 1=Transport stream
248	 2=MPEG1 stream
249	 3=PES A/V stream
250	 5=PES Video stream
251	 7=PES Audio stream
252	10=DVD stream
253	11=VCD stream
254	12=SVCD stream
255	13=DVD_S1 stream
256	14=DVD_S2 stream
257
258-------------------------------------------------------------------------------
259
260Name 	CX2341X_ENC_SET_OUTPUT_PORT
261Enum 	187/0xBB
262Description
263	Assign stream output port. Normally 0 when the data is copied through
264	the PCI bus (DMA), and 1 when the data is streamed to another chip
265	(pvrusb and cx88-blackbird).
266Param[0]
267	0=Memory (default)
268	1=Streaming
269	2=Serial
270Param[1]
271	Unknown, but leaving this to 0 seems to work best. Indications are that
272	this might have to do with USB support, although passing anything but 0
273	only breaks things.
274
275-------------------------------------------------------------------------------
276
277Name 	CX2341X_ENC_SET_AUDIO_PROPERTIES
278Enum 	189/0xBD
279Description
280	Set audio stream properties, may be called while encoding is in progress.
281	Note: all bitfields are consistent with ISO11172 documentation except
282	bits 2:3 which ISO docs define as:
283		'11' Layer I
284		'10' Layer II
285		'01' Layer III
286		'00' Undefined
287	This discrepancy may indicate a possible error in the documentation.
288	Testing indicated that only Layer II is actually working, and that
289	the minimum bitrate should be 192 kbps.
290Param[0]
291	Bitmask:
292	   0:1  '00' 44.1Khz
293		'01' 48Khz
294		'10' 32Khz
295		'11' reserved
296
297	   2:3  '01'=Layer I
298		'10'=Layer II
299
300	   4:7  Bitrate:
301		     Index | Layer I     | Layer II
302		     ------+-------------+------------
303		    '0000' | free format | free format
304		    '0001' |  32 kbit/s  |  32 kbit/s
305		    '0010' |  64 kbit/s  |  48 kbit/s
306		    '0011' |  96 kbit/s  |  56 kbit/s
307		    '0100' | 128 kbit/s  |  64 kbit/s
308		    '0101' | 160 kbit/s  |  80 kbit/s
309		    '0110' | 192 kbit/s  |  96 kbit/s
310		    '0111' | 224 kbit/s  | 112 kbit/s
311		    '1000' | 256 kbit/s  | 128 kbit/s
312		    '1001' | 288 kbit/s  | 160 kbit/s
313		    '1010' | 320 kbit/s  | 192 kbit/s
314		    '1011' | 352 kbit/s  | 224 kbit/s
315		    '1100' | 384 kbit/s  | 256 kbit/s
316		    '1101' | 416 kbit/s  | 320 kbit/s
317		    '1110' | 448 kbit/s  | 384 kbit/s
318		Note: For Layer II, not all combinations of total bitrate
319		and mode are allowed. See ISO11172-3 3-Annex B, Table 3-B.2
320
321	   8:9  '00'=Stereo
322		'01'=JointStereo
323		'10'=Dual
324		'11'=Mono
325		Note: the cx23415 cannot decode Joint Stereo properly.
326
327	  10:11 Mode Extension used in joint_stereo mode.
328		In Layer I and II they indicate which subbands are in
329		intensity_stereo. All other subbands are coded in stereo.
330		    '00' subbands 4-31 in intensity_stereo, bound==4
331		    '01' subbands 8-31 in intensity_stereo, bound==8
332		    '10' subbands 12-31 in intensity_stereo, bound==12
333		    '11' subbands 16-31 in intensity_stereo, bound==16
334
335	  12:13 Emphasis:
336		    '00' None
337		    '01' 50/15uS
338		    '10' reserved
339		    '11' CCITT J.17
340
341	  14 	CRC:
342		    '0' off
343		    '1' on
344
345	  15    Copyright:
346		    '0' off
347		    '1' on
348
349	  16    Generation:
350		    '0' copy
351		    '1' original
352
353-------------------------------------------------------------------------------
354
355Name 	CX2341X_ENC_HALT_FW
356Enum 	195/0xC3
357Description
358	The firmware is halted and no further API calls are serviced until the
359	firmware is uploaded again.
360
361-------------------------------------------------------------------------------
362
363Name 	CX2341X_ENC_GET_VERSION
364Enum 	196/0xC4
365Description
366	Returns the version of the encoder firmware.
367Result[0]
368	Version bitmask:
369	    Bits  0:15 build
370	    Bits 16:23 minor
371	    Bits 24:31 major
372
373-------------------------------------------------------------------------------
374
375Name 	CX2341X_ENC_SET_GOP_CLOSURE
376Enum 	197/0xC5
377Description
378	Assigns the GOP open/close property.
379Param[0]
380	0=Open
381	1=Closed
382
383-------------------------------------------------------------------------------
384
385Name 	CX2341X_ENC_GET_SEQ_END
386Enum 	198/0xC6
387Description
388	Obtains the sequence end code of the encoder's buffer. When a capture
389	is started a number of interrupts are still generated, the last of
390	which will have Result[0] set to 1 and Result[1] will contain the size
391	of the buffer.
392Result[0]
393	State of the transfer (1 if last buffer)
394Result[1]
395	If Result[0] is 1, this contains the size of the last buffer, undefined
396	otherwise.
397
398-------------------------------------------------------------------------------
399
400Name 	CX2341X_ENC_SET_PGM_INDEX_INFO
401Enum 	199/0xC7
402Description
403	Sets the Program Index Information.
404	The information is stored as follows:
405
406	struct info {
407		u32 length;		// Length of this frame
408		u32 offset_low;		// Offset in the file of the
409		u32 offset_high;	// start of this frame
410		u32 mask1;		// Bits 0-1 are the type mask:
411					// 1=I, 2=P, 4=B
412		u32 pts;		// The PTS of the frame
413		u32 mask2;		// Bit 0 is bit 32 of the pts.
414	};
415	u32 table_ptr;
416	struct info index[400];
417
418	The table_ptr is the encoder memory address in the table were
419	*new* entries will be written. Note that this is a ringbuffer,
420	so the table_ptr will wraparound.
421Param[0]
422	Picture Mask:
423	    0=No index capture
424	    1=I frames
425	    3=I,P frames
426	    7=I,P,B frames
427	(Seems to be ignored, it always indexes I, P and B frames)
428Param[1]
429	Elements requested (up to 400)
430Result[0]
431	Offset in the encoder memory of the start of the table.
432Result[1]
433	Number of allocated elements up to a maximum of Param[1]
434
435-------------------------------------------------------------------------------
436
437Name 	CX2341X_ENC_SET_VBI_CONFIG
438Enum 	200/0xC8
439Description
440	Configure VBI settings
441Param[0]
442	Bitmap:
443	    0    Mode '0' Sliced, '1' Raw
444	    1:3  Insertion:
445		     '000' insert in extension & user data
446		     '001' insert in private packets
447		     '010' separate stream and user data
448		     '111' separate stream and private data
449	    8:15 Stream ID (normally 0xBD)
450Param[1]
451	Frames per interrupt (max 8). Only valid in raw mode.
452Param[2]
453	Total raw VBI frames. Only valid in raw mode.
454Param[3]
455	Start codes
456Param[4]
457	Stop codes
458Param[5]
459	Lines per frame
460Param[6]
461	Byte per line
462Result[0]
463	Observed frames per interrupt in raw mode only. Rage 1 to Param[1]
464Result[1]
465	Observed number of frames in raw mode. Range 1 to Param[2]
466Result[2]
467	Memory offset to start or raw VBI data
468
469-------------------------------------------------------------------------------
470
471Name 	CX2341X_ENC_SET_DMA_BLOCK_SIZE
472Enum 	201/0xC9
473Description
474	Set DMA transfer block size
475Param[0]
476	DMA transfer block size in bytes or frames. When unit is bytes,
477	supported block sizes are 2^7, 2^8 and 2^9 bytes.
478Param[1]
479	Unit: 0=bytes, 1=frames
480
481-------------------------------------------------------------------------------
482
483Name 	CX2341X_ENC_GET_PREV_DMA_INFO_MB_10
484Enum 	202/0xCA
485Description
486	Returns information on the previous DMA transfer in conjunction with
487	bit 27 of the interrupt mask. Uses mailbox 10.
488Result[0]
489	Type of stream
490Result[1]
491	Address Offset
492Result[2]
493	Maximum size of transfer
494
495-------------------------------------------------------------------------------
496
497Name 	CX2341X_ENC_GET_PREV_DMA_INFO_MB_9
498Enum 	203/0xCB
499Description
500	Returns information on the previous DMA transfer in conjunction with
501	bit 27 or 18 of the interrupt mask. Uses mailbox 9.
502Result[0]
503	Status bits:
504		0   read completed
505		1   write completed
506		2   DMA read error
507		3   DMA write error
508		4   Scatter-Gather array error
509Result[1]
510	DMA type
511Result[2]
512	Presentation Time Stamp bits 0..31
513Result[3]
514	Presentation Time Stamp bit 32
515
516-------------------------------------------------------------------------------
517
518Name 	CX2341X_ENC_SCHED_DMA_TO_HOST
519Enum 	204/0xCC
520Description
521	Setup DMA to host operation
522Param[0]
523	Memory address of link list
524Param[1]
525	Length of link list (wtf: what units ???)
526Param[2]
527	DMA type (0=MPEG)
528
529-------------------------------------------------------------------------------
530
531Name 	CX2341X_ENC_INITIALIZE_INPUT
532Enum 	205/0xCD
533Description
534	Initializes the video input
535
536-------------------------------------------------------------------------------
537
538Name 	CX2341X_ENC_SET_FRAME_DROP_RATE
539Enum 	208/0xD0
540Description
541	For each frame captured, skip specified number of frames.
542Param[0]
543	Number of frames to skip
544
545-------------------------------------------------------------------------------
546
547Name 	CX2341X_ENC_PAUSE_ENCODER
548Enum 	210/0xD2
549Description
550	During a pause condition, all frames are dropped instead of being encoded.
551Param[0]
552	0=Pause encoding
553	1=Continue encoding
554
555-------------------------------------------------------------------------------
556
557Name 	CX2341X_ENC_REFRESH_INPUT
558Enum 	211/0xD3
559Description
560	Refreshes the video input
561
562-------------------------------------------------------------------------------
563
564Name 	CX2341X_ENC_SET_COPYRIGHT
565Enum 	212/0xD4
566Description
567	Sets stream copyright property
568Param[0]
569	0=Stream is not copyrighted
570	1=Stream is copyrighted
571
572-------------------------------------------------------------------------------
573
574Name 	CX2341X_ENC_SET_EVENT_NOTIFICATION
575Enum 	213/0xD5
576Description
577	Setup firmware to notify the host about a particular event. Host must
578	unmask the interrupt bit.
579Param[0]
580	Event (0=refresh encoder input)
581Param[1]
582	Notification 0=disabled 1=enabled
583Param[2]
584	Interrupt bit
585Param[3]
586	Mailbox slot, -1 if no mailbox required.
587
588-------------------------------------------------------------------------------
589
590Name 	CX2341X_ENC_SET_NUM_VSYNC_LINES
591Enum 	214/0xD6
592Description
593	Depending on the analog video decoder used, this assigns the number
594	of lines for field 1 and 2.
595Param[0]
596	Field 1 number of lines:
597	    0x00EF for SAA7114
598	    0x00F0 for SAA7115
599	    0x0105 for Micronas
600Param[1]
601	Field 2 number of lines:
602	    0x00EF for SAA7114
603	    0x00F0 for SAA7115
604	    0x0106 for Micronas
605
606-------------------------------------------------------------------------------
607
608Name 	CX2341X_ENC_SET_PLACEHOLDER
609Enum 	215/0xD7
610Description
611	Provides a mechanism of inserting custom user data in the MPEG stream.
612Param[0]
613	0=extension & user data
614	1=private packet with stream ID 0xBD
615Param[1]
616	Rate at which to insert data, in units of frames (for private packet)
617	or GOPs (for ext. & user data)
618Param[2]
619	Number of data DWORDs (below) to insert
620Param[3]
621	Custom data 0
622Param[4]
623	Custom data 1
624Param[5]
625	Custom data 2
626Param[6]
627	Custom data 3
628Param[7]
629	Custom data 4
630Param[8]
631	Custom data 5
632Param[9]
633	Custom data 6
634Param[10]
635	Custom data 7
636Param[11]
637	Custom data 8
638
639-------------------------------------------------------------------------------
640
641Name 	CX2341X_ENC_MUTE_VIDEO
642Enum 	217/0xD9
643Description
644	Video muting
645Param[0]
646	Bit usage:
647	 0    	'0'=video not muted
648		'1'=video muted, creates frames with the YUV color defined below
649	 1:7  	Unused
650	 8:15 	V chrominance information
651	16:23 	U chrominance information
652	24:31 	Y luminance information
653
654-------------------------------------------------------------------------------
655
656Name 	CX2341X_ENC_MUTE_AUDIO
657Enum 	218/0xDA
658Description
659	Audio muting
660Param[0]
661	0=audio not muted
662	1=audio muted (produces silent mpeg audio stream)
663
664-------------------------------------------------------------------------------
665
666Name 	CX2341X_ENC_SET_VERT_CROP_LINE
667Enum 	219/0xDB
668Description
669	Something to do with 'Vertical Crop Line'
670Param[0]
671	If saa7114 and raw VBI capture and 60 Hz, then set to 10001.
672	Else 0.
673
674-------------------------------------------------------------------------------
675
676Name 	CX2341X_ENC_MISC
677Enum 	220/0xDC
678Description
679	Miscellaneous actions. Not known for 100% what it does. It's really a
680	sort of ioctl call. The first parameter is a command number, the second
681	the value.
682Param[0]
683	Command number:
684	 1=set initial SCR value when starting encoding (works).
685	 2=set quality mode (apparently some test setting).
686	 3=setup advanced VIM protection handling.
687	   Always 1 for the cx23416 and 0 for cx23415.
688	 4=generate DVD compatible PTS timestamps
689	 5=USB flush mode
690	 6=something to do with the quantization matrix
691	 7=set navigation pack insertion for DVD: adds 0xbf (private stream 2)
692	   packets to the MPEG. The size of these packets is 2048 bytes (including
693	   the header of 6 bytes: 0x000001bf + length). The payload is zeroed and
694	   it is up to the application to fill them in. These packets are apparently
695	   inserted every four frames.
696	 8=enable scene change detection (seems to be a failure)
697	 9=set history parameters of the video input module
698	10=set input field order of VIM
699	11=set quantization matrix
700	12=reset audio interface after channel change or input switch (has no argument).
701	   Needed for the cx2584x, not needed for the mspx4xx, but it doesn't seem to
702	   do any harm calling it regardless.
703	13=set audio volume delay
704	14=set audio delay
705
706Param[1]
707	Command value.
708