Changeset 4221

Show
Ignore:
Timestamp:
07/24/08 06:40:55 (6 years ago)
Author:
douglask
Message:

Apply patch posted by Claus Endres to the AG-tech mailing list, includes fix for resolution selection at large resolution.

Addition fixes include:
debug output fixes, including spelling mistake and missing newlines
fixed pixelformat selection for some UVC webcams that only support uncompressed video at <= QCIF resolution, but MJPEG at higher resolutions

Location:
vic/branches/mpeg4/video
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vic/branches/mpeg4/video/grabber-v4l2.cpp

    r4215 r4221  
    228228                debug_msg("V4L2: trying %s... ",dev[i]); 
    229229                if (-1 == (fd = open(dev[i],O_RDWR))) { 
    230                         debug_msg("Error opening: %s : %s", dev[i], strerror(errno)); 
     230                        debug_msg("Error opening: %s : %s\n", dev[i], strerror(errno)); 
    231231                        continue; 
    232232                } 
     
    334334        fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420; 
    335335        if (-1 != ioctl(fd_, VIDIOC_S_FMT, &fmt) ) { 
    336                 have_YUV420P = 1; 
    337                 debug_msg("\nDevice capture V4L2_PIX_FMT_YUV420\n"); 
     336                if (fmt.fmt.pix.height == CIF_HEIGHT) { 
     337                        have_YUV420P = 1; 
     338                        debug_msg("\nDevice supports V4L2_PIX_FMT_YUV420\n"); 
     339                } 
    338340        } 
    339341 
     
    342344        fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV422P; 
    343345        if (-1 != ioctl(fd_, VIDIOC_S_FMT, &fmt) ) { 
    344                 have_YUV422P = 1; 
    345                 debug_msg("\nDevice capture V4L2_PIX_FMT_YUV422\n"); 
     346                if (fmt.fmt.pix.height == CIF_HEIGHT) { 
     347                        have_YUV422P = 1; 
     348                        debug_msg("\nDevice supports V4L2_PIX_FMT_YUV422\n"); 
     349                } 
    346350        } 
    347351 
     
    350354        fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; 
    351355        if (-1 != ioctl(fd_, VIDIOC_S_FMT, &fmt) ) { 
    352                 if (fmt.fmt.pix.width <= CIF_WIDTH && fmt.fmt.pix.height <= CIF_HEIGHT) { 
     356                if (fmt.fmt.pix.height == CIF_HEIGHT) { 
    353357                        have_YUV422 = 1; 
    354                         debug_msg("\nDevice capture V4L2_PIX_FMT_YUYV (YUV 4:2:2)\n"); 
     358                        debug_msg("\nDevice supports V4L2_PIX_FMT_YUYV (YUV 4:2:2)\n"); 
    355359                } 
    356360        } 
     
    361365        if (-1 != ioctl(fd_, VIDIOC_S_FMT, &fmt) ) { 
    362366                have_MJPEG = 1; 
    363                 debug_msg("\nDevice capture V4L2_PIX_FMT_MJPEG\n"); 
     367                debug_msg("\nDevice supports V4L2_PIX_FMT_MJPEG\n"); 
    364368        } 
    365369 
     
    369373        if (-1 != ioctl(fd_, VIDIOC_S_FMT, &fmt) ) { 
    370374                have_MJPEG = 1; 
    371                 debug_msg("\nDevice capture V4L2_PIX_FMT_JPEG\n"); 
     375                debug_msg("\nDevice supports V4L2_PIX_FMT_JPEG\n"); 
    372376        } 
    373377 
    374378        if( !( have_YUV422P || have_YUV422 || have_YUV420P || have_MJPEG || have_JPEG)){ 
    375                 debug_msg("No suitable palette found\n"); 
     379                debug_msg("No suitable pixelformat found\n"); 
    376380                close(fd_); 
    377381                status_=-1; 
     
    11421146                                                        break; 
    11431147                                                case 1: 
    1144                                                         debug_msg("V4L2: falling back to resolution %dx%d\n", fmt.fmt.pix.width, fmt.fmt.pix.height); 
     1148                                                        debug_msg("V4L2: trying NTSC resolution ...\n"); 
    11451149                                                        decimate_ = 0; 
    1146                                                         width_ = fmt.fmt.pix.width; 
    1147                                                         height_ = fmt.fmt.pix.height; 
     1150                                                        width_ = NTSC_WIDTH; 
     1151                                                        height_ = NTSC_HEIGHT; 
     1152                                                        break; 
     1153                                                case 0: 
     1154                                                        debug_msg("V4L2: trying resolution under ...\n"); 
     1155                                                        decimate_ = 2; 
    11481156                                                        break; 
    11491157                                                default: 
  • vic/branches/mpeg4/video/grabber-video4linux.cpp

    r4043 r4221  
    219219        debug_msg("V4L: trying %s... ", dev[i]); 
    220220        if (-1 == (fd = open(dev[i], O_RDONLY))) { 
    221             debug_msg("Error opening: %s : %s", dev[i], strerror(errno));       //SV-XXX: sys_errlist deprecated, use strerror() 
     221            debug_msg("Error opening: %s : %s\n", dev[i], strerror(errno));     //SV-XXX: sys_errlist deprecated, use strerror() 
    222222            continue; 
    223223        } 
     
    421421 
    422422    if( !( have_422P || have_422 || have_420P)){ 
    423       debug_msg("No suituable palette found\n"); 
     423      debug_msg("No suitable palette found\n"); 
    424424      close(fd_); 
    425425      status_=-1;