@@ -221,60 +221,57 @@ bool CvCaptureCAM_DC1394_v2_CPP::startCapture()
221
221
DC1394_ISO_SPEED_3200);
222
222
}
223
223
224
- // should a specific mode be used
225
- if (userMode >= 0 )
224
+ dc1394video_modes_t videoModes;
225
+ dc1394_video_get_supported_modes (dcCam, &videoModes);
226
226
227
+ // should a specific mode be used
228
+ while (userMode >= 0 ) // 'if' semantic, no real loop here
227
229
{
228
230
dc1394video_mode_t wantedMode;
229
- dc1394video_modes_t videoModes;
230
- dc1394_video_get_supported_modes (dcCam, &videoModes);
231
-
232
- // set mode from number, for example the second supported mode, i.e userMode = 1
233
231
234
232
if (userMode < (int )videoModes.num )
235
233
{
234
+ // set mode from number, for example the second supported mode, i.e userMode = 1
236
235
wantedMode = videoModes.modes [userMode];
237
236
}
238
-
239
- // set modes directly from DC134 constants (from dc1394video_mode_t)
240
- else if ((userMode >= DC1394_VIDEO_MODE_MIN) && (userMode <= DC1394_VIDEO_MODE_MAX ))
237
+ else if ((userMode >= DC1394_VIDEO_MODE_MIN) && (userMode <= DC1394_VIDEO_MODE_MAX))
241
238
{
239
+ // set modes directly from DC134 constants (from dc1394video_mode_t)
240
+
242
241
// search for wanted mode, to check if camera supports it
243
242
int j = 0 ;
244
- while ((j< (int )videoModes.num ) && videoModes.modes [j]!= userMode)
243
+ while ((j < (int )videoModes.num ) && videoModes.modes [j] != userMode)
245
244
{
246
245
j++;
247
246
}
248
-
249
- if ((int )videoModes.modes [j]==userMode)
250
- {
251
- wantedMode = videoModes.modes [j];
252
- }
253
- else
247
+ if (!(j < (int )videoModes.num ))
254
248
{
255
249
userMode = -1 ; // wanted mode not supported, search for best mode
250
+ break ;
256
251
}
252
+
253
+ wantedMode = videoModes.modes [j];
257
254
}
258
255
else
259
256
{
260
- userMode = -1 ; // wanted mode not supported, search for best mode
257
+ userMode = -1 ; // wanted mode not supported, search for best mode
258
+ break ;
261
259
}
260
+
262
261
// if userMode is available: set it and update size
263
- if (userMode != -1 )
264
262
{
265
263
code = dc1394_video_set_mode (dcCam, wantedMode);
266
- uint32_t width, height;
264
+ uint32_t width = 0 , height = 0 ;
267
265
dc1394_get_image_size_from_video_mode (dcCam, wantedMode, &width, &height);
268
266
frameWidth = (int )width;
269
267
frameHeight = (int )height;
270
268
}
269
+ break ;
271
270
}
272
271
273
272
if (userMode == -1 && (frameWidth > 0 || frameHeight > 0 ))
274
273
{
275
- dc1394video_mode_t bestMode = (dc1394video_mode_t ) - 1 ;
276
- dc1394video_modes_t videoModes;
277
- dc1394_video_get_supported_modes (dcCam, &videoModes);
274
+ dc1394video_mode_t bestMode = (dc1394video_mode_t )(-1 );
278
275
for (i = 0 ; i < (int )videoModes.num ; i++)
279
276
{
280
277
dc1394video_mode_t mode = videoModes.modes [i];
0 commit comments