diff options
Diffstat (limited to 'indra/media_plugins/libvlc')
| -rw-r--r-- | indra/media_plugins/libvlc/CMakeLists.txt | 51 | ||||
| -rw-r--r-- | indra/media_plugins/libvlc/media_plugin_libvlc.cpp | 21 | 
2 files changed, 65 insertions, 7 deletions
| diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 202cbed96e..fe0ad79bd3 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -13,13 +13,6 @@ include(LibVLCPlugin)  ### media_plugin_libvlc -if(NOT ADDRESS_SIZE EQUAL 32) -  if(WINDOWS) -    ##add_definitions(/FIXED:NO) -  else(WINDOWS) # not windows therefore gcc LINUX and DARWIN -    add_definitions(-fPIC) -  endif(WINDOWS) -endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_libvlc_SOURCE_FILES      media_plugin_libvlc.cpp @@ -54,4 +47,48 @@ if (DARWIN)      LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"    ) +  add_custom_command(TARGET ${PROJECT_NAME} +    POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} +        -change "/opt/local/lib/libopenjp2.7.dylib" "@loader_path/../../Frameworks/libopenjp2.7.dylib" +        -change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib" +        -change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib" +        -change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib" +        -change "/opt/local/lib/libaprutil-1.0.dylib" "@loader_path/../../Frameworks/libaprutil-1.0.dylib" +        -change "/opt/local/lib/libiconv.2.dylib" "@loader_path/../../Frameworks/libiconv.2.dylib" +        -change "/opt/local/lib/libapr-1.0.dylib" "@loader_path/../../Frameworks/libapr-1.0.dylib" +        -change "/opt/local/lib/libexpat.1.dylib" "@loader_path/../../Frameworks/libexpat.1.dylib" +        -change "/opt/local/lib/libz.1.dylib" "@loader_path/../../Frameworks/libz.1.dylib" +        -change "/opt/local/lib/libnghttp2.14.dylib" "@loader_path/../../Frameworks/libnghttp2.14.dylib" +        -change "@rpath/libvlc.dylib" "@loader_path/plugins/libvlc.dylib" +        -change "@rpath/libvlccore.dylib" "@loader_path/plugins/libvlccore.dylib" +        "$<TARGET_FILE:media_plugin_libvlc>" +    VERBATIM +    COMMENT "Fixing paths to LibVLC media plugin dependencies" +  ) +  endif (DARWIN) + +if (INSTALL) +    if (DARWIN) +        set(_LIB llplugin) +        install( +            DIRECTORY /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/plugins +            DESTINATION ${_LIB} +            ) +        install( +            FILES +                /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlc.5.dylib +                /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlc.dylib +                /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib +                /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.dylib +            DESTINATION ${_LIB}/plugins +            ) +    elseif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) +        set(_LIB lib/${ARCH}-linux-gnu) +    elseif (EXISTS /lib64) +        set(_LIB lib64) +    else (DARWIN) +        set(_LIB lib) +    endif (DARWIN) +    install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) +endif (INSTALL) diff --git a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp index 4240613a0c..e79d474325 100644 --- a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp +++ b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp @@ -294,6 +294,22 @@ void MediaPluginLibVLC::eventCallbacks(const libvlc_event_t* event, void* ptr)          }      }      break; +    case libvlc_MediaMetaChanged: +        auto title = libvlc_media_get_meta(parent->mLibVLCMedia, libvlc_meta_Title); +        if (title) +        { +            LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "title_text"); +            message.setValue("title", title); +            parent->sendMessage(message); +        } +        auto now_playing = libvlc_media_get_meta(parent->mLibVLCMedia, libvlc_meta_NowPlaying); +        if (now_playing) +        { +            LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "nowplaying_text"); +            message.setValue("nowplaying", now_playing); +            parent->sendMessage(message); +        } +        break;      }  } @@ -348,6 +364,11 @@ void MediaPluginLibVLC::playMedia()          libvlc_event_attach(em, libvlc_MediaPlayerLengthChanged, eventCallbacks, this);          libvlc_event_attach(em, libvlc_MediaPlayerTitleChanged, eventCallbacks, this);      } +    auto event_manager = libvlc_media_event_manager(mLibVLCMedia); +    if (event_manager) +    { +        libvlc_event_attach(event_manager, libvlc_MediaMetaChanged, eventCallbacks, this); +    }      libvlc_video_set_callbacks(mLibVLCMediaPlayer, lock, unlock, display, &mLibVLCCallbackContext);      libvlc_video_set_format(mLibVLCMediaPlayer, "RV32", mWidth, mHeight, mWidth * mDepth); | 
