/** * \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 jint JNICALL Java_org_jitsi_impl_neomedia_jmfext_media_protocol_directshow_DSCaptureDevice_setFormat (JNIEnv* env, jobject obj, jlong ptr, jobject format) { DSCaptureDevice* thiz = reinterpret_cast<DSCaptureDevice*>(ptr); jclass clazz = env->GetObjectClass(format); HRESULT hr; if (clazz) { jfieldID heightFieldID = env->GetFieldID(clazz, "height", "I"); if (heightFieldID) { jfieldID widthFieldID = env->GetFieldID(clazz, "width", "I"); if (widthFieldID) { jfieldID pixelFormatFieldID = env->GetFieldID(clazz, "pixelFormat", "I"); if (pixelFormatFieldID) { DSFormat format_; format_.height = env->GetIntField(format, heightFieldID); format_.pixelFormat = (DWORD) (env->GetIntField(format, pixelFormatFieldID)); format_.width = env->GetIntField(format, widthFieldID); hr = thiz->setFormat(format_); } else hr = E_FAIL; } else hr = E_FAIL; } else hr = E_FAIL; } else hr = E_FAIL; return hr; }
/** * \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(); } }