Hi Mark,

On Wednesday 26 February 2014 10:20:06 Ryan, Mark D wrote:
> On Tuesday, February 25, 2014 10:50 PM Sarah Sharp wrote:
> > 
> > Hi Laurent and Mauro,
> > 
> > Mark has running into issues with the Realtek integrated webcam on a Dell
> > XPS 12 system that uses bulk endpoints.  The webcam shows visible glitches
> > with certain resolutions (stripes of frame missing, distorted images,
> > purple and green colors, blank image, or missing the bottom half of the
> > image).
>
>  [Ryan, Mark D]
> 
> Sarah, thanks for the introduction.
> 
> I can provide a little bit more information.
> 
> 1. I've tried all the UVC driver quirks but none of these seem to help.

That was a good idea, but there's no quirk for this kind of issue I'm afraid.
 
> 2. I've also run some tests with the UVC traces enabled.  There are quite a
> lot of errors.  I include a portion of the logs below.  They were generated
> on Ubuntu 13.10 (linux 3.11.0-12) running guvcview recording YVUV 1280x720
> at 10fps.

You can set the trace parameter to 0x7bf in future tests to remove messages 
regarding the V4L2 API calls and timestamp statistics, it will make the log 
slightly more readable.

Sarah has sent me two usbmon traces, one in a working case and the other in a 
non-working case. They unfortunately look both correct to me, so I'll likely 
need your help to debug this.

Let's start with a bit of background information. I'll skip the UVC control 
protocol as that's not relevant to this discussion, except to mention that UVC 
uses control messages to negotiate the video format with the device, and 
receives the maximum payload transfer size (more about this below) from the 
device. Here's URB 61 in the non-working trace that commits the streaming 
parameters to the device (the maximum payload transfer size has been retrieved 
from the device previously and is committed without being modified by the 
driver).

URB   Timestamp    Event       Address Type     Direction  Endpoint
61    2558.416852  Submission  4       Control  OUT        0

SETUP Host-to-device Class request to Interface
bRequest: SET CUR (01)
wValue: 0200
wIndex: INTF 1 ENTITY 0 (0001)
wLength: 001a
 
26 data bytes
bmHint                         0x01
bFormatIndex                      2
bFrameIndex                       3
dwFrameInterval              333333
wKeyFrameRate                     0
wPFrameRate                       0
wCompQuality                      0
wCompWindowSize                   0
wDelay                           32
dwMaxVideoFrameSize          115200
dwMaxPayloadTransferSize      43008

You can find the script I use to decode the usbmon trace at 
http://www.ideasonboard.org/uvc/usbmon.py. Run it with the -C uvc option to 
decode the UVC protocol. You can also use the -a option to filter the URBs 
based on the device address.

The equivalent URB in the working case is URB 101, and contains the following 
payload.

SETUP Host-to-device Class request to Interface
bRequest: SET CUR (01)
wValue: 0200
wIndex: INTF 1 ENTITY 0 (0001)
wLength: 001a
 
26 data bytes
bmHint                         0x01
bFormatIndex                      2
bFrameIndex                       4
dwFrameInterval              333333
wKeyFrameRate                     0
wPFrameRate                       0
wCompQuality                      0
wCompWindowSize                   0
wDelay                           32
dwMaxVideoFrameSize          153600
dwMaxPayloadTransferSize      43008

The only differences are the bFrameIndex (used to select the resolution) and 
the dwMaxVideoFrameSize (the maximum size of the compressed frame, computed by 
the device as a worst case estimate using the size of the frame after 
decompression) values. The maximum payload transfer size is identical in the 
two cases. Nothing unexpected so far.

After those URBs the uvcvideo driver starts submitting bulk URBs and get frame 
data back from the device. The device returns the following data in the first 
URB for the non-working and working cases respectively.

  16262 data bytes
58595a63 64656667    XYZcdefg
68696a73 74757677    hijstuvw
78797a82 83848586    xyz‚ƒ„…†
8788898a 92939495    ‡ˆ‰Š’“”•

  16262 data bytes
58595a63 64656667    XYZcdefg
68696a73 74757677    hijstuvw
78797a82 83848586    xyz‚ƒ„…†
8788898a 92939495    ‡ˆ‰Š’“”•

