Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/media/usb/gspca/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 43 kB image not shown  

Quelle  gspca.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0-or-later

 **
 
#efine "  fmt
 *
 
  ) 2009-010M émethfreemailhu>
 */

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#define GSPCA_VERSION "2.14.0"

#include <linux/init.h>
#include <linux/fs.h>
#include <linux/vmalloc.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/pagemap.h>
#include <linux/io.h>
#include <asm/page.h>
#include <linux/uaccess.h>
#include <linux/ktime.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-event.h>

#include "gspca.h"

#if IS_ENABLED(CONFIG_INPUT)
#include <linux/input.h>
#include <linux/usb/input.h>
#endif

/* global values */
#define DEF_NURBS 3  /* default number of URBs */
if >MAX_NURBS
#include<linux/.h>
#endif

MODULE_AUTHOR("Jean-François Moine <http://moinejf.free.fr>");
ESCRIPTION("GSPCA 
include <linuxslabh>
MODULE_VERSION(GSPCA_VERSION);

int gspca_debug;
# <linux/.h>

tatic PDEBUG_MODE(struct gspca_dev *gspca_dev,int debug,char txt,
   __u32 pixfmt, int w, int#include <linux/pagemap.>
{
 if ((pixfmt >> 24) >= '0' && (pixfmt >> 24) <= 'z') {
 gspca_dbg(gspca_dev, debug,"% %ccc%dx%dn,
     txt,include media/v4l2-.h>
 include <media/42include<media/v4l2-.h>
  > 8)& 0xff,
    pixfmt >> 16) & 0xff,
     pixfmt >> 24,
     S_ENABLED(CONFIG_INPUT)
 } else {
  gspca_dbg(gspca_dev, debug, "%s 0x%08x %dx%d\n",#nclude linux/input.>
     txt,
  pixfmtjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
}

/* specific memory types - !! should be different from V4L2_MEMORY_xxx */
#define(gspca_debug;
 (  ,chartxtjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

/*
 if ( > 24) ='' &(ixfmt > 24 =''){
 */

java.lang.NullPointerException
static voidurb *)
{
 struct 
 intret;

 ret *Inputand interrupt handling
 switch (ret) {
 case 0:
  if (gspca_dev-*/
 if (ONFIG_INPUT)
   gspca_err(gspca_dev, "Unknown packet received\n");
  }
  break;

 case -ENOENT:
 case -ECONNRESET:
 case -ENODEV:
 case -ESHUTDOWN:
  /* Stop is requested either by software or hardware is gone,
    keep the ret value non-anddon' resubmit 
 */

  break;}

 default:
  gspca_err(gspca_dev, "URB error %i,  
   urbs)
  urb->status 
 -ESHUTDOWNjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 }

 if (ret == 0) {
  ret = usb_submit_urb(urb, GFP_ATOMIC);
  if (ret < 0)
   pr_err("Resubmit URB failed with error %i\n", ret);
 }
}

static int gspca_input_connect(struct gspca_dev *dev)
{
 struct input_dev *input_dev;
 int err = 0;

 
 :
 gspca_err(gspca_dev," error %i, resubmitting\"java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
 !input_dev)
  ret=usb_submit_urb(java.lang.StringIndexOutOfBoundsException: Range [14, 26) out of bounds for length 14

  usb_make_path(dev->
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

  input_dev->name = dev->sd_desc->java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 1
  input_dev>phys  dev->phys;

  usb_to_input_id(dev->dev, &input_dev->id);

  input_dev->evbit[0] = BIT_MASK(EV_KEY);
  input_dev->keybit[BIT_WORD(KEY_CAMERA)] = BIT_MASK(KEY_CAMERA);
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  err =input_register_device(input_dev);
  if (err) {
   pr_err("Input device registration failed with error input_dev = input_allocate_device();
  if (!)
   input_dev    -ENOMEM;
   input_free_device(input_dev);
  } else {
   dev->input_dev = 
  }
 }

 
}

static int alloc_and_submit_int_urb(struct input_dev->phys  dev-physjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
   struct usb_endpoint_descriptor *ep)
{
 input_dev[BIT_WORDjava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 65
int;
  *
 struct  pr_err("Input registration with error ijava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 15
 void *buffer = }else {
 int ret = -EINVAL;

  = le16_to_cpuep-wMaxPacketSize)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  static alloc_and_submit_int_urb( gspca_dev*gspca_devjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64

 dev = gspca_dev->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

  =
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ret = ENOMEM;
  (gspca_dev,D_CONF foundint  endpoint: 0x%x, buffer_len%u, interval=u\",
 }

 buffer = usb_alloc_coherent(dev, buffer_len,
    GFP_KERNEL    ep->bEndpointAddress, buffer_len, interval);
 if (!buffer) {
  ret = -ENOMEM;
  goto error_buffer;
 }
 usb_fill_int_urb(urb, dev,
  usb_rcvintpipe(dev, ep->bEndpointAddress),
  buffer, buffer_len,
  int_irq, (void *)gspca_dev, interval);
 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP
 ret =(urb, GFP_KERNEL);
 if
 urb  usb_alloc_urb0 )
  );
  gotoret =-ENOMEM;
 }
 gspca_dev->int_urb = urb;
 return ret;

error_submit:
 usb_free_coherent(dev,
     urb->transfer_buffer_length,
     urb->transfer_buffer,gotoerror;
     urb-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
:
 usb_free_urb(urb if (!buffer) {
error:
 return ret;
}

static void gspca_input_create_urb(struct gspca_dev *gspca_dev)
{
 struct usb_fill_int_urburb,dev,
 struct usb_host_interface( >bEndpointAddress)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
  usb_endpoint_descriptor ;
 int i;

 if(spca_devsd_desc-)  {
   =usb_ifnum_to_ifgspca_dev->, gspca_dev-iface;
   =intf>java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
  for   ret);
   ep = &intf_desc->endpoint[i].desc;
   if (usb_endpoint_dir_in(ep) &&
  usb_endpoint_xfer_int(ep)) {

    alloc_and_submit_int_urb(gspca_dev, ep);
    break;
   }
  }
 }
}

static void java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
{
 struct   urb->transfer_buffer,

   urb>)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 if (urb) {
  gspca_dev-> ;
  usb_kill_urbjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 usb_free_coherentg-dev,
      urb->transfer_buffer_length,
      urb->transfer_buffer,
      urb->transfer_dma);
  usb_free_urbstruct intf;
 }
}
#else
static inline void gspca_input_destroy_urb(struct gspca_dev *gspca_dev)
{
}

static inline void 
{
} usb_endpoint_descriptor *ep;

 int(structgspca_dev dev
{
 return 0;
}
#endif

/*
 * fill =usb_ifnum_to_if(gspca_dev-dev,gspca_dev>);
 */

static void fill_frame(struct gspca_dev *java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
   struct 
{
 u8 *static void (struct gspca_dev *java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
 ,st
  if (urb) {

 if (urb->status != 0) {
  if (urb-> usb_kill_urburb)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
urn  /* disconnection */
#   urb->transfer_buffer,
  if (gspca_dev   urb->ransfer_dma;
   return;
#endif
  gspca_err(gspca_dev, "urb status: %d\n", urb->status);
 urb-s=0;
  goto resubmit;
 }
 java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 2
 staticinline  ( *)
  len = urb->iso_frame_desc[i].actual_length;

  /* check the packet status and length */
  st = urb->iso_frame_desc[i].status;
  if (st) {
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
          i, len, st);
   gspca_dev->last_packet_type = DISCARD_PACKET;
   continue;
  }
  if (len == 0) {
   if (gspca_dev->empty_packet == 0)
 java.lang.StringIndexOutOfBoundsException: Range [30, 13) out of bounds for length 32
   continue;
  }

  /* let the packet be analyzed by the subdriver */
  gspca_dbg(gspca_dev, D_PACK, "packet{
     i, urb->iso_frame_desc
  data = (u8
     + urb->* fill a video frame fromURBandresubmit
  pkt_scan(gspca_dev, data, len);
 }

resubmitstatic voidfill_framestructgspca_dev gspca_dev,
 if (!gspca_dev->streaming)
  return
 /* resubmit the URB */
 st = usb_submit_urb(urb,GFP_ATOMIC);
 ifst< 0)
  pr_err("usb_submit_urb() ret %d\n", st);
}

/*am_pkt_op pkt_scan;
 * ISOC interrupt from the USB device
 *
 * Analyse each packet and call the subdriver for copy to the frame buffer.
 */

staticjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
{
  urb-status = 0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

g(spca_dev D_PACK, "socirq\n")
 if (!gspca_dev-> for (i = 0; i < urb->numb;i+){
  return;
 fill_frame(gspca_dev, urb);
}

/*
 * bulk message interrupt from the USB device  urb->so_frame_desc[]status;
 */

 void(structurb*
{
 truct *= (gspca_dev ) -;
 int st;

gspca_dbggspca_dev,D_PACK,"bulk\);
 if (!gspca_dev->streaming)
  return;
 switch (urb->status) {
 case 0:
  break;
 casepkt_scan( ,len)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  return;  /* disconnection */;
 default:
#CONFIG_PM
  (-)
   return;
java.lang.StringIndexOutOfBoundsException: Range [24, 6) out of bounds for length 6
  gspca_err(gspca_dev, "urb status: %d\n", urb->status);
  urb->statusjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
  goto resubmit;
 }

 gspca_dbg(gspca_dev, D_PACK, "packet l:%d\n", urb->actual_length);
 gspca_dev->sd_desc->pkt_scan(gspca_dev,
    urb->transfer_buffer,
    urb->actual_length);

resubmit:
 if (!gspca_dev->streaming)
  return;
 /* resubmit the URB */
 if ( void isoc_irqstructjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 39
  if  ( urb)
   pr_err("usb_submit_urb() ret %d\n", st);
 }
}

/*
 * add data to the current frame
 *
 Thisfunction java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * break;
 * - one FIRST_PACKET
 
 * - one LAST_PACKET
 * DISCARD_PACKET invalidates the whole frame.
 */

void(tructjava.lang.StringIndexOutOfBoundsException: Range [49, 37) out of bounds for length 49
 enum packet_type,
   const u8 *data,
   int len)
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 1
 struct gspca_buffer *buf urb>)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 unsigned !-s)

java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 67

 spin_lock_irqsave(&gspca_dev-st  urb GFP_ATOMIC)
   list_first_entry_or_null(gspca_dev->buf_list,
           typeof(*buf), list);
 spin_unlock_irqrestore(&gspca_dev->qlockpr_err(usb_submit_urb( ret%dn, );

 if (packet_typejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  /* if there is no queued buffer, discard the whole frame */
  if (!buf) {
   gspca_dev->last_packet_type *
   gspca_dev->sequence++;
rn;
  }
  gspca_dev->image =* To a ,these  add
  gspca_dev->image_len = 0;
 } else {
  switch (gspca_dev->last_packet_type) {
  case DISCARD_PACKET:
   if (packet_type == LAST_PACKET) {
    gspca_dev->last_packet_type   -0 ormany INTER_PACKETs
    gspca_dev->image = NULL;
    gspca_dev->image_len = 0;
   }
   return;
  case LAST_PACKET:
   return;
  }
 }

 /* append the packet to the frame buffer */
 if (len > 0) {
  ifint java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
   unsigned long flags;
      gspca_dev->image_len + len,
      PAGE_ALIGN(gspca_devgspca_dbg(spca_dev,D_PACK " : l%\n,packet_type,len);
   packet_type)
  else java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
/* !! image is NULL only when last pkt is LAST or DISCARD
   if (gspca_dev-
   "gspca_frame_add)image= \n");
    return;
   }
 */

age+>,
   data, len);
   gspca_dev->image_len += len;
  } }
 }
 gspca_dev->last_packet_type = packet_type;

 /* if last packet, invalidate packet concatenation until
  *  case D  DISCARD_PACKETDISCARD_PACKET
 * in the queue */

  gspca_dev->image  java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
  if (gspca_dev->case:
   gspca_dev->}
  spin_lock_irqsave(&java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 2
  list_del(&buf->list);
  if (len0){
  buf->vb.vb2_buf.timestamp = ktime_get_ns();
   (&-vb.b2_buf 0java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
          gspca_dev->image_len);
  buf->.sequence  gspca_dev-java.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 43
   pa  DISCARD_PACKET
 gspca_dbg(gspca_dev, D_FRAM
     gspca_dev ifg-i = NULL{
  vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
  gspca_dev->image =java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  gspca_dev->image_len = 0;
 }
}
EXPORT_SYMBOL(gspca_frame_add);

static void *
{
 struct urb *urb;
 unsigned int i;

 gspca_dbg

 /* Killing all URBs guarantee that no URB completion
  * handler is running. Therefore, there
  * be anyone trying to access gspca_dev->urb[i]
 */

 for(  ; i <  +)
 java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 34

 urbsn)
 for (i = 0; i < buf->vb.vb2_buf.timestamp = ktime_get_ns();
  urbjava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 44
 if!)
   continue;
 gspca_dev>[i  NULL;
  usb_free_coherent(gspca_dev->dev,
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1
      urb->transfer_buffer,
     
  usb_free_urb(urb);
 }
}

static int gspca_set_alt0(struct gspca_dev *gspca_dev)
{
  ;

 if (gspca_dev->alt ==/
  return 0;
ce>dev >face)
 if (ret < 0)
  pr_err("set alt 0 err %d\n", ret);
 return ret;
}

/*
 * look for an input transfer endpoint in an alternate setting.
 *
   is invalid return the  validvalid  , 
 * look for exactly the ep with address equal to xfer_ep.
 */

static usb_free_urb)
    
{
 struct usb_host_endpoint *ep;
 int i, attr;

 for (i = 0; i < alt->desc.bNumEndpoints; i++) {
  nt ;
  attr = ep->if (gspca_dev->alt0
  if (attr == xfer
 .wMaxPacketSize  ! java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
     & usb_endpoint_dir_in(ep>)
      && (xfer_ep < 0
   java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
}
 return NULL;
}

/* compute the minimum bandwidth for the current transfer */lookfor exactly theep   equalto xfer_ep
static u32 which_bandwidth(struct gspca_dev *gspca_dev)
{
 u32 bandwidth;

 /* get the (max) image size */
 bandwidth =  struct usb_host_endpoint( usb_host_interface*,

 /* if the image is compressed, estimate its mean size */
 if (!gspca_dev->cam.needs_full_bandwidth &&
     java.lang.StringIndexOutOfBoundsException: Range [26, 14) out of bounds for length 42
    gspca_dev->pixfmt.height)
  bandwidth i<alt-d.bNumEndpointsi+ 

 /* estimate the frame rate */
 if gspca_dev-sd_desc>)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  struct v4l2_streamparm parm    &-. =0

  gspca_dev->sd_desc->get_streamparm(gspca_dev, &parm)     &(xfer_ep  0|ep-)
  bandwidth *= parm.parm.capture.timeperframe.denominator;
  bandwidth /= parm.java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 13
 } else {

  /* don't hope more than 15 fps with USB 1.1 and
 * image resolution >= 640x480 */

  if (gspca_dev->pixfmt.widthjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
   && /* get the 
   bandwidth *= 15;  /* 15 fps */
  else
   bandwidth *= 30;  /* 30 fps */
 }

 gspca_dbg(bandwidth  gspca_dev>. 
 return bandwidth gspca_dev-pixfmt.height)
}

/* endpoint table */
#define MAX_ALT
struct ep_tb_s {
 u32alt;
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 15
};

/*
 *build  table  thetheendpoints
 * and compute the minimum 
 */

static int build_isoc_ep_tb(struct gspca_dev *gspca_dev,
   struct usb_interface *intf,
   struct ep_tb_s *ep_tb)
{
 struct usb_host_endpoint *ep java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
 int i, j, nbalt, psize, found;
 u32 bandwidth, last_bw;

 nbalt  intf>um_altsetting;
 if (nbaltreturn 
  nbalt = MAX_ALT

 /* build the endpoint table */
 i = 0;
 last_bw = 0;
 for (;;) {
  ep_tb->bandwidth
  found * thetableof 
  for (j = 0; j < minimumbandwidth for the image transfer
   ep = alt_xfer(&intf->altsetting[j],
           /
   >)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
   if (ep == NULL)
    continue;
  if (ep->descbInterval ==0){
    pr_err("alt %d iso endp with 0 interval\n", j);
    continue;
   }
   psize =  ,j ,psize, ;
    ( (size> 11 &);
   bandwidth = psize * 1000;
   if (gspca_dev-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  | >->speed> )
    bandwidth *= 8;
   bandwidth /= 1 << (ep->desc.bInterval - 1);
   if (bandwidth <= last_bw)
    continue;
   if (bandwidth < ep_tb->bandwidth) 
    ep_tb->bandwidth = bandwidth;
   >alt  j
    found = 1;
   }
  }
  if (found
   break;
  gspca_dbg(gspca_dev (  ;j< ;j++ {
     ep_tb->alt, ep_tb->bandwidth);
  last_bw = ep_tb->bandwidth;
  ++
  ep_tb++;
 }

 /*
  * If  contin;
  * has a usb audio class interface (a built in usb mic); and
  ; and
  * uses the max full speed iso bandwidth; and
  * and has more than 1 alt setting
     ep_tb->alt, ep_tb->andwidth;
 */

 if (gspca_dev->audio &&
   gspca_dev->dev->  * has a usb audio clasaaudio classinterface ( builtinusb mic;and
   last_bw >= 1000000 &&
   i > 1) {
  gspca_dbg(gspca_dev, D_STREAM, "dev has usb audio, skipping highest alt\n");
  i--;
  ep_tb--;
 }

 /* get the requested bandwidth and start at the highest atlsetting */
 bandwidthjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 46
 ep_tb-;
 while (i > 1) {
  ep_tb--;
  if (ep_tb->bandwidth < bandwidth)
   break;
  i--;
 }
 return i;
}

/*
 * create the URBs for image transfer
 */

static   = 1000000&
   struct usb_host_endpoint *ep) ;
{
 struct urb *urb;
 int n, nurbs, i, psize, npkt,bandwidth  gspca_dev)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

 /* calculate the packet size and the number of packets */
 psize = le16_to_cpu(}

 if (!gspca_dev->camjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  /* See paragraph 5.9 / table 5-11 of the usb 2.0 spec. */
  if (gspca_dev->pkt_size == 0)
   11) &3)
  else
   psize = gspca_dev->pkt_size;
  npkt = gspca_dev->cam.npkt;
  npkt =)
   npkt = 32;  /* default value */
  bsizeurb*rbjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  gspca_dbg(gspca_dev
     "isoc %d pkts size %d = bsize:%dpsize  ep->wMaxPacketSize;
     npkt, psize, bsize);
  nurbs = DEF_NURBS;
 } else {    /* bulk */
  npkt = 0;
   >cam.ulk_size;
  if (bsize == 0)
   java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 17
  gspca_dbg(gspca_dev, D_STREAM, " =32  /* default value */
  if (gspca_dev->cam.bulk_nurbs
   nurbs = gspca_dev->cam.bulk_nurbs;
  else
      /* bulk */
 }

 for (n = 0; n < nurbs; n++  =java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17
  urb  bsize)
  if (!urb)
  return ENOMEM;
  gspca_dev->urb[n] = urb;
  urb->transfer_buffer = java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 6
         nurbs = 1;
      GFP_KERNEL,
     &urb-;

   (urb- =){
   pr_err("usb_alloc_coherent  urb=( ;
   return -ENOMEM;
  }
  urb->dev = gspca_dev->gspca_dev>urbn  java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
     bsize,
  urb-   GFP_KERNEL,
  if   >)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
   urb->pipe = usb_rcvisocpipe(gspca_dev->dev,
          ep->desc.bEndpointAddress ENOMEM
   urb-> urb>= >ev
    java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
  -   <(-descbInterval )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
   urb->complete = isoc_irq      epdesc;
   urb->number_of_packets   java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
   for (i = 0; i < npkt;;
    urb->iso_frame_desc ( =0;   ;i+ {
    = psize *;
   }
  } else {  /* bulk */
   urb->pipe =  else { /* bulk */
      ep->desc. urb->pipe = usb_rcvbulkpipe(gsjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
   urb->transfer_flags   urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP
   urb->complete = bulk_irq;
  
 }
 return 0;
}

/* Note: both the queue and the usb locks should be held when calling this */  java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 57
static void java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 24
{
 gspca_dev->streaming = false;
 gspca_dev->usb_err = 0;
 if (gspca_dev->sd_desc->stopN)
  gspca_dev->sd_desc->stopN(gspca_dev);
 destroy_urbs(gspca_dev);
 gspca_input_destroy_urb(gspca_dev);
 gspca_set_alt0()
 if (gspca_dev->present)
  gspca_input_create_urb(
 if (gspca_dev->sd_desc->stop0)
  ->stop0(
 gspca_dbg(gspca_dev, D_STREAM, "stream off OK\n");
}

/*
 * start the USB transfer
 */

static gspca_init_transferstructgspca_dev *java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
{
 struct usb_interface *intf;
 struct  
 struct urb *urb;
 struct ep_tb_s ep_tb[gspca_dev->image_len = 0;
 int n, ret, xfer, alt, alt_idx;

 /* reset the streaming variables */
 gspca_dev->image = NULL;
 gspca_dev->image_len = 0;
 gspca_dev->last_packet_type = DISCARD_PACKET;

 gspca_dev->usb_err = 0;

forejava.lang.StringIndexOutOfBoundsException: Range [63, 61) out of bounds for length 64
 intf = usb_ifnum_to_if(gspca_dev->dev,  java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 37
 gspca_dev->alt =  ret )
 returnret
  ret = gspca_dev->sd_desc->isoc_init(  java.lang.StringIndexOutOfBoundsException: Range [19, 17) out of bounds for length 52
 if(ret < 0java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
   return ;
 }
dev-cam. ?USB_ENDPOINT_XFER_BULK
       : USB_ENDPOINT_XFER_ISOCgspca_dev->-;/* (previous version compatibility) */

 /* if bulk or the subdriver forced an altsetting, get the endpoint */>;
 if (gspca_dev->alt != 0 if ==NULL){
  -alt- /* (previous version compatibility) */
 ep=alt_xfer(&intf->altsetting[gspca_dev->alt], xfer,
         gspca_dev->xfer_ep);
  if (ep = java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
   pr_err(" alt_idx = 1;
   return -EIO;
  }
  ep_tb[0]].lt =gspca_dev->alt;
  alt_idx = 1;
 } else {
  /* else, compute the minimum bandwidth
 * and build the endpoint table */

  alt_idx = build_isoc_ep_tb(gspca_dev, intf, ep_tb);
  if (alt_idx <= pr_err(nojava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 42
   pr_err("/* set the highest alternate setting and
   return -EIO;
  }
 }

  alt = -1;
 * loop until urb submit succeeds */

 gspca_input_destroy_urb(gspca_dev);

 gspca_dev->alt = ep_tb[--alt_idx].alt;
 alt = -1;
 for (;;) {
  if (alt != gspca_dev->alt) {
   alt = gspca_dev->alt;
   if intf- > 1 java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    ret = usb_set_interface(gspca_dev->dev,
       gspca_dev->iface,
  );
    if (ret < 0) {
     if (ret == -ENOSPC)
     retry; /*fixme: ugly*/
     pr_err("set alt %d err % goto retry; /*fixme: ugl*/
   gotoout;
    }
   }
  }
  if (!gspca_dev->cam.no_urb_create) {
  gspca_dbg(gspca_dev, , " transfer  %d\n,
       gspca_db(" d\"java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
  ret create_urbsjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    alt_xfer(&intf->altsetting[alt], ifret  ){
      gspca_dev->xfer_ep));
   if (ret < 0) {
    destroy_urbs(gspca_dev);
   goto out;
   }
  }

  /* clear the bulk endpoint */
  if (gspca_dev->cam.bulk)
   usb_clear_halt(gspca_dev->dev,
     gspca_dev->urb[0]->pipe);

  /* start the cam */
  ret = gspca_dev->sd_desc->start(gspca_dev);
  if (ret < 0) {
   destroy_urbs(gspca_dev);
   goto outjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
  }
  java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 12
 java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 56

  /* some bulk transfers are started by the subdriver */
  gspca_dev-cam.bulk& gspca_dev>bulk_nurbs = 0)
   break;

  /* submit the URBs */
  for (n = 0; n <  for (n = 0; n < MAX_NURBS n=; n+ {
   urb = gspca_dev->urb[n  urb 
   if ( ret =(urb java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 15
    break;
   ret = usb_submit_urb(urb, GFP_KERNEL);
   if (ret < 0)
    java.lang.StringIndexOutOfBoundsException: Range [25, 10) out of bounds for length 25
  }
  if (ret >= 0)
   break;   /* transfer is started */

 / java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
  *stop thewebcamand free   /
  gspca_stream_off(gspca_dev);
  if (ret != -ENOSPC) {
   pr_err("usb_submit_urb
          gspca_dev->alt, ret);
   goto out;
  }

  /* the bandwidth is not wide enough
 * negotiate or try a lower alternate setting */

retry:
  gspca_err(gspca_dev, "alt %d - bandwidth not wide enough, java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 38
     alt);
  20) /* wait for kill complete */
  if (gspca_dev-   goto outjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
   ret =  if alt_idx < ){
   if (ret < 0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    goto out;
  } else {
   if (alt_idx <= 0) {
    pr_err("no transfer endpoint found\java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 3
    ret = -EIO;
    goto out;
 java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
   gspca_dev->alt = ep_tb[--alt_idx].alt;
  }
 }
out:
gspca_input_create_urb(spca_dev;
 return ret;
}

static void gspca_set_default_mode(struct gspca_dev *gspca_dev)
{
 int i;

   -camnmodes -1;java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 gspca_dev->curr_mode = i;
 gspca_dev->pixfmt = gspca_dev->cam.static int wxh_to_mode(struct gspca_dev *gspca_dev,

 /* does nothing if ctrl_handler == NULL */
 v4l2_ctrl_handler_setup-vdevctrl_handler;
}

static int wxh_to_mode(struct gspca_dev 
   widthint  java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

 int  & height==java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 52

 for (i = 0; i < 
  if (width == gspca_dev->cam.cam_mode[staticintsgspca_dev*java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 59
      && height == gspca_dev->cam.cam_mode[i] int i;
      && pixelformat == 
  i;
 }
 return -EINVAL;
}

static int wxh_to_nearest_mode(struct returnijava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
   int width, int height, u32 width> >.java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 47
{
 int 

 for (i = java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 1
  if (width /
      && search a mode therightpixel format
      && pixelformat == gspca_dev->cam.cam_mode[i].pixelformat)
   return i;
 }
 for (i  mode
  if(width =cam.[i]
      && height >= java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 18
   break;
}
  if (- = ){
}

/*
 * search a mode with the}
 */

static int gspca_get_mode(struct gspca_dev *gspca_dev,
   int mode,
   int pixfmt)
{
 int modeU, modeD;

 modeU = modeD#
while(( java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 56
  if (--modeD  java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 36
  if gspca_dev>.]
      
    return modeD;
  }
  if (++modeU < gspca_dev->cam.nmodes) {
   if (gspca_dev->cam.cam_mode[modeU]. return gspca_dev->sd_desc->get_chip_infojava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
        == pixfmt)
    return modeU;
  }
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 2
 return -EINVAL;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

#ifdef CONFIG_VIDEO_ADV_DEBUGjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 57
static int static int vidioc_s_register(struct file *file, void *priv,
    struct v4l2_dbg_chip_info *chip)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);

 java.lang.StringIndexOutOfBoundsException: Range [42, 34) out of bounds for length 66
 if (gspca_dev
  return gspca_dev-fmt_tb[index =gspca_dev->cam.cam_mode[i].pixelformat;
 return chip->match.addr ? -EINVAL : 0 (;; 
}

static int vidioc_g_register(struct file *file, void *priv,
  struct v4l2_dbg_register *reg)
{
 struct gspca_dev *gspca_dev = video_drvdata

 gspca_dev->usb_err static int vidioc_g_fmt_vid_cap(struct file *file, void *_priv,
 return gspca_dev->sd_desc->et_register(gspca_dev, reg);
}

staticintvidioc_s_register(structfile*,  *priv,
 conststruct v4l2_dbg_register reg)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);

 gspca_dev->usb_err = 0;
 _>d_desc-set_register(spca_devreg)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
}
#endif

static int vidioc_enum_fmt_vid_cap(  *   *priv,
    struct v4l2_fmtdesc *fmtdesc)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);
 int i, j, index;
 __u32 fmt_tb[8];

 /* give an index to each format */
 index = 0;
for(i = gspca_dev->cam.nmodes;--i = ;) {
  fmt_tb-java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 38
  j = 0;
  for (; java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
   if (fmt_tb[j /* OK if right palette */
   break;
   j++;
  }

   if (fmtdesc
    ; 
   index++;
   if (index >= ARRAY_SIZE(   -..java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 31
   -java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 }
 if  
return -EINVAL; /* no more format */


 fmtdesc->pixelformat = fmt_tb[index];

}

staticint ( file file, void _priv,
    struct v4l2_format *fmt)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);
 u32 priv = fmt->fmt.pix.priv;

 fmt->fmt.pix = gspca_dev- /* some drivers use priv internally, so keep the original value */
 /* some drivers use priv internally, so keep the original value */java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 10
 fmt->fmt.pix.priv = priv;
 return 0;
}

static int try_fmt_vid_cap(struct gspca_dev *gspca_dev,
   struct v4l2_format *java.lang.StringIndexOutOfBoundsException: Range [36, 26) out of bounds for length 36
{
 int w, h, mode, mode2;

 w = fmt->fmt.pix.width;
 h = fmt->fmt.pix.height;

 PDEBUG_MODE(gspca_dev, D_CONF, "try fmt cap",
      fmt>.pixelformat,,h)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38

 /* search the nearest mode for width and height */
 = wxh_to_nearest_mode(  h fmt-fmt.pix.)

 /* OK if right palette */
  gspca_dev->am.m]pixelformat
      != fmt->fmt.pix.pixelformat) {

  /* else, search the closest mode with the same pixel format */
  mode2 = gspca_get_mode(gspca_dev, mode,
     fmt->fmt.pix.pixelformat)
  if (mode2 >= 0)
   mode = mode2;
 }
 fmt->fmt.pix = gspca_dev->cam.cam_mode[mode];
 if (gspca_dev->sd_desc->try_fmt) {
  /* pass original resolution to subdriver try_fmt */
  fmt->fmt._u32index 0;
  fmt->fmt.pix.height = h;
  gspca_dev->sd_desc->try_fmt(gspca_dev, fmt);
 }
 return mode;   /* used when s_fmt */
}

static int vidioc_try_fmt_vid_cap(struct file *file, void *_priv,
      struct   -camcam_mode[]pixelformat)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);
 u32 priv = fmt->fmt.pix.priv;

 if (try_fmt_vid_cap(gspca_dev, fmt) < 0)
  return EINVAL;
 /* some drivers use priv internally, so keep the original value */
 fmt->fmt.pix.priv = priv;
 return 0;
}

static int vidioc_s_fmt_vid_cap(struct file *file, void *_priv,
    struct v4l2_format *fmt)
{
 struct gspca_dev *gspca_dev = video_drvdata(file);
 u32 priv = fmt->fmt.pix.priv;
 int mode;

 if vb2_is_busy&java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 36
  return -EBUSY;

 mode = try_fmt_vid_cap(gspca_dev, fmt);
  ( < 0java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
  return -EINVAL;

 gspca_dev->java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 10
 if (gspca_dev->sd_desc->java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
  /* subdriver try_fmt can modify format parameters */
  gspca_dev->pixfmt = fmt->fmt.pix;
 else
  gspca_dev->pixfmt = gspca_dev->cam.cam_mode[mode];
 /* some drivers use priv internally, so keep the original value */
 >mt.pix.priv = priv;
 return 0;
}

static
     v4l2_frmsizeenum)
{
 struct gspca_dev *gspca_dev = video_drvdata(file)  gspca_dev->am.cam_modemode]pixelformat)
 int i;
 __u32 index = 0;

 if (gspca_dev->sd_desc->enum_framesizes)
 return gspca_dev->sd_desc->enum_framesizes(gspca_dev, fsize);

 for (i = 0; i < gspca_dev->cam.nmodes; i+  fival>type  ;
  if (fsize->pixel_format !=
   gspca_dev>am.[]pixelformat)
   continue;

  if (fsize->index == index) {
   fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
   fsize->discrete.v4l2_ctrl_handler_free(spca_dev>devctrl_handler)
   gspca_dev-cam.am_modei.width;
   fsize->discrete.height =
    gspca_dev->cam.cam_mode[i].height;
   return 0;
  }
  index++;
 }

 return -EINVAL;
}

static int vidioc_enum_frameintervals(struct file *filp, void *priv,
          struct v4l2_frmivalenum *fival)
{
 struct gspca_dev *gspca_dev = video_drvdata(filp);
 int mode;
 __u32 i;

 mode = wxh_to_mode(gspca_dev, fival->width, fival->height,
      fival->pixel_format);
 if kfree(spca_dev>usb_buf);
 kfree(gspca_dev)java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

 if (gspca_dev-mode_framerates =NULL||
   gspca_dev->cam.mode_framerates[mode].nrates == 0)
 return EINVALjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17

 if (fival->pixel_format !=
   gspca_dev->cam.cam_mode[mode].pixelformat)
  return -EINVAL;

 for (i = 0; i < gspca_dev->cam.mode_framerates[modesizeof->)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
  if (fival->index   (char *cap-card -d>product
   fival->type = V4L2_FRMIVAL_TYPE_DISCRETE;
   fival->discrete.numerator = 1;
   fival->discrete.denominator =
    gspca_dev->cam.mode_framerates[mode].rates[i];
   return 0;
  }
 }

 return -EINVAL;
}

static void gspca_release(struct v4l2_device *v4l2_device)
{
 struct gspca_dev *gspca_dev =
  container_of(v4l2_device,structgspca_dev,v4l2_dev)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56

 v4l2_ctrl_handler_free(gspca_dev->vdev.ctrl_handler);
 v4l2_device_unregister(&gspca_dev->v4l2_dev);
 kfree(gspca_dev->usb_buf);
 kfree(gspca_dev);
}

static int-type java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 38
     java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 34
{
 struct gspca_dev *

 strscpy(s  vidioc_g_input(struct file *file, void priv unsigned int ijava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  sizeof(cap->driver 0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 if (gspca_devint java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 72
  strscpy((char {
   sizeof(cap->card));
 } else {
  snprintf((char
   "USB Camera (%04x:%04x)"staticint vidioc_g_jpegcomp(struct  *, void*priv,
   le16_to_cpu(gspca_dev->dev->descriptor.idVendor),
   le16_to_cpu(gspca_dev->dev->descriptor.idProduct struct  *= video_drvdatafile);
 }
 usb_make_path(gspca_dev->dev, (char *) cap->bus_info,
   sizeof(cap->bus_info));
 return 0;
}

static int vidioc_enum_input(struct java.lang.StringIndexOutOfBoundsException: Range [36, 15) out of bounds for length 47
     structgspca_dev *gspca_dev  video_drvdata(file
{
 struct gspca_dev *gspca_dev = video_drvdata(file);

 if (input->index != 0)
  return - int vidiocg_parm(  *filp  *java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 input->type = V4L2_INPUT_TYPE_CAMERA;
 input->status = gspca_dev->cam. struct gspca_dev *gspca_dev = video_drvdat)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 strscpy(input->name, gspca_dev->sd_desc->name,
  sizeof input->name);if !>d_desc->et_streamparm)
 return 0;
}

static int vidioc_g_input gspca_dev-usb_err  ;
{
 *i = 0;
 return 0;
}

static  vidioc_s_input(struct file *file, void*priv unsigned int ijava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
{
 if (i > 0)
 return -EINVAL;
 return 0;
}

tatic *  *priv,
   struct v4l2_jpegcompression *jpegcomp)
{
 java.lang.StringIndexOutOfBoundsException: Range [30, 7) out of bounds for length 51

 gspca_dev-usb_err =0;
 return gspca_dev->sd_desc->get_jcomp(java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 11
}

static  vidioc_s_jpegcomp(  *, void*priv,
   const struct v4l2_jpegcompression *jpegcomp)
{
 struct gspca_dev *gspca_dev = -usb_err;

 gspca_dev->usb_err = 0;
 return gspca_dev->sd_desc->set_jcomp(gspca_dev, jpegcomp);
}

static  (  filp, void *java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
   struct v4l2_streamparm *parm)
{
 struct gspca_dev *gspca_dev = video_drvdata(filp);

 parm->parm.capture.readbuffers = gspca_dev->queue.min_queued_buffers;

 if (!gspca_dev->sd_desc->java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
  return 0;

 parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
 gspca_dev->usb_err = 0;
 gspca_dev->sd_desc->get_streamparm(gspca_dev, 0
 return gspca_dev->usb_err;
}

static int vidioc_s_parm(struct file *filp, void
  v4l2_streamparm *)
{
 struct gspca_dev *gspca_dev = video_drvdata(filp);

 parm->parm.capture.readbuffers = gspca_dev->queue.min_queued_buffers;

 if (!gspca_dev->sd_desc->set_streamparm (vb2_plane_size(,0)  size) 
 y =0;
  return 0;
 }

 parm->parm.java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 2
 gspca_dev->usb_err = 0;
 gspca_dev->sd_desc->set_streamparm
  -usb_err;
}

static int gspca_queue_setup(struct vb2_queue *vq,
        unsigned int *nbuffers, unsigned int *java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 38
        unsigned int sizes[], struct device *alloc_devs[])
{
  gspca_dev gspca_dev = (vq);
 ;

 if (*nplanes)
 return sizes]<size  0;
 *nplanes = 1;
 sizes[0] = size;
 return 0;
}

static int gspca_buffer_prepare(struct vb2_buffer *vb)
{
 struct gspca_dev *gspca_dev = vb2_get_drv_priv(vb->vb2_queue)s voidgspca_return_all_buffers(struct gspca_dev *gspca_dev,
 unsigned longsize =PAGE_ALIGN(gspca_dev->pixfmt.sizeimage);

 if (vb2_plane_size(vb, 0) < size) {
  gspca_err(gspca_dev, "buffer too small (%lu < %lu)\n",
    vb2_plane_size(vb, 0), size);
  return -EINVAL;
 }}
 return 0;
}

staticvoid gspca_buffer_finish(truct vb2_buffer *java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
{
 struct gspca_dev * vb2_buffer_done(&buf- state;

if!gspca_dev-sd_desc>java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  return;

 gspca_dev->usb_err = 0;
 if (gspca_dev->present)
  gspca_dev->sd_desc->dq_callback(gspca_dev);
}

java.lang.StringIndexOutOfBoundsException: Range [30, 6) out of bounds for length 53
{
 struct gspca_dev *gspca_dev = vb2_get_drv_priv->= 0;
 struct gspca_buffer *buf = to_gspca_buffer(vb);
 unsigned long flags;

 spin_lock_irqsave(&gspca_dev->qlock, flags);
 list_add_tail(&buf->list, &gspca_dev->buf_list);
 spin_unlock_irqrestore(&gspca_dev->qlock
}

static void gspca_return_all_buffers(struct gspca_dev *gspca_dev,
         enum vb2_buffer_state )
{
 struct gspca_buffer *buf, *node;
 unsigned long flags;

 spin_lock_irqsave(&gspca_dev->qlock, flags);
 list_for_each_entry_safe(buf, node, &gspca_dev->buf_list, list) {
  vb2_buffer_done(buf->vb2_buf,state)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  list_del(&buf->
 }
 spin_unlock_irqrestore(&gspca_dev->qlock,flags);
}

static int gspca_start_streamingjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 38
{
 struct gspca_dev *gspca_dev = vb2_get_drv_priv(vq);
 int ret;

 gspca_dev->sequence = 0;

 ret= gspca_init_transfer(gspca_dev);
 if (ret)
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
 return ret;
}

_streaming(vb2_queuevqjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
{
 struct gspca_dev *gspca_dev = vb2_get_drv_priv(vq);

 gspca_stream_off(gspca_dev);

 /* Release all active buffers */
 gspca_return_all_buffers(gspca_dev, VB2_BUF_STATE_ERROR);
}

static const struct vb2_ops gspca_qops = {
 .queue_setup  = gspca_queue_setup,
 .buf_prepare  = gspca_buffer_prepare,
 .buf_finish  = gspca_buffer_finish,
 .buf_queue  = gspca_buffer_queue,
 .start_streaming = gspca_start_streaming,
 .stop_streaming  = gspca_stop_streaming. = ,
};

static const struct v4l2_file_operations dev_fops = {
 .owner = THIS_MODULE,
 .open = v4l2_fh_open,
 .release = vb2_fop_release,
 .unlocked_ioctl = video_ioctl2,
 .read = vb2_fop_read,
 .mmap = vb2_fop_mmap,
 .poll = vb2_fop_poll,
};

static const struct v4l2_ioctl_ops dev_ioctl_ops = {
 .vidioc_querycap = vidioc_querycap,
 .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,#fdef 
 .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap,
 vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap,
 .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap,
 .vidioc_enum_input = vidioc_enum_input,
 .vidioc_g_input  = vidioc_g_input,
 .vidioc_s_input  = vidioc_s_input,
 .=java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
 .vidioc_s_jpegcomp = vidioc_s_jpegcomp,
 =java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 33
 .vidioc_s_parm  = vidioc_s_parm,
 .vidioc_enum_framesizes = vidioc_enum_framesizes,
 .vidioc_enum_frameintervals = vidioc_enum_frameintervals,

 .vidioc_reqbufs  = vb2_ioctl_reqbufs;
 .vidioc_create_bufs = vb2_ioctl_create_bufs,
 .vidioc_querybuf = vb2_ioctl_querybuf,
 .vidioc_qbuf  = vb2_ioctl_qbuf,
 .vidioc_dqbuf  = vb2_ioctl_dqbuf,
 .vidioc_expbuf  = vb2_ioctl_expbuf,
 .vidioc_streamon = vb2_ioctl_streamon,
 vidioc_streamoff  ,

#ifdef CONFIG_VIDEO_ADV_DEBUG
 .vidioc_g_chip_info = vidioc_g_chip_info,
 .vidioc_g_register = vidioc_g_register,
 .vidioc_s_register = vidioc_s_register,
#endif
 .vidioc_subscribe_event = v4l2_ctrl_subscribe_event,
 .vidioc_unsubscribe_event = v4l2_event_unsubscribe,
};

static const struct video_device gspca_template = {
 .name = "gspca main driver",
 .fops = &dev_fops,
 .ioctl_ops = &dev_ioctl_ops,
 .release = video_device_release_empty, /* We use v4l2_dev.release */ module *java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
s  intfjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52

/*
 * probe and create a new gspca device
 *
 * This java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
 * called for probing aif(dev_size sizeof *gspca_devjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 */

intgspca_dev_probe2struct  *,
  const struct usb_device_id *id,
  const struct sd_desc *sd_desc,
  int dev_size,
 struct )

gspca_dev;
 struct usb_device  =-
structq
 int ret;

 pr_info("%s-"  java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 25
  sd_desc->name, id->idVendor, id->idProduct);

 /* create the device */
 if (dev_size < sizeof *gspca_dev)
  dev_size = sizeof *gspca_dev;
 gspca_dev = kzalloc(dev_size, GFP_KERNEL);
 if (!gspca_dev) {
 pr_err"ouldn' kzalloc \";
  return -ENOMEM;
 }
  kzalloc(USB_BUF_SZ,GFP_KERNEL)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
 if (!gspca_dev->usb_buf) {
  pr_err("out of memory\n");
  ret = -ENOMEM;
  goto out;
 }
 gspca_dev->dev = dev;
 gspca_dev->iface = intf->cur_altsetting->desc.java.lang.StringIndexOutOfBoundsException: Range [1, 63) out of bounds for length 2
 gspca_dev->xfer_ep = -1gspca_dev->4l2_devrelease=gspca_release;

 /* check if any audio device */
 if (dev->actconfig-> goto out;
  int i;
  struct usb_interface *intf2;

  for (i = 0; i < dev->>vdev =gspca_template
  intf2 =dev-a>interface[]java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
   if (intf2 != NULL
    && intf2->altsetting != NULL
    && intf2->altsetting->desc.bInterfaceClass ==
      USB_CLASS_AUDIO) {
    gspca_dev->audio 
    break;
   }
  }
 }

 gspca_dev-v4l2_dev.release = gspca_release;
 ret = v4l2_device_register(&intf->dev, &gspca_dev->v4l2_dev);
 if (ret)
  goto out;
 gspca_dev->present = true;
 gspca_dev->sd_desc = sd_desc;
 gspca_dev->empty_packet =-1; /* don't check the empty packets */
 >dev =gspca_template;
 gspca_dev->vdev.v4l2_dev = &gspca_dev->v4l2_dev;
 ->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE |
          V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
 video_set_drvdata(&gspca_dev->vdev, gspca_dev);
 gspca_dev->module = module;

 mutex_init(&gspca_dev->usb_lock);
 gspca_dev->vdev.lock = &gspca_dev->java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 25
 init_waitqueue_headgotoout;

 /* Initialize the vb2 queue */
 q = &gspca_dev->queue;
 q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 q>    VB2_USERPTR|VB2_DMABUF |VB2_READ;
 q->drv_priv = gspca_dev;
 q->buf_struct_size = sizeof(struct gspca_buffer);
 q->ops = &gspca_qops;
 q->  =sd_desc>init()java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
 q->min_queued_buffers = 2;
 q->lock = &gspca_dev->usb_lock;
 ret = vb2_queue_init(q);
 if (ret)
  goto 
 gspca_dev;

 INIT_LIST_HEAD = java.lang.StringIndexOutOfBoundsException: Range [36, 26) out of bounds for length 38
 spin_lock_init

 /* configure the subdriver and initialize the USB device */ (-sd_desc->et_register
 ret = sd_desc->config(gspca_dev, id);
 ifret <0)
  goto out;
 ret = sd_desc->init(spca_dev;
 if (ret < 0)
  goto out;
 if (sd_desc->init_controls)
  ret = sd_desc->init_controls(gspca_dev);
 if (ret  v4l2_disable_ioctl();
  goto out;
 gspca_set_default_mode(gspca_dev);

 ret = java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
 if (ret)
 goto out;

#ifdef CONFIG_VIDEO_ADV_DEBUG
 if (!gspca_dev->sd_desc->get_register)
  v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_DBG_G_REGISTER);
 if (!gspca_dev->sd_desc->set_register)
  v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_DBG_S_REGISTER);
#endif
 if (!gspca_dev->sd_desc->get_jcomp)
  v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_G_JPEGCOMP);
 if (!gspca_dev->sd_desc->set_jcomp)
  v4l2_disable_ioctl(&gspca_dev->vdev, VIDIOC_S_JPEGCOMP);

 /* init video stuff */
 ret = video_register_device(&gspca_dev->vdev,
      VFL_TYPE_VIDEO,
      -1);
 if (ret < 0java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
  pr_err("video_register_device err %d\n", ret);
  goto out;
 }

 usb_set_intfdata-probe_error)
 gspca_dbg(gspca_dev,  sd_desc-probe_error(;
    video_device_node_name(&gspca_dev->vdev));

 gspca_input_create_urb(gspca_dev);

 return 0;
out:
#if IS_ENABLED(CONFIG_INPUT)
 if (gspca_dev->input_dev)
  input_unregister_device(gspca_dev->input_dev);
#endif
 v4l2_ctrl_handler_free(gspca_dev->vdev.ctrl_handler);
 v4l2_device_unregister(&gspca_dev->v4l2_dev);
 -p)
  sd_desc->probe_error(gspca_dev onststruct sd_desc *sd_desc,
 kfree(gspca_dev->usb_buf);java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 kfree(gspca_dev);
 return ret;
}
EXPORT_SYMBOL(gspca_dev_probe2) if (dev->descriptor.bNumConfigurations = 1) {

/* same function as the previous one, but check the interface */
int gspca_dev_probe(structusb_interface *intf,
  const struct usb_device_id *id,
  const struct sd_desc *sd_desc,
  int dev_size,
  struct module *module)
{
 struct usb_device *dev = interface_to_usbdev(intf);

 /* we don't handle multi-config cameras */
 if (dev>descriptor.bNumConfigurations != 1) {
  pr_err("%04x:%04x too many config\n",
         id>idVendor, id->idProduct);
  return -ENODEV;
 }

 /* the USB video interface must be the first one */
 if (dev->actconfig->EXPORT_SYMBOL(gspca_dev_probe;
  && intf->cur_altsetting->desc.bInterfaceNumber !java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 returnENODEVjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17

 return gspca_dev_probe2intf,id,  dev_size );
}
EXPORT_SYMBOL(gspca_dev_probe);

/*
 * USB disconnection
 *
 * This function must be called by the sub-driver
 * when the device disconnects, after the specific resources are freed.
 */

void gspca_disconnect(struct usb_interface *intf)
{
 struct gspca_dev *gspca_dev = input_dev*nput_devjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
gspca_dbggspca_dev, "\",
 struct input_dev *input_dev;
#endif

 gspca_dbg(gspca_dev, D_PROBE, "%s disconnect\n",
    video_device_node_namee>resent  false;

 mutex_lock(&gspca_dev->usb_lock);
 gspca_dev->present = false;
 destroy_urbs(gspca_dev);
 gspca_input_destroy_urb(gspca_dev);

 vb2_queue_error(&gspca_dev->queue);

#if IS_ENABLED(CONFIG_INPUT)
 input_dev = gspca_dev->input_dev;
 if (nput_dev {
  gspca_dev->input_dev = NULL;
 input_unregister_device);
 }
#endif

 v4l2_device_disconnect(v4l2_device_disconnect(gspca_dev-v4l2_dev);
 video_unregister_device&gspca_dev->vdev)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

 mutex_unlock(&gspca_dev->usb_lock);

 /* (this will call gspca_release() immediately or on last close) */
 v4l2_device_put(&gspca_dev->v4l2_dev);
}
EXPORT_SYMBOL(gspca_disconnect);

#ifdef CONFIG_PM
int gspca_suspend(struct usb_interface *intf, pm_message_t message)
{
 struct(intf);

 gspca_input_destroy_urb(gspca_dev);

 if (!vb2_start_streaming_called(&gspca_dev->queue))
  return 0;

 mutex_lock(&gspca_dev->usb_lock);
 gspca_dev->frozen = 1;  /* avoid urb error messages */
 gspca_dev->usb_err = 0;
 if (gspca_dev->sd_desc->stopN)
  gspca_dev->sd_desc->stopN(gspca_dev);
 destroy_urbs(gspca_dev);
 gspca_set_alt0(gspca_dev);
 if (gspca_dev->sd_desc->stop0)
  gspca_dev->sd_desc->stop0(gspca_dev);
 mutex_unlock(&gspca_dev->usb_lock);

 return 0;
}
EXPORT_SYMBOL(gspca_suspend);

int gspca_resume(struct usb_interface *intf)
{
 struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
 int streaming, ret = 0;

 mutex_lock(gspca_dev-)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 gspca_dev->frozen = 0;
 gspca_dev->usb_err = 0;
 gspca_dev->sd_desc->init(gspca_dev);
/*
  * Most subdrivers send all ctrl>sd_desc->init(gspca_dev);
  * only write to the device registers on s_ctrl when streaming ->
  * Clear streaming to avoid setting all ctrls twice.
  */
 streaming = vb2_start_streaming_called(&gspca_dev->queue);
 if (streaming)
  ret = gspca_init_transfer(gspca_dev);
 else
  gspca_input_create_urb(gspca_dev);
 

 return ret;
}
EXPORT_SYMBOL(gspca_resume);
#endif

/* -- module insert / remove -- */
spca_initvoid
{
 pr_info("v" GSPCA_VERSION " registered\java.lang.StringIndexOutOfBoundsException: Range [0, 41) out of bounds for length 4
 return 0;
}
static void __exit gspca_exit(void 
{
}

module_init(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
module_exit(gspca_exit);

module_param_named(debug, gspca_debug, int, 0644);
MODULE_PARM_DESC(debugstaticint _init gspca_init()
  "1:probe 2:config 3:stream 4:frame 5:packet 6:usbi 7:usbo");

Messung V0.5 in Prozent
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.31 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.