/**
 * \brief Open native capture device.
 * \param env JNI environment
 * \param obj DSCaptureDevice object
 * \param ptr native pointer of DSCaptureDevice
 */
JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice_open
  (JNIEnv* env, jobject obj, jlong ptr)
{
    DSCaptureDevice* dev = reinterpret_cast<DSCaptureDevice*>(ptr);

    dev->buildGraph();
    dev->start();
}
JNIEXPORT jint JNICALL
Java_org_jitsi_impl_neomedia_jmfext_media_protocol_directshow_DSCaptureDevice_start
    (JNIEnv *env, jobject obj, jlong ptr)
{
    DSCaptureDevice *thiz = reinterpret_cast<DSCaptureDevice *>(ptr);

    return (jint) (thiz->start());
}
/**
 * \brief Set format of native capture device.
 * \param env JNI environment
 * \param obj DSCaptureDevice object
 * \param ptr native pointer of DSCaptureDevice
 * \param format DSFormat to set
 */
JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice_setFormat
  (JNIEnv* env, jobject obj, jlong ptr, jobject format)
{
    DSCaptureDevice* dev = reinterpret_cast<DSCaptureDevice*>(ptr);
    VideoFormat fmt;
    jclass clazz = env->GetObjectClass(format);

    if(clazz)
    {
        jfieldID fieldH = env->GetFieldID(clazz, "height", "I");
        jfieldID fieldW = env->GetFieldID(clazz, "width", "I");
        jfieldID fieldF = env->GetFieldID(clazz, "pixelFormat", "J");
        jlong f = env->GetLongField(format, fieldF);
        jint w = env->GetIntField(format, fieldW);
        jint h = env->GetIntField(format, fieldH);

        fmt.width = w;
        fmt.height = h;
        fmt.pixelFormat = (unsigned long)f;

        dev->setFormat(fmt);
        dev->start();
    }
}