Hi Paulo,

I inserted you code into mine. I set:
formatIn = V4L2_PIX_FMT_YUYV
width = 640
height = 480
fps = 30

The result is:
"Requested Format unavailable: get width 176 height 144"

Like I usually got :(
Thank you for trying to help me anyway,


Cédric Lescop



On Thu, March 19, 2009 10:25, Paulo Assis wrote:
> Cédric Hi,
> Could you pleaser try the following function, you will have to make the
> necessary adaptations to your code.
>
>
> int set_format(int fd, int formatIn, int width, int height, int fps) {
> struct v4l2_format fmt; struct v4l2_streamparm streamparm; int ret=0;
>
> // set format
> fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt.fmt.pix.width = width;
> fmt.fmt.pix.height = height; fmt.fmt.pix.pixelformat = formatIn;
> fmt.fmt.pix.field = V4L2_FIELD_ANY;
>
> ret = ioctl(fd, VIDIOC_S_FMT, &fmt); if (ret < 0) {
> fprintf(stderr, "VIDIOC_S_FORMAT - Unable to set format\n"); return (-1); }
> if ((fmt.fmt.pix.width != width) || (fmt.fmt.pix.height != height))
> {
> fprintf(stderr, "Requested Format unavailable: get width %d height %d \n",
> fmt.fmt.pix.width, fmt.fmt.pix.height); return(-2); }
>
>
> streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> streamparm.parm.capture.timeperframe.numerator = 1;
> streamparm.parm.capture.timeperframe.denominator = fps; ret =
> ioctl(fd,VIDIOC_S_PARM, &streamparm); if (ret < 0) {
> fprintf(stderr, "VIDIOC_S_PARM error\n"); return (-3); }
> return (0); }
>
>
> Best regards,
> Paulo
>
>
> lesc...@esiee.fr escreveu:
>> Hi,
>>
>>
>> This is my problem, I don't have any errors. V4L2 API says that when
>> you ask for a Width and Heigth, the driver will give you the max ones
>> below the values you asked for. Meaning if you ask for 817x616, it will
>> set 800x600 without returning any errors.
>>
>>
>>
>> My DMESG (no pb, I have got my "/dev/video0"):
>>
>>
>> usb 1-2: new full speed USB device using ohci_hcd and address 3 usb 1-2:
>> configuration #1 chosen from 1 choice uvcvideo: Found UVC 1.00 device
>> <unnamed> (046d:0991)
>> input: UVC Camera (046d:0991) as
>> /devices/pci0000:00/0000:00:02.2/usb1/1-2/1-2:1.0/input/input9
>>
>>
>>
>> An extract of my code, taken from the web (Capture.c):
>>
>>
>> CLEAR (fmt);
>>
>>
>> fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (-1 == xioctl (fd,
>> VIDIOC_G_FMT, &fmt))
>> errno_exit ("VIDIOC_G_FMT");
>>
>> fmt.fmt.pix.width       = WB_FRAME_WIDTH;   // 800 fmt.fmt.pix.height
>> = WB_FRAME_HEIGHT;  // 600
>> fmt.fmt.pix.pixelformat = WB_COLOR_FORMAT;  // YUYV which is perfect for
>> me fmt.fmt.pix.field       = V4L2_FIELD_INTERLACED;
>>
>> // Note VIDIOC_S_FMT may change width and height
>> // So I check the *new* values
>>
>>
>> fprintf (stderr, "width: %d\n"
>> "height: %d\n",
>> fmt.fmt.pix.width, fmt.fmt.pix.height);
>>
>>
>> It prints 176 by 144! What am I doing wrong?
>> (later, I check the buffer size allocated via MMAP: 50688 => 176 x 144 x
>> 2)
>>
>>
>> Any ideas? Where could be the problem?
>>
>>
>> Regards,
>>
>>
>>
>> Cédric Lescop
>>
>>
>>
>>
>> On Wed, March 18, 2009 13:52, Laurent Pinchart wrote:
>>
>>
>>> Hi,
>>>
>>>
>>>
>>> On Monday 16 March 2009 14:43:35 lesc...@esiee.fr wrote:
>>>
>>>
>>>
>>>> Hello everyone,
>>>>
>>>>
>>>>
>>>> I'm using this webcam to do some streaming and image analysis.
>>>> When using Logitech's driver under MS Window, it works fine. I've
>>>> access to all resolutions with the RGB24 format.
>>>>
>>> The camera doesn't support the RGB24 format natively. Transcoding has
>>> to be done in software. libv4l2 can help you there.
>>>
>>>
>>>> The problem is when running under Linux. I'm using uvcvideo driver
>>>> via V4L2 but I can't make it work properly.
>>>> The resolution gets stuck to 176x144
>>>> and the format is YUYV.
>>>>
>>>> Normally, the webcam is supposed to support a 1600x1200 resolution,
>>>> how can I set it up correctly?
>>>>
>>> You should be able to use higher resolutions. Can you describe your
>>> problem in details, including the steps performed and the error
>>> messages being printed ?
>>>
>>>
>>>> Thank you in advance,
>>>>
>>>>
>>>>
>>>> xioctl (fd, VIDIOC_ENUM_FMT, &fdq)
>>>>
>>>> returns me 2 formats only: MJPEG and YUYV. YUYV is fine for me but
>>>> I
>>>> can't reach 1600x1200, or 800x600 or even not 320x240!!!!
>>>>
>>> Best regards,
>>>
>>>
>>>
>>> Laurent Pinchart
>>>
>>>
>>>
>>>
>>>
>>
>>
>> _______________________________________________
>> Linux-uvc-devel mailing list
>> Linux-uvc-devel@lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
>>
>>
>>
>
> _______________________________________________
> Linux-uvc-devel mailing list
> Linux-uvc-devel@lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
>
>


_______________________________________________
Linux-uvc-devel mailing list
Linux-uvc-devel@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to