mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
video API: return bool from registerSinkTarget
This allows clients to know if sink registration succeeded. Change-Id: Ic22d4a50b9cf3c071562c6425724008a54e5f3a6
This commit is contained in:
@ -349,19 +349,20 @@ DRing::FrameBuffer sinkTargetPullCallback(ANativeWindow *window)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
__android_log_print(ANDROID_LOG_WARN, TAG, "Exception in pull callback");
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_registerVideoCallback(JNIEnv *jenv, jclass jcls, jstring sinkId, jlong window)
|
JNIEXPORT jboolean JNICALL Java_net_jami_daemon_JamiServiceJNI_registerVideoCallback(JNIEnv *jenv, jclass jcls, jstring sinkId, jlong window)
|
||||||
{
|
{
|
||||||
if(!sinkId) {
|
if(!sinkId) {
|
||||||
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
|
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
|
||||||
return;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(sinkId, 0);
|
const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(sinkId, 0);
|
||||||
if (!arg1_pstr)
|
if (!arg1_pstr)
|
||||||
return;
|
return JNI_FALSE;
|
||||||
std::string sink(arg1_pstr);
|
std::string sink(arg1_pstr);
|
||||||
jenv->ReleaseStringUTFChars(sinkId, arg1_pstr);
|
jenv->ReleaseStringUTFChars(sinkId, arg1_pstr);
|
||||||
|
|
||||||
@ -371,9 +372,9 @@ JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_registerVideoCallback
|
|||||||
|
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(windows_mutex);
|
std::lock_guard<std::mutex> guard(windows_mutex);
|
||||||
windows.emplace(nativeWindow, av_frame_alloc());
|
windows.emplace(nativeWindow, DRing::FrameBuffer{av_frame_alloc()});
|
||||||
}
|
}
|
||||||
DRing::registerSinkTarget(sink, DRing::SinkTarget {.pull=p_display_cb, .push=f_display_cb});
|
return DRing::registerSinkTarget(sink, DRing::SinkTarget {.pull=p_display_cb, .push=f_display_cb}) ? JNI_TRUE : JNI_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_unregisterVideoCallback(JNIEnv *jenv, jclass jcls, jstring sinkId, jlong window)
|
JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_unregisterVideoCallback(JNIEnv *jenv, jclass jcls, jstring sinkId, jlong window)
|
||||||
@ -400,7 +401,7 @@ JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_unregisterVideoCallba
|
|||||||
%native(acquireNativeWindow) jlong acquireNativeWindow(jobject);
|
%native(acquireNativeWindow) jlong acquireNativeWindow(jobject);
|
||||||
%native(releaseNativeWindow) void releaseNativeWindow(jlong);
|
%native(releaseNativeWindow) void releaseNativeWindow(jlong);
|
||||||
%native(setNativeWindowGeometry) void setNativeWindowGeometry(jlong, int, int);
|
%native(setNativeWindowGeometry) void setNativeWindowGeometry(jlong, int, int);
|
||||||
%native(registerVideoCallback) void registerVideoCallback(jstring, jlong);
|
%native(registerVideoCallback) jboolean registerVideoCallback(jstring, jlong);
|
||||||
%native(unregisterVideoCallback) void unregisterVideoCallback(jstring, jlong);
|
%native(unregisterVideoCallback) void unregisterVideoCallback(jstring, jlong);
|
||||||
|
|
||||||
%native(captureVideoFrame) void captureVideoFrame(jstring, jobject, jint);
|
%native(captureVideoFrame) void captureVideoFrame(jstring, jobject, jint);
|
||||||
@ -419,7 +420,7 @@ void applySettings(const std::string& name, const std::map<std::string, std::str
|
|||||||
void addVideoDevice(const std::string &node);
|
void addVideoDevice(const std::string &node);
|
||||||
void removeVideoDevice(const std::string &node);
|
void removeVideoDevice(const std::string &node);
|
||||||
void setDeviceOrientation(const std::string& name, int angle);
|
void setDeviceOrientation(const std::string& name, int angle);
|
||||||
void registerSinkTarget(const std::string& sinkId, const DRing::SinkTarget& target);
|
bool registerSinkTarget(const std::string& sinkId, const DRing::SinkTarget& target);
|
||||||
std::string startLocalMediaRecorder(const std::string& videoInputId, const std::string& filepath);
|
std::string startLocalMediaRecorder(const std::string& videoInputId, const std::string& filepath);
|
||||||
void stopLocalRecorder(const std::string& filepath);
|
void stopLocalRecorder(const std::string& filepath);
|
||||||
bool getDecodingAccelerated();
|
bool getDecodingAccelerated();
|
||||||
|
@ -522,15 +522,17 @@ stopLocalRecorder(const std::string& filepath)
|
|||||||
jami::LocalRecorderManager::instance().removeRecorderByPath(filepath);
|
jami::LocalRecorderManager::instance().removeRecorderByPath(filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
bool
|
||||||
registerSinkTarget(const std::string& sinkId, SinkTarget target)
|
registerSinkTarget(const std::string& sinkId, SinkTarget target)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_VIDEO
|
#ifdef ENABLE_VIDEO
|
||||||
if (auto sink = jami::Manager::instance().getSinkClient(sinkId))
|
if (auto sink = jami::Manager::instance().getSinkClient(sinkId)) {
|
||||||
sink->registerTarget(std::move(target));
|
sink->registerTarget(std::move(target));
|
||||||
else
|
return true;
|
||||||
|
} else
|
||||||
JAMI_WARN("No sink found for id '%s'", sinkId.c_str());
|
JAMI_WARN("No sink found for id '%s'", sinkId.c_str());
|
||||||
#endif
|
#endif
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_SHM
|
#if HAVE_SHM
|
||||||
|
@ -194,7 +194,7 @@ DRING_PUBLIC bool mutePlayerAudio(const std::string& id, bool mute);
|
|||||||
DRING_PUBLIC bool playerSeekToTime(const std::string& id, int time);
|
DRING_PUBLIC bool playerSeekToTime(const std::string& id, int time);
|
||||||
int64_t getPlayerPosition(const std::string& id);
|
int64_t getPlayerPosition(const std::string& id);
|
||||||
|
|
||||||
DRING_PUBLIC void registerSinkTarget(const std::string& sinkId, SinkTarget target);
|
DRING_PUBLIC bool registerSinkTarget(const std::string& sinkId, SinkTarget target);
|
||||||
#if HAVE_SHM
|
#if HAVE_SHM
|
||||||
DRING_PUBLIC void startShmSink(const std::string& sinkId, bool value);
|
DRING_PUBLIC void startShmSink(const std::string& sinkId, bool value);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user