Pull thermal into release branch
[sfrench/cifs-2.6.git] / Documentation / video4linux / cx2341x / fw-encoder-api.txt
index 001c68644b081c7a4f5f620e31af85790acd4902..5dd3109a8b3fed135b64cef2b5f56249d1ef31ea 100644 (file)
@@ -213,16 +213,6 @@ Param[1]
 
 -------------------------------------------------------------------------------
 
-Name   CX2341X_ENC_SET_3_2_PULLDOWN
-Enum   177/0xB1
-Description
-       3:2 pulldown properties
-Param[0]
-       0=enabled
-       1=disabled
-
--------------------------------------------------------------------------------
-
 Name   CX2341X_ENC_SET_VBI_LINE
 Enum   183/0xB7
 Description
@@ -280,7 +270,7 @@ Param[0]
 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
-       onl breaks things.
+       only breaks things.
 
 -------------------------------------------------------------------------------
 
@@ -332,9 +322,7 @@ Param[0]
                '01'=JointStereo
                '10'=Dual
                '11'=Mono
-               Note: testing seems to indicate that Mono and possibly
-               JointStereo are not working (default to stereo).
-               Dual does work, though.
+               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
@@ -413,16 +401,34 @@ 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-1 are the type mask:
+                                       // 1=I, 2=P, 4=B
+               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 SDF memory of the table.
+       Offset in the encoder memory of the start of the table.
 Result[1]
        Number of allocated elements up to a maximum of Param[1]
 
@@ -492,12 +498,14 @@ 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 of the interrupt mask. Uses mailbox 9.
+       bit 27 or 18 of the interrupt mask. Uses mailbox 9.
 Result[0]
        Status bits:
-           Bit 0 set indicates transfer complete
-           Bit 2 set indicates transfer error
-           Bit 4 set indicates linked list error
+               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]
@@ -655,12 +663,13 @@ Param[0]
 
 -------------------------------------------------------------------------------
 
-Name   CX2341X_ENC_UNKNOWN
+Name   CX2341X_ENC_SET_VERT_CROP_LINE
 Enum   219/0xDB
 Description
-       Unknown API, it's used by Hauppauge though.
+       Something to do with 'Vertical Crop Line'
 Param[0]
-       0 This is the value Hauppauge uses, Unknown what it means.
+       If saa7114 and raw VBI capture and 60 Hz, then set to 10001.
+       Else 0.
 
 -------------------------------------------------------------------------------
 
@@ -672,21 +681,25 @@ Description
        the value.
 Param[0]
        Command number:
-        1=set initial SCR value when starting encoding.
+        1=set initial SCR value when starting encoding (works).
         2=set quality mode (apparently some test setting).
-        3=setup advanced VIM protection handling (supposedly only for the cx23416
-          for raw YUV).
-          Actually it looks like this should be 0 for saa7114/5 based card and 1
-          for cx25840 based cards.
-        4=generate artificial PTS timestamps
+        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
+        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
+       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