The first few data bytes stored in the usbmon capture look like MJPEG Huffman 
table data. This is a violation of the UVC specification, the camera is 
supposed to start sending frames immediately. Furthermore, every payload must 
start with a UVC header, which is clearly not the case here.

We're getting to the concept of payloads. UVC cuts frames in payloads that are 
then transmitted over isochronous or bulk endpoints. Payloads have a variable 
size with a fixed maximum size, and each payload starts with a UVC payload 
header. When using isochronous transfers each isochronous URB contains a 
single payload. When using bulk transfers payloads can be split across 
multiple bulk URBs. Each isochronous URB thus starts with a UVC header, while 
only the first bulk URB in a payload includes a header, the other containing 
frame data only.

UVC headers start with a byte that contains the size of the header, followed 
by a byte containing the following flags.

#define UVC_STREAM_EOH                                  (1 << 7)
#define UVC_STREAM_ERR                                  (1 << 6)
#define UVC_STREAM_STI                                  (1 << 5)
#define UVC_STREAM_RES                                  (1 << 4)
#define UVC_STREAM_SCR                                  (1 << 3)
#define UVC_STREAM_PTS                                  (1 << 2)
#define UVC_STREAM_EOF                                  (1 << 1)
#define UVC_STREAM_FID                                  (1 << 0)

EOH stands for End-Of-Header and is in practice always set. ERR denotes an 
error in the payload, STI denotes a still image (never set for video-only 
devices), RES is reserved, SCR and PTS are related to timestamp information 
contained in the header (the header contains 4 bytes of source clock data when 
SCR is set, and 6 bytes of presentation timestamp when PTS is set), EOF stands 
for End-Of-Frame and marks the last payload of a frame, and FID stands for 
Frame-Identifier and toggles with every frame.

A payload ends either when the maximum payload size has been reached, or when 
a short bulk URB is transferred. Looking at the working capture trace, we get 
a repeating pattern of the following URBs.

  16384 data bytes
0c8c026c 46e15af8    .Œ.lFáZø
4de15a05 ffd8ffdb    MáZ.ÿØÿÛ
00430003 02020202    .C......
02030202 02030303    ........

  378 data bytes
bed94ee3 bba0acab    ¾ÙNã» ¬«
b5460d1d 5422ea34    µF..T"ê4
d995a878 89df558a    Ù•¨x‰ßUŠ
ded9f309 5c11fdea    ÞÙó.\.ýê

  14 data bytes
0c8e026c 46e1530e    .Ž.lFáS.
4ee15a05 ffd9        NáZ.ÿÙ

The first URB starts a payload and thus contains a header, starting with 0x0c 
0x8c. This translates to 12 bytes of header data and the EOH, SCR and PTS 
bits. As SCR and PTS are set the header is expected to be 2 + 4 + 6 bytes 
long, which is correct. The EOF bit isn't set, so the payload isn't the last 
of the frame, and the FID bit is 0. The number of bytes transferred so far 
(16384) is smaller than the maximum payload size negotiated earlier, so the 
payload isn't finished.

The second URB thus doesn't start by a header as it continues the payload. It 
contains frame data only. The URB is a short URB, and thus completes the 
payload (but not the frame).

The third URB starts with a 12-byte header with the EOH, SCR, PTS and EOF bits 
set, and contains two more bytes of data (0xff 0xd9) that are expected at the 
end of the MJPEG frame. As the EOF bit is set the frame is now complete, and 
as the URB is short the payload is complete as well.

The next three URBs are similar but have the FID header bit set this time, as 
the bit is required to be toggled for every frame. The pattern then repeats.

The non-working case has the following pattern.

  13334 data bytes
0c8cb210 18147994    .Œ²...y”
1f146203 ffd8ffdb    ..b.ÿØÿÛ
00430003 02020202    .C......
02030202 02030303    ........

  14 data bytes
0c8eb210 181472aa    .Ž²...rª
1f146203 ffd9        ..b.ÿÙ

The first URB starts with a header but is now a short URB and thus completes 
the payload. The second URB completes the frame. Nothing unexpected, the 
resolution is lower so we need less URBs to transfer a frame.

