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 
Beispiel #2
0
//***********************************************************************************
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;
        }
}