Changeset 4342

Show
Ignore:
Timestamp:
12/17/08 06:41:51 (6 years ago)
Author:
douglask
Message:

V4L2 code fix to prevent infinite loops with broken VIDIOC_ENUM_FMT ioctls

Fix a dumb mistake with the setting of width_ and height_

Files:
1 modified

Legend:

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

    r4341 r4342  
    11481148 
    11491149        while ( !format_ok ) { 
    1150                 width_  = CIF_WIDTH  *2  / decimate_; 
    1151                 height_ = CIF_HEIGHT *2  / decimate_; 
     1150                if (capture_standard == CS_VC) { 
     1151                        width_  = CIF_WIDTH  *2  / decimate_; 
     1152                        height_ = CIF_HEIGHT *2  / decimate_; 
     1153                } 
    11521154 
    11531155                debug_msg("V4L2: format"); 
     
    11891191                        err = v4l2_ioctl(fd_, VIDIOC_ENUM_FMT, &fmtd); 
    11901192                        if (err) { 
    1191                                 debug_msg("VIDIOC_ENUM_FMT returned error %d\n",errno); 
     1193                                debug_msg("V4L2: VIDIOC_ENUM_FMT returned unexpected EINVAL error code\n"); 
     1194                                debug_msg("V4L2: giving up ...\n"); 
     1195                                format_ok = 1; 
     1196 
    11921197                        } else { 
    11931198                                if (fmtd.pixelformat == pixelformat) { 
     
    12841289                                                                debug_msg("V4L2: giving up ...\n"); 
    12851290                                                                format_ok = 1; 
    1286                                                                 capture_standard = CS_VC; 
    12871291                                                        } 
    12881292                                                        break; 
     
    13001304                } 
    13011305        } 
    1302  
    13031306 
    13041307        allocref();