fix #3477:
authorVladislav Vinogradov <vlad.vinogradov@itseez.com>
Tue, 28 Jan 2014 06:28:00 +0000 (10:28 +0400)
committerVladislav Vinogradov <vlad.vinogradov@itseez.com>
Tue, 28 Jan 2014 06:28:00 +0000 (10:28 +0400)
CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING property is not supported
by all VideoCapture backends. Some backends can return 0.0 or -1.0.

modules/java/generator/src/cpp/VideoCapture.cpp

index a9d0a56..e4a8bc2 100644 (file)
@@ -329,7 +329,10 @@ JNIEXPORT jstring JNICALL Java_org_opencv_highgui_VideoCapture_n_1getSupportedPr
         VideoCapture* me = (VideoCapture*) self; //TODO: check for NULL
         union {double prop; const char* name;} u;
         u.prop = me->get(CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING);
-        return env->NewStringUTF(u.name);
+        // VideoCapture::get can return 0.0 or -1.0 if it doesn't support
+        // CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING
+        if (u.prop != 0.0 && u.prop != -1.0)
+            return env->NewStringUTF(u.name);
     } catch(const std::exception &e) {
         throwJavaException(env, &e, method_name);
     } catch (...) {