The driver should handle both cases correctly. A quick analysis also indicates 
that the driver shouldn't get confused by the first incorrect URB, but I might 
be wrong.

Looking below it looks like the driver is completely desynchronized with the 
payload headers. This would explain the symptoms that Sarah reported, as the 
driver could then interpret data as payload headers and base its state machine 
on random FID and EOF bits.

With the information I've given you, could you try to log more information in 
the driver to try and find what goes wrong ? You could for instance log the 
content of each header at the beginning of the uvc_video_decode_start() 
function.

> [   80.490256] uvcvideo: Frame complete (FID bit toggled).
> [   80.490262] uvcvideo: frame 2080 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2069725020/32605 [   80.490264]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.490606] uvcvideo: Frame complete (EOF found).
> [   80.490942] uvcvideo: Marking buffer as bad (error bit set).
> [   80.490947] uvcvideo: Dropping payload (out of sync).
> [   80.492920] uvcvideo: Marking buffer as bad (error bit set).
> [   80.492927] uvcvideo: Dropping payload (out of sync).
> [   80.495352] uvcvideo: frame 2081 stats: 0/0/3 packets, 0/0/1 pts (!early
> !initial), 2/3 scr, last pts/stc/sof 2103017049/2069659484/32604 [  
> 80.495360] uvcvideo: Marking buffer as bad (error bit set).
> [   80.496066] uvcvideo: Marking buffer as bad (error bit set).
> [   80.498021] uvcvideo: frame 2082 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2103148379/2103148379/32601 [  
> 80.498030] uvcvideo: Marking buffer as bad (error bit set).
> [   80.498033] uvcvideo: Frame complete (FID bit toggled).
> [   80.498039] uvcvideo: frame 2083 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2103213661/2103213661/32349 [  
> 80.498042] uvcvideo: Marking buffer as bad (error bit set).
> [   80.500420] uvcvideo: Marking buffer as bad (error bit set).
> [   80.501122] uvcvideo: Marking buffer as bad (error bit set).
> [   80.502742] uvcvideo: Frame complete (EOF found).
> [   80.503095] uvcvideo: frame 2084 stats: 0/0/3 packets, 1/1/2 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2102754899/2069659484/32604 [  
> 80.503100] uvcvideo: Marking buffer as bad (error bit set).
> [   80.505510] uvcvideo: Marking buffer as bad (error bit set).
> [   80.505890] uvcvideo: Frame complete (EOF found).
> [   80.506245] uvcvideo: frame 2085 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2119532118/2119532118/32341 [  
> 80.506249] uvcvideo: Marking buffer as bad (error bit set).
> [   80.507845] uvcvideo: Frame complete (EOF found).
> [   80.508187] uvcvideo: Marking buffer as bad (error bit set).
> [   80.508191] uvcvideo: Dropping payload (out of sync).
> [   80.510747] uvcvideo: frame 2086 stats: 0/0/2 packets, 0/0/1 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2137357669/2085781330/32594 [  
> 80.510752] uvcvideo: Marking buffer as bad (error bit set).
> [   80.511463] uvcvideo: frame 2087 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2081456144/2081456144/32784 [  
> 80.511471] uvcvideo: Marking buffer as bad (error bit set).
> [   80.511474] uvcvideo: Frame complete (FID bit toggled).
> [   80.511480] uvcvideo: frame 2088 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102493775/2102559313/33362 [  
> 80.511483] uvcvideo: Marking buffer as bad (error bit set).
> [   80.513895] uvcvideo: frame 2089 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102493775/2102559313/33362 [  
> 80.513904] uvcvideo: Marking buffer as bad (error bit set).
> [   80.513907] uvcvideo: Frame complete (FID bit toggled).
> [   80.513913] uvcvideo: frame 2090 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2086567773/2086502238/32605 [  
> 80.513916] uvcvideo: Marking buffer as bad (error bit set).
> [   80.514608] uvcvideo: frame 2091 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2086567773/2086502238/32605 [  
> 80.514617] uvcvideo: Marking buffer as bad (error bit set).
> [   80.514620] uvcvideo: Frame complete (FID bit toggled).
> [   80.514626] uvcvideo: frame 2092 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102754901/2102754901/32341 [  
> 80.514629] uvcvideo: Marking buffer as bad (error bit set).
> [   80.517141] uvcvideo: Marking buffer as bad (error bit set).
> [   80.517858] uvcvideo: Marking buffer as bad (error bit set).
> [   80.520396] uvcvideo: frame 2093 stats: 0/0/3 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2098429971/2098692119/32792 [  
> 80.520404] uvcvideo: Marking buffer as bad (error bit set).
> [   80.520407] uvcvideo: Frame complete (FID bit toggled).
> [   80.520413] uvcvideo: frame 2094 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2081456656/2081456656/33296 [  
> 80.520416] uvcvideo: Marking buffer as bad (error bit set).
> [   80.521111] uvcvideo: frame 2095 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2081456656/2081456656/33296 [  
> 80.521119] uvcvideo: Marking buffer as bad (error bit set).
> [   80.521122] uvcvideo: Frame complete (FID bit toggled).
> [   80.521128] uvcvideo: frame 2096 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102951768/2102820696/32598 [  
> 80.521131] uvcvideo: Marking buffer as bad (error bit set).
> [   80.523496] uvcvideo: frame 2097 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102951768/2102820696/32598 [  
> 80.523505] uvcvideo: Marking buffer as bad (error bit set).
> [   80.523508] uvcvideo: Frame complete (FID bit toggled).
> [   80.523514] uvcvideo: frame 2098 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119794008/2119728472/32088 [  
> 80.523517] uvcvideo: Marking buffer as bad (error bit set).
> [   80.523831] uvcvideo: Frame complete (EOF found).
> [   80.525463] uvcvideo: Dropping payload (out of sync).
> [   80.526190] uvcvideo: frame 2099 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 96354447/97436625/437 [   80.526199]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.528590] uvcvideo: Marking buffer as bad (error bit set).
> [   80.530563] uvcvideo: Marking buffer as bad (error bit set).
> [   80.531249] uvcvideo: frame 2100 stats: 0/0/3 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2102558546/2102624083/32595 [  
> 80.531258] uvcvideo: Marking buffer as bad (error bit set).
> [   80.531261] uvcvideo: Frame complete (FID bit toggled).
> [   80.531267] uvcvideo: frame 2101 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119401555/2119401555/32851 [  
> 80.531270] uvcvideo: Marking buffer as bad (error bit set).
> [   80.533319] uvcvideo: Frame complete (EOF found).
> [   80.533683] uvcvideo: frame 2102 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119401555/2119401555/32851 [  
> 80.533692] uvcvideo: Marking buffer as bad (error bit set).
> [   80.535641] uvcvideo: Marking buffer as bad (error bit set).
> [   80.536353] uvcvideo: Marking buffer as bad (error bit set).
> [   80.538778] uvcvideo: frame 2103 stats: 0/0/3 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2102361937/2102361935/32591 [  
> 80.538787] uvcvideo: Marking buffer as bad (error bit set).
> [   80.538790] uvcvideo: Frame complete (FID bit toggled).
> [   80.538796] uvcvideo: frame 2104 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2117435189/2100657973/32567 [  
> 80.538799] uvcvideo: Marking buffer as bad (error bit set).
> [   80.539116] uvcvideo: Frame complete (EOF found).
> [   80.540751] uvcvideo: Marking buffer as bad (error bit set).
> [   80.540758] uvcvideo: Dropping payload (out of sync).
> [   80.542582] uvcvideo: frame 2105 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2119270481/2119336018/32850 [  
> 80.542593] uvcvideo: Marking buffer as bad (error bit set).
> [   80.543286] uvcvideo: Marking buffer as bad (error bit set).
> [   80.545268] uvcvideo: Marking buffer as bad (error bit set).
> [   80.547699] uvcvideo: frame 2106 stats: 0/0/3 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2101378880/2101247806/32574 [  
> 80.547707] uvcvideo: Marking buffer as bad (error bit set).
> [   80.547710] uvcvideo: Frame complete (FID bit toggled).
> [   80.547716] uvcvideo: frame 2107 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2118811466/2101903434/32840 [  
> 80.547719] uvcvideo: Marking buffer as bad (error bit set).
> [   80.548047] uvcvideo: Frame complete (EOF found).
> [   80.548394] uvcvideo: Marking buffer as bad (error bit set).
> [   80.548401] uvcvideo: Dropping payload (out of sync).
> [   80.550362] uvcvideo: frame 2108 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2085125960/2085060423/32582 [  
> 80.550371] uvcvideo: Marking buffer as bad (error bit set).
> [   80.552830] uvcvideo: Marking buffer as bad (error bit set).
> [   80.553372] uvcvideo: Marking buffer as bad (error bit set).
> [   80.561825] uvcvideo: Marking buffer as bad (error bit set).
> [   80.562162] uvcvideo: Frame complete (EOF found).
> [   80.562497] uvcvideo: Marking buffer as bad (error bit set).
> [   80.562505] uvcvideo: Dropping payload (out of sync).
> [   80.564927] uvcvideo: frame 2109 stats: 0/0/6 packets, 3/3/4 pts (!early
> initial), 5/6 scr, last pts/stc/sof 97857347/2068480074/32842 [  
> 80.564935] uvcvideo: Marking buffer as bad (error bit set).
> [   80.566925] uvcvideo: frame 2110 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2069069907/2069069907/32851 [  
> 80.566934] uvcvideo: Marking buffer as bad (error bit set).
> [   80.566937] uvcvideo: Frame complete (FID bit toggled).
> [   80.566943] uvcvideo: frame 2111 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102558546/2102493009/32593 [  
> 80.566946] uvcvideo: Marking buffer as bad (error bit set).
> [   80.567599] uvcvideo: frame 2112 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102558546/2102493009/32593 [  
> 80.567607] uvcvideo: Frame complete (FID bit toggled).
> [   80.567613] uvcvideo: frame 2113 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/0 scr, last pts/stc/sof 0/0/0 [   80.570041] uvcvideo: frame
> 2114 stats: 0/0/1 packets, 0/0/0 pts (!early !initial), 0/0 scr, last
> pts/stc/sof 0/0/0 [   80.570050] uvcvideo: Marking buffer as bad (error bit
> set).
> [   80.570053] uvcvideo: Frame complete (FID bit toggled).
> [   80.570059] uvcvideo: frame 2115 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2068938833/32849 [   80.570062]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.570379] uvcvideo: Frame complete (EOF found).
> [   80.572032] uvcvideo: frame 2116 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2068938833/32849 [   80.572041]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.572713] uvcvideo: Marking buffer as bad (error bit set).
> [   80.575138] uvcvideo: Marking buffer as bad (error bit set).
> [   80.577804] uvcvideo: frame 2117 stats: 0/0/4 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2084667459/2084470848/32830 [  
> 80.577813] uvcvideo: Marking buffer as bad (error bit set).
> [   80.577816] uvcvideo: Frame complete (FID bit toggled).
> [   80.577822] uvcvideo: frame 2118 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2069004371/32851 [   80.577825]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.578143] uvcvideo: Frame complete (EOF found).
> [   80.580219] uvcvideo: Marking buffer as bad (error bit set).
> [   80.580223] uvcvideo: Dropping payload (out of sync).
> [   80.582212] uvcvideo: frame 2119 stats: 0/0/2 packets, 0/0/0 pts (!early
> !initial), 1/2 scr, last pts/stc/sof 0/2069266518/32854 [   80.582221]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.582896] uvcvideo: frame 2120 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2086371163/2086371163/32604 [  
> 80.582904] uvcvideo: Marking buffer as bad (error bit set).
> [   80.582907] uvcvideo: Frame complete (FID bit toggled).
> [   80.582913] uvcvideo: frame 2121 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102951768/2102951768/32600 [  
> 80.582916] uvcvideo: Marking buffer as bad (error bit set).
> [   80.584748] uvcvideo: Marking buffer as bad (error bit set).
> [   80.586723] uvcvideo: frame 2122 stats: 0/0/2 packets, 0/0/1 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2102951768/2036039771/32859 [  
> 80.586731] uvcvideo: Marking buffer as bad (error bit set).
> [   80.586734] uvcvideo: Frame complete (FID bit toggled).
> [   80.586740] uvcvideo: frame 2123 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2052489304/32856 [   80.586743]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.587067] uvcvideo: Frame complete (EOF found).
> [   80.588555] uvcvideo: Marking buffer as bad (error bit set).
> [   80.588564] uvcvideo: Dropping payload (out of sync).
> [   80.590556] uvcvideo: Marking buffer as bad (error bit set).
> [   80.590564] uvcvideo: Dropping payload (out of sync).
> [   80.591231] uvcvideo: Marking buffer as bad (error bit set).
> [   80.591239] uvcvideo: Dropping payload (out of sync).
> [   80.593662] uvcvideo: frame 2124 stats: 0/0/4 packets, 2/3/3 pts (!early
> !initial), 3/4 scr, last pts/stc/sof 2086240088/2086240089/32601 [  
> 80.593670] uvcvideo: Marking buffer as bad (error bit set).
> [   80.593995] uvcvideo: Frame complete (EOF found).
> [   80.595639] uvcvideo: Marking buffer as bad (error bit set).
> [   80.595646] uvcvideo: Dropping payload (out of sync).
> [   80.596344] uvcvideo: frame 2125 stats: 0/0/2 packets, 0/0/1 pts (!early
> !initial), 1/2 scr, last pts/stc/sof 2081456144/2081456144/32784 [  
> 80.596353] uvcvideo: Marking buffer as bad (error bit set).
> [   80.598768] uvcvideo: frame 2126 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2086371161/2086240091/32601 [  
> 80.598776] uvcvideo: Marking buffer as bad (error bit set).
> [   80.598779] uvcvideo: Frame complete (FID bit toggled).
> [   80.598785] uvcvideo: frame 2127 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2103213916/2103279453/32605 [  
> 80.598788] uvcvideo: Marking buffer as bad (error bit set).
> [   80.600741] uvcvideo: frame 2128 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2103213916/2103279453/32605 [  
> 80.600749] uvcvideo: Marking buffer as bad (error bit set).
> [   80.600753] uvcvideo: Frame complete (FID bit toggled).
> [   80.600758] uvcvideo: frame 2129 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102755157/2102624085/32595 [  
> 80.600761] uvcvideo: Marking buffer as bad (error bit set).
> [   80.601436] uvcvideo: Marking buffer as bad (error bit set).
> [   80.603280] uvcvideo: frame 2130 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2086502237/2086502237/32605 [  
> 80.603288] uvcvideo: Marking buffer as bad (error bit set).
> [   80.603291] uvcvideo: Frame complete (FID bit toggled).
> [   80.603297] uvcvideo: frame 2131 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2066711095/33331 [   80.603300]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.604922] uvcvideo: Frame complete (EOF found).
> [   80.605261] uvcvideo: frame 2132 stats: 0/0/1 packets, 0/0/0 pts (!early
> !initial), 0/1 scr, last pts/stc/sof 0/2066711095/33331 [   80.605270]
> uvcvideo: Marking buffer as bad (error bit set).
> [   80.605627] uvcvideo: Frame complete (EOF found).
> [   80.605982] uvcvideo: frame 2133 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119532117/2119597654/32342 [  
> 80.605990] uvcvideo: Marking buffer as bad (error bit set).
> [   80.608029] uvcvideo: Frame complete (EOF found).
> [   80.608384] uvcvideo: Marking buffer as bad (error bit set).
> [   80.608391] uvcvideo: Dropping payload (out of sync).
> [   80.610344] uvcvideo: Marking buffer as bad (error bit set).
> [   80.610353] uvcvideo: Dropping payload (out of sync).
> [   80.612192] uvcvideo: Marking buffer as bad (error bit set).
> [   80.612196] uvcvideo: Dropping payload (out of sync).
> [   80.612941] uvcvideo: Marking buffer as bad (error bit set).
> [   80.612948] uvcvideo: Dropping payload (out of sync).
> [   80.615462] uvcvideo: Marking buffer as bad (error bit set).
> [   80.615469] uvcvideo: Dropping payload (out of sync).
> [   80.616182] uvcvideo: Marking buffer as bad (error bit set).
> [   80.616190] uvcvideo: Dropping payload (out of sync).
> [   80.618717] uvcvideo: frame 2134 stats: 0/0/7 packets, 4/6/5 pts (!early
> initial), 6/7 scr, last pts/stc/sof 2102296398/2102165324/32588 [  
> 80.618726] uvcvideo: Marking buffer as bad (error bit set).
> [   80.619425] uvcvideo: Marking buffer as bad (error bit set).
> [   80.621815] uvcvideo: frame 2135 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2081456656/2081456656/33296 [  
> 80.621824] uvcvideo: Marking buffer as bad (error bit set).
> [   80.621827] uvcvideo: Frame complete (FID bit toggled).
> [   80.621834] uvcvideo: frame 2136 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2102820693/2102820694/32600 [  
> 80.621837] uvcvideo: Marking buffer as bad (error bit set).
> [   80.623785] uvcvideo: Marking buffer as bad (error bit set).
> [   80.626895] uvcvideo: Marking buffer as bad (error bit set).
> [   80.628846] uvcvideo: Marking buffer as bad (error bit set).
> [   80.630705] uvcvideo: Marking buffer as bad (error bit set).
> [   80.632698] uvcvideo: frame 2137 stats: 0/0/6 packets, 5/5/6 pts (!early
> initial), 5/6 scr, last pts/stc/sof 2102558546/2102558546/32594 [  
> 80.632706] uvcvideo: Marking buffer as bad (error bit set).
> [   80.632709] uvcvideo: Frame complete (FID bit toggled).
> [   80.632715] uvcvideo: frame 2138 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119336019/2102558802/32850 [  
> 80.632718] uvcvideo: Marking buffer as bad (error bit set).
> [   80.633058] uvcvideo: Frame complete (EOF found).
> [   80.633403] uvcvideo: frame 2139 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2119336019/2102558802/32850 [  
> 80.633412] uvcvideo: Marking buffer as bad (error bit set).
> [   80.635832] uvcvideo: Marking buffer as bad (error bit set).
> [   80.637813] uvcvideo: Marking buffer as bad (error bit set).
> [   80.638509] uvcvideo: frame 2140 stats: 0/0/3 packets, 2/2/3 pts (!early
> initial), 2/3 scr, last pts/stc/sof 2102493009/2102493009/32593 [  
> 80.638523] uvcvideo: Marking buffer as bad (error bit set).
> [   80.638527] uvcvideo: Frame complete (FID bit toggled).
> [   80.638537] uvcvideo: frame 2141 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2117435445/2100723765/32824 [  
> 80.638541] uvcvideo: Marking buffer as bad (error bit set).
> [   80.638817] uvcvideo: Frame complete (EOF found).
> [   80.641019] uvcvideo: Marking buffer as bad (error bit set).
> [   80.641028] uvcvideo: Dropping payload (out of sync).
> [   80.641709] uvcvideo: frame 2142 stats: 0/0/2 packets, 1/1/2 pts (!early
> initial), 1/2 scr, last pts/stc/sof 2102362191/2102493265/32847 [  
> 80.641719] uvcvideo: Marking buffer as bad (error bit set).
> [   80.644143] uvcvideo: Marking buffer as bad (error bit set).
> [   80.646129] uvcvideo: Marking buffer as bad (error bit set).
> [   80.646798] uvcvideo: Marking buffer as bad (error bit set).
> [   80.649234] uvcvideo: frame 2143 stats: 0/0/4 packets, 3/3/4 pts (!early
> initial), 3/4 scr, last pts/stc/sof 2101903432/2102034506/32844 [  
> 80.649243] uvcvideo: Marking buffer as bad (error bit set).
> [   80.649247] uvcvideo: Frame complete (FID bit toggled).
> [   80.649254] uvcvideo: frame 2144 stats: 0/0/1 packets, 0/0/1 pts (!early
> initial), 0/1 scr, last pts/stc/sof 2085060423/2084994887/32582 [  
> 80.649256] uvcvideo: Marking buffer as bad (error bit set).

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to