mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-11 18:34:58 +01:00
Fixup OSX execution & packaging.
This commit is contained in:
@@ -414,12 +414,17 @@ IF(APPLE)
|
|||||||
RUNTIME DESTINATION bin COMPONENT Runtime
|
RUNTIME DESTINATION bin COMPONENT Runtime
|
||||||
)
|
)
|
||||||
|
|
||||||
set(plugin_dest_dir vimix.app/Contents/MacOS/)
|
set(plugin_dest_dir vimix.app/Contents/Resources/)
|
||||||
|
install(FILES "/usr/local/Cellar/gstreamer/1.16.2/libexec/gstreamer-1.0/gst-plugin-scanner"
|
||||||
|
DESTINATION "${plugin_dest_dir}"
|
||||||
|
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
|
COMPONENT Runtime
|
||||||
|
)
|
||||||
install(DIRECTORY "${PKG_GSTREAMER_PLUGIN_DIR}" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
install(DIRECTORY "${PKG_GSTREAMER_PLUGIN_DIR}" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
install(DIRECTORY "/usr/local/Cellar/gst-plugins-base/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
install(DIRECTORY "/usr/local/Cellar/gst-plugins-base/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
install(DIRECTORY "/usr/local/Cellar/gst-plugins-good/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
install(DIRECTORY "/usr/local/Cellar/gst-plugins-good/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
install(DIRECTORY "/usr/local/Cellar/gst-plugins-bad/1.16.2_3/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
install(DIRECTORY "/usr/local/Cellar/gst-plugins-bad/1.16.2_3/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
install(DIRECTORY "/usr/local/Cellar/gst-plugins-ugly/1.16.2_1/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
# install(DIRECTORY "/usr/local/Cellar/gst-plugins-ugly/1.16.2_1/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
install(DIRECTORY "/usr/local/Cellar/gst-libav/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
install(DIRECTORY "/usr/local/Cellar/gst-libav/1.16.2/lib/gstreamer-1.0" DESTINATION "${plugin_dest_dir}" COMPONENT Runtime)
|
||||||
|
|
||||||
# package runtime fixup bundle
|
# package runtime fixup bundle
|
||||||
|
|||||||
@@ -161,8 +161,8 @@ void MediaPlayer::execute_open()
|
|||||||
|
|
||||||
// instruct the sink to send samples synched in time
|
// instruct the sink to send samples synched in time
|
||||||
gst_base_sink_set_sync (GST_BASE_SINK(sink), true);
|
gst_base_sink_set_sync (GST_BASE_SINK(sink), true);
|
||||||
gst_base_sink_set_max_lateness (GST_BASE_SINK(sink), 0 );
|
// gst_base_sink_set_max_lateness (GST_BASE_SINK(sink), 0 );
|
||||||
gst_base_sink_set_processing_deadline (GST_BASE_SINK(sink), 0 );
|
// gst_base_sink_set_processing_deadline (GST_BASE_SINK(sink), 0 );
|
||||||
|
|
||||||
// instruct sink to use the required caps
|
// instruct sink to use the required caps
|
||||||
gst_app_sink_set_caps (GST_APP_SINK(sink), caps);
|
gst_app_sink_set_caps (GST_APP_SINK(sink), caps);
|
||||||
@@ -173,9 +173,15 @@ void MediaPlayer::execute_open()
|
|||||||
|
|
||||||
// set the callbacks
|
// set the callbacks
|
||||||
GstAppSinkCallbacks callbacks;
|
GstAppSinkCallbacks callbacks;
|
||||||
callbacks.eos = callback_end_of_stream;
|
|
||||||
callbacks.new_preroll = callback_new_preroll;
|
callbacks.new_preroll = callback_new_preroll;
|
||||||
|
if (isimage_) {
|
||||||
|
callbacks.eos = NULL;
|
||||||
|
callbacks.new_sample = NULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
callbacks.eos = callback_end_of_stream;
|
||||||
callbacks.new_sample = callback_new_sample;
|
callbacks.new_sample = callback_new_sample;
|
||||||
|
}
|
||||||
gst_app_sink_set_callbacks (GST_APP_SINK(sink), &callbacks, this, NULL);
|
gst_app_sink_set_callbacks (GST_APP_SINK(sink), &callbacks, this, NULL);
|
||||||
gst_app_sink_set_emit_signals (GST_APP_SINK(sink), false);
|
gst_app_sink_set_emit_signals (GST_APP_SINK(sink), false);
|
||||||
|
|
||||||
@@ -614,7 +620,8 @@ void MediaPlayer::update()
|
|||||||
discoverer_ = nullptr;
|
discoverer_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!enabled_)
|
// prevent unnecessary updates
|
||||||
|
if (!enabled_ || (isimage_ && textureindex_>0 ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// local variables before trying to update
|
// local variables before trying to update
|
||||||
@@ -633,10 +640,12 @@ void MediaPlayer::update()
|
|||||||
}
|
}
|
||||||
index_lock_.unlock();
|
index_lock_.unlock();
|
||||||
|
|
||||||
// lock frame while reading it
|
// // lock frame while reading it
|
||||||
if (!frame_[read_index].access.try_lock())
|
// if (!frame_[read_index].access.try_lock())
|
||||||
// do not block rendering if everything is too busy
|
// // do not block rendering if everything is too busy
|
||||||
return;
|
// return;
|
||||||
|
|
||||||
|
frame_[read_index].access.lock();
|
||||||
|
|
||||||
// do not fill a frame twice
|
// do not fill a frame twice
|
||||||
if (frame_[read_index].status != EMPTY ) {
|
if (frame_[read_index].status != EMPTY ) {
|
||||||
|
|||||||
@@ -146,30 +146,33 @@ bool Rendering::init()
|
|||||||
//
|
//
|
||||||
// Gstreamer setup
|
// Gstreamer setup
|
||||||
//
|
//
|
||||||
std::string plugins_path = SystemToolkit::path_filename(Settings::application.executable);
|
std::string plugins_path = SystemToolkit::cwd_path() + "gstreamer-1.0";
|
||||||
plugins_path += "gstreamer-1.0";
|
std::string plugins_scanner = SystemToolkit::cwd_path() + "gst-plugin-scanner" ;
|
||||||
if ( SystemToolkit::file_exists(plugins_path)) {
|
if ( SystemToolkit::file_exists(plugins_path)) {
|
||||||
Log::Info("Found Gstreamer plugins in %s", plugins_path.c_str());
|
Log::Info("Found Gstreamer plugins in %s", plugins_path.c_str());
|
||||||
g_setenv ("GST_PLUGIN_SYSTEM_PATH", plugins_path.c_str(), TRUE);
|
g_setenv ("GST_PLUGIN_SYSTEM_PATH", plugins_path.c_str(), TRUE);
|
||||||
|
g_setenv ("GST_PLUGIN_SCANNER", plugins_scanner.c_str(), TRUE);
|
||||||
}
|
}
|
||||||
g_setenv ("GST_GL_API", "opengl3", TRUE);
|
g_setenv ("GST_GL_API", "opengl3", TRUE);
|
||||||
gst_init (NULL, NULL);
|
gst_init (NULL, NULL);
|
||||||
#if GST_GL_HAVE_PLATFORM_WGL
|
|
||||||
global_gl_context = gst_gl_context_new_wrapped (display, (guintptr) wglGetCurrentContext (),
|
|
||||||
GST_GL_PLATFORM_WGL, GST_GL_API_OPENGL);
|
|
||||||
#elif GST_GL_HAVE_PLATFORM_CGL
|
|
||||||
// global_display = GST_GL_DISPLAY ( glfwGetCocoaMonitor(main_.window()) );
|
|
||||||
global_display = GST_GL_DISPLAY (gst_gl_display_cocoa_new ());
|
|
||||||
|
|
||||||
global_gl_context = gst_gl_context_new_wrapped (global_display,
|
|
||||||
(guintptr) 0,
|
//#if GST_GL_HAVE_PLATFORM_WGL
|
||||||
GST_GL_PLATFORM_CGL, GST_GL_API_OPENGL);
|
// global_gl_context = gst_gl_context_new_wrapped (display, (guintptr) wglGetCurrentContext (),
|
||||||
#elif GST_GL_HAVE_PLATFORM_GLX
|
// GST_GL_PLATFORM_WGL, GST_GL_API_OPENGL);
|
||||||
global_display = (GstGLDisplay*) gst_gl_display_x11_new_with_display( glfwGetX11Display() );
|
//#elif GST_GL_HAVE_PLATFORM_CGL
|
||||||
global_gl_context = gst_gl_context_new_wrapped (global_display,
|
//// global_display = GST_GL_DISPLAY ( glfwGetCocoaMonitor(main_.window()) );
|
||||||
(guintptr) glfwGetGLXContext(main_.window()),
|
// global_display = GST_GL_DISPLAY (gst_gl_display_cocoa_new ());
|
||||||
GST_GL_PLATFORM_GLX, GST_GL_API_OPENGL);
|
|
||||||
#endif
|
// global_gl_context = gst_gl_context_new_wrapped (global_display,
|
||||||
|
// (guintptr) 0,
|
||||||
|
// GST_GL_PLATFORM_CGL, GST_GL_API_OPENGL);
|
||||||
|
//#elif GST_GL_HAVE_PLATFORM_GLX
|
||||||
|
// global_display = (GstGLDisplay*) gst_gl_display_x11_new_with_display( glfwGetX11Display() );
|
||||||
|
// global_gl_context = gst_gl_context_new_wrapped (global_display,
|
||||||
|
// (guintptr) glfwGetGLXContext(main_.window()),
|
||||||
|
// GST_GL_PLATFORM_GLX, GST_GL_API_OPENGL);
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -178,6 +178,17 @@ std::string SystemToolkit::home_path()
|
|||||||
return string(mHomePath) + PATH_SEP;
|
return string(mHomePath) + PATH_SEP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string SystemToolkit::cwd_path()
|
||||||
|
{
|
||||||
|
char mCwdPath[PATH_MAX];
|
||||||
|
|
||||||
|
if (getcwd(mCwdPath, sizeof(mCwdPath)) != NULL)
|
||||||
|
return string(mCwdPath) + PATH_SEP;
|
||||||
|
else
|
||||||
|
return string();
|
||||||
|
}
|
||||||
|
|
||||||
std::string SystemToolkit::username()
|
std::string SystemToolkit::username()
|
||||||
{
|
{
|
||||||
// 1. find home
|
// 1. find home
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ namespace SystemToolkit
|
|||||||
// get the OS dependent home path
|
// get the OS dependent home path
|
||||||
std::string home_path();
|
std::string home_path();
|
||||||
|
|
||||||
|
// get the OS dependent location
|
||||||
|
std::string cwd_path();
|
||||||
|
|
||||||
// get the OS dependent path where to store settings
|
// get the OS dependent path where to store settings
|
||||||
std::string settings_path();
|
std::string settings_path();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user