void config_loudness( // Configure loudness parameters GAIN_PARAM_S * cur_param_ps // Pointer to structure containing gain parameters ) { // Check if Gain-shaping initialised if (0 == gain_gs.init_done) { // Initialse Gain shaping init_gain( &gain_gs ); // Initialise gain data structure gain_gs.init_done = 1; // Signal Gain-shaping initialised } // if (0 == gain_gs->init_done) //printstr("GN= "); printintln( (int)cur_param_ps->gain ); // MB~ // Calculate gain-shaping parameters update_parameters( &gain_gs ,cur_param_ps ); gain_gs.params_set = 1; // Signal Gain-shaping parameters configured } // config_loudness
//*********************************************************************************** static void init_device (void) { struct v4l2_capability cap; struct v4l2_cropcap cropcap; struct v4l2_crop crop; struct v4l2_format fmt; unsigned int min; if (-1 == xioctl (fd, VIDIOC_QUERYCAP, &cap)) { if (EINVAL == errno) { fprintf (stderr, "%s is no V4L2 device\n", dev_name); exit (EXIT_FAILURE); } else { errno_exit ("VIDIOC_QUERYCAP"); } } else { printf ("Caps returns: 0x%x\n", cap.capabilities); } if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { fprintf (stderr, "%s is no video capture device\n", dev_name); exit (EXIT_FAILURE); } switch (io) { case IO_METHOD_READ: if (!(cap.capabilities & V4L2_CAP_READWRITE)) { fprintf (stderr, "%s does not support read i/o\n", dev_name); //exit (EXIT_FAILURE); } break; case IO_METHOD_MMAP: case IO_METHOD_USERPTR: if (!(cap.capabilities & V4L2_CAP_STREAMING)) { fprintf (stderr, "%s does not support streaming i/o\n", dev_name); exit (EXIT_FAILURE); } break; case IO_METHOD_SETEXPOSURE: puts("I am in expo"); init_exposure(); break; case IO_METHOD_SETGAIN : puts("I am in gain"); init_gain(); break; } /* Select video input, video standard and tune here. */ CLEAR (cropcap); cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (0 == xioctl (fd, VIDIOC_CROPCAP, &cropcap)) { crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; crop.c = cropcap.defrect; /* reset to default */ if (-1 == xioctl (fd, VIDIOC_S_CROP, &crop)) { switch (errno) { case EINVAL: /* Cropping not supported. */ fprintf(stderr, " Cropping not supported\n"); break; default: /* Errors ignored. */ break; } } } else { /* Errors ignored. */ } CLEAR (fmt); fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt.fmt.pix.width = TARGETWIDTH; fmt.fmt.pix.height = TARGETHEIGHT; fmt.fmt.pix.pixelformat = PIXELFMT; // defined at the top of the file printf("capture: size: W - %d H - %d, format: 0x%x\n", fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.pixelformat); fmt.fmt.pix.field = V4L2_FIELD_NONE; #if 1 if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) { printf("xioctl(VIDIOC_S_FMT) failed--->It's doesn't matter. Continue..."); } else { printf("VIDIOC_S_FMT returned success\n"); printf(" returned: pix.width: %d pix.height: %d\n", fmt.fmt.pix.width, fmt.fmt.pix.height); } //;jr;$* exit for now // printf("EXIT APPLICATION for now......\n"); // exit(0); #endif /* Note VIDIOC_S_FMT may change width and height. */ /* Buggy driver paranoia. */ min = fmt.fmt.pix.width * 2; if (fmt.fmt.pix.bytesperline < min) fmt.fmt.pix.bytesperline = min; min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height; if (fmt.fmt.pix.sizeimage < min) fmt.fmt.pix.sizeimage = min; switch (io) { case IO_METHOD_READ: init_read (fmt.fmt.pix.sizeimage); break; case IO_METHOD_MMAP: init_mmap (); break; case IO_METHOD_USERPTR: init_userp (fmt.fmt.pix.sizeimage); break; case IO_METHOD_SETEXPOSURE: break; } }