mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-07 22:02:12 +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 (...) {
|
||||
__android_log_print(ANDROID_LOG_WARN, TAG, "Exception in pull callback");
|
||||
}
|
||||
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) {
|
||||
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
|
||||
return;
|
||||
return JNI_FALSE;
|
||||
}
|
||||
const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(sinkId, 0);
|
||||
if (!arg1_pstr)
|
||||
return;
|
||||
return JNI_FALSE;
|
||||
std::string sink(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);
|
||||
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)
|
||||
@ -400,7 +401,7 @@ JNIEXPORT void JNICALL Java_net_jami_daemon_JamiServiceJNI_unregisterVideoCallba
|
||||
%native(acquireNativeWindow) jlong acquireNativeWindow(jobject);
|
||||
%native(releaseNativeWindow) void releaseNativeWindow(jlong);
|
||||
%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(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 removeVideoDevice(const std::string &node);
|
||||
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);
|
||||
void stopLocalRecorder(const std::string& filepath);
|
||||
bool getDecodingAccelerated();
|
||||
|
@ -522,15 +522,17 @@ stopLocalRecorder(const std::string& filepath)
|
||||
jami::LocalRecorderManager::instance().removeRecorderByPath(filepath);
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
registerSinkTarget(const std::string& sinkId, SinkTarget target)
|
||||
{
|
||||
#ifdef ENABLE_VIDEO
|
||||
if (auto sink = jami::Manager::instance().getSinkClient(sinkId))
|
||||
if (auto sink = jami::Manager::instance().getSinkClient(sinkId)) {
|
||||
sink->registerTarget(std::move(target));
|
||||
else
|
||||
return true;
|
||||
} else
|
||||
JAMI_WARN("No sink found for id '%s'", sinkId.c_str());
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
#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);
|
||||
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
|
||||
DRING_PUBLIC void startShmSink(const std::string& sinkId, bool value);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user