initial upload to git
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
project(vlc-video-extended)
|
||||
|
||||
if(DISABLE_VLC_EXTENDED)
|
||||
message(STATUS "VLC video extended plugin disabled")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(ENABLE_VLC_EXTENDED)
|
||||
find_package(LibVLC REQUIRED)
|
||||
else()
|
||||
find_package(LibVLC)
|
||||
if(NOT LibVLC_FOUND)
|
||||
message(STATUS "VLC video extended plugin disabled")
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include_directories(${LIBVLC_INCLUDE_DIRS})
|
||||
add_definitions(${LIBVLC_DEFINITIONS})
|
||||
|
||||
if(MSVC)
|
||||
set(vlc-video_PLATFORM_DEPS
|
||||
w32-pthreads)
|
||||
endif()
|
||||
|
||||
set(vlc-video-extended_HEADERS
|
||||
vlc-video-extended-plugin.h
|
||||
)
|
||||
|
||||
set(vlc-video-extended_SOURCES
|
||||
vlc-video-extended-plugin.c
|
||||
vlc-video-extended-source.c
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set(MODULE_DESCRIPTION "OBS VLC module")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in vlc-video.rc)
|
||||
list(APPEND vlc-video_SOURCES
|
||||
vlc-video.rc)
|
||||
endif()
|
||||
|
||||
add_library(vlc-video-extended MODULE
|
||||
${vlc-video-extended_SOURCES}
|
||||
${vlc-video-extended_HEADERS})
|
||||
# instead of linking vlc we load at runtime.
|
||||
target_link_libraries(vlc-video-extended
|
||||
libobs
|
||||
${vlc-video_PLATFORM_DEPS})
|
||||
set_target_properties(vlc-video-extended PROPERTIES FOLDER "plugins")
|
||||
|
||||
install_obs_plugin_with_data(vlc-video-extended data)
|
||||
@@ -0,0 +1,242 @@
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include <util/platform.h>
|
||||
#include "vlc-video-extended-plugin.h"
|
||||
|
||||
OBS_DECLARE_MODULE()
|
||||
OBS_MODULE_USE_DEFAULT_LOCALE("vlc-video-extended", "en-US")
|
||||
MODULE_EXPORT const char *obs_module_description(void)
|
||||
{
|
||||
return "VLC playlist source extended";
|
||||
}
|
||||
|
||||
/* libvlc core */
|
||||
LIBVLC_NEW libvlc_new_;
|
||||
LIBVLC_RELEASE libvlc_release_;
|
||||
LIBVLC_CLOCK libvlc_clock_;
|
||||
LIBVLC_EVENT_ATTACH libvlc_event_attach_;
|
||||
|
||||
/* libvlc media */
|
||||
LIBVLC_MEDIA_NEW_PATH libvlc_media_new_path_;
|
||||
LIBVLC_MEDIA_NEW_LOCATION libvlc_media_new_location_;
|
||||
LIBVLC_MEDIA_ADD_OPTION libvlc_media_add_option_;
|
||||
LIBVLC_MEDIA_RELEASE libvlc_media_release_;
|
||||
LIBVLC_MEDIA_RELEASE libvlc_media_retain_;
|
||||
LIBVLC_MEDIA_GET_META libvlc_media_get_meta_;
|
||||
|
||||
/* libvlc media player */
|
||||
LIBVLC_MEDIA_PLAYER_NEW libvlc_media_player_new_;
|
||||
LIBVLC_MEDIA_PLAYER_NEW_FROM_MEDIA libvlc_media_player_new_from_media_;
|
||||
LIBVLC_MEDIA_PLAYER_RELEASE libvlc_media_player_release_;
|
||||
LIBVLC_VIDEO_SET_CALLBACKS libvlc_video_set_callbacks_;
|
||||
LIBVLC_VIDEO_SET_FORMAT_CALLBACKS libvlc_video_set_format_callbacks_;
|
||||
LIBVLC_AUDIO_SET_CALLBACKS libvlc_audio_set_callbacks_;
|
||||
LIBVLC_AUDIO_SET_FORMAT_CALLBACKS libvlc_audio_set_format_callbacks_;
|
||||
LIBVLC_MEDIA_PLAYER_PLAY libvlc_media_player_play_;
|
||||
LIBVLC_MEDIA_PLAYER_STOP libvlc_media_player_stop_;
|
||||
LIBVLC_MEDIA_PLAYER_GET_TIME libvlc_media_player_get_time_;
|
||||
LIBVLC_MEDIA_PLAYER_SET_TIME libvlc_media_player_set_time_;
|
||||
LIBVLC_VIDEO_GET_SIZE libvlc_video_get_size_;
|
||||
LIBVLC_MEDIA_PLAYER_EVENT_MANAGER libvlc_media_player_event_manager_;
|
||||
LIBVLC_MEDIA_PLAYER_GET_STATE libvlc_media_player_get_state_;
|
||||
LIBVLC_MEDIA_PLAYER_GET_LENGTH libvlc_media_player_get_length_;
|
||||
LIBVLC_MEDIA_PLAYER_GET_MEDIA libvlc_media_player_get_media_;
|
||||
|
||||
/* libvlc media list */
|
||||
LIBVLC_MEDIA_LIST_NEW libvlc_media_list_new_;
|
||||
LIBVLC_MEDIA_LIST_RELEASE libvlc_media_list_release_;
|
||||
LIBVLC_MEDIA_LIST_ADD_MEDIA libvlc_media_list_add_media_;
|
||||
LIBVLC_MEDIA_LIST_LOCK libvlc_media_list_lock_;
|
||||
LIBVLC_MEDIA_LIST_UNLOCK libvlc_media_list_unlock_;
|
||||
LIBVLC_MEDIA_LIST_EVENT_MANAGER libvlc_media_list_event_manager_;
|
||||
|
||||
/* libvlc media list player */
|
||||
LIBVLC_MEDIA_LIST_PLAYER_NEW libvlc_media_list_player_new_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_RELEASE libvlc_media_list_player_release_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_PLAY libvlc_media_list_player_play_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_PAUSE libvlc_media_list_player_pause_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_SET_PAUSE libvlc_media_list_player_set_pause_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_STOP libvlc_media_list_player_stop_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_PLAYER
|
||||
libvlc_media_list_player_set_media_player_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_LIST libvlc_media_list_player_set_media_list_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_EVENT_MANAGER libvlc_media_list_player_event_manager_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_SET_PLAYBACK_MODE
|
||||
libvlc_media_list_player_set_playback_mode_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_NEXT libvlc_media_list_player_next_;
|
||||
LIBVLC_MEDIA_LIST_PLAYER_PREVIOUS libvlc_media_list_player_previous_;
|
||||
|
||||
void *libvlc_module = NULL;
|
||||
#ifdef __APPLE__
|
||||
void *libvlc_core_module = NULL;
|
||||
#endif
|
||||
|
||||
libvlc_instance_t *libvlc = NULL;
|
||||
uint64_t time_start = 0;
|
||||
|
||||
static bool load_vlc_funcs(void)
|
||||
{
|
||||
#define LOAD_VLC_FUNC(func) \
|
||||
do { \
|
||||
func##_ = os_dlsym(libvlc_module, #func); \
|
||||
if (!func##_) { \
|
||||
blog(LOG_WARNING, \
|
||||
"Could not func VLC function %s, " \
|
||||
"VLC loading failed", \
|
||||
#func); \
|
||||
return false; \
|
||||
} \
|
||||
} while (false)
|
||||
|
||||
/* libvlc core */
|
||||
LOAD_VLC_FUNC(libvlc_new);
|
||||
LOAD_VLC_FUNC(libvlc_release);
|
||||
LOAD_VLC_FUNC(libvlc_clock);
|
||||
LOAD_VLC_FUNC(libvlc_event_attach);
|
||||
|
||||
/* libvlc media */
|
||||
LOAD_VLC_FUNC(libvlc_media_new_path);
|
||||
LOAD_VLC_FUNC(libvlc_media_new_location);
|
||||
LOAD_VLC_FUNC(libvlc_media_add_option);
|
||||
LOAD_VLC_FUNC(libvlc_media_release);
|
||||
LOAD_VLC_FUNC(libvlc_media_retain);
|
||||
LOAD_VLC_FUNC(libvlc_media_get_meta);
|
||||
|
||||
/* libvlc media player */
|
||||
LOAD_VLC_FUNC(libvlc_media_player_new);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_new_from_media);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_release);
|
||||
LOAD_VLC_FUNC(libvlc_video_set_callbacks);
|
||||
LOAD_VLC_FUNC(libvlc_video_set_format_callbacks);
|
||||
LOAD_VLC_FUNC(libvlc_audio_set_callbacks);
|
||||
LOAD_VLC_FUNC(libvlc_audio_set_format_callbacks);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_play);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_stop);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_get_time);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_set_time);
|
||||
LOAD_VLC_FUNC(libvlc_video_get_size);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_event_manager);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_get_state);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_get_length);
|
||||
LOAD_VLC_FUNC(libvlc_media_player_get_media);
|
||||
|
||||
/* libvlc media list */
|
||||
LOAD_VLC_FUNC(libvlc_media_list_new);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_release);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_add_media);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_lock);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_unlock);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_event_manager);
|
||||
|
||||
/* libvlc media list player */
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_new);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_release);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_play);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_pause);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_set_pause);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_stop);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_set_media_player);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_set_media_list);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_event_manager);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_set_playback_mode);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_next);
|
||||
LOAD_VLC_FUNC(libvlc_media_list_player_previous);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool load_libvlc_module(void)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
char *path_utf8 = NULL;
|
||||
wchar_t path[1024];
|
||||
LSTATUS status;
|
||||
DWORD size;
|
||||
HKEY key;
|
||||
|
||||
memset(path, 0, 1024 * sizeof(wchar_t));
|
||||
|
||||
status = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\VideoLAN\\VLC",
|
||||
&key);
|
||||
if (status != ERROR_SUCCESS)
|
||||
return false;
|
||||
|
||||
size = 1024;
|
||||
status = RegQueryValueExW(key, L"InstallDir", NULL, NULL, (LPBYTE)path,
|
||||
&size);
|
||||
if (status == ERROR_SUCCESS) {
|
||||
wcscat(path, L"\\libvlc.dll");
|
||||
os_wcs_to_utf8_ptr(path, 0, &path_utf8);
|
||||
libvlc_module = os_dlopen(path_utf8);
|
||||
bfree(path_utf8);
|
||||
}
|
||||
|
||||
RegCloseKey(key);
|
||||
#else
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define LIBVLC_DIR "/Applications/VLC.app/Contents/MacOS/"
|
||||
/* According to otoolo -L, this is what libvlc.dylib wants. */
|
||||
#define LIBVLC_CORE_FILE LIBVLC_DIR "lib/libvlccore.dylib"
|
||||
#define LIBVLC_FILE LIBVLC_DIR "lib/libvlc.5.dylib"
|
||||
setenv("VLC_PLUGIN_PATH", LIBVLC_DIR "plugins", false);
|
||||
libvlc_core_module = os_dlopen(LIBVLC_CORE_FILE);
|
||||
|
||||
if (!libvlc_core_module)
|
||||
return false;
|
||||
#else
|
||||
#define LIBVLC_FILE "libvlc.so.5"
|
||||
#endif
|
||||
libvlc_module = os_dlopen(LIBVLC_FILE);
|
||||
|
||||
#endif
|
||||
|
||||
return libvlc_module != NULL;
|
||||
}
|
||||
|
||||
extern struct obs_source_info vlc_source_info;
|
||||
|
||||
bool load_libvlc(void)
|
||||
{
|
||||
if (libvlc)
|
||||
return true;
|
||||
|
||||
libvlc = libvlc_new_(0, 0);
|
||||
if (!libvlc) {
|
||||
blog(LOG_INFO, "Couldn't create libvlc instance");
|
||||
return false;
|
||||
}
|
||||
|
||||
time_start = (uint64_t)libvlc_clock_() * 1000ULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool obs_module_load(void)
|
||||
{
|
||||
if (!load_libvlc_module()) {
|
||||
blog(LOG_INFO, "Couldn't find VLC installation, VLC video "
|
||||
"source disabled");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!load_vlc_funcs())
|
||||
return true;
|
||||
|
||||
blog(LOG_INFO, "VLC found, VLC video source enabled");
|
||||
|
||||
obs_register_source(&vlc_source_info);
|
||||
return true;
|
||||
}
|
||||
|
||||
void obs_module_unload(void)
|
||||
{
|
||||
if (libvlc)
|
||||
libvlc_release_(libvlc);
|
||||
#ifdef __APPLE__
|
||||
if (libvlc_core_module)
|
||||
os_dlclose(libvlc_core_module);
|
||||
#endif
|
||||
if (libvlc_module)
|
||||
os_dlclose(libvlc_module);
|
||||
}
|
||||
@@ -0,0 +1,246 @@
|
||||
#include <obs-module.h>
|
||||
#include <libvlc.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <basetsd.h>
|
||||
typedef SSIZE_T ssize_t;
|
||||
#endif
|
||||
|
||||
#include <libvlc_media.h>
|
||||
#include <libvlc_events.h>
|
||||
#include <libvlc_media_list.h>
|
||||
#include <libvlc_media_player.h>
|
||||
#include <libvlc_media_list_player.h>
|
||||
|
||||
extern libvlc_instance_t *libvlc;
|
||||
extern uint64_t time_start;
|
||||
|
||||
extern bool load_libvlc(void);
|
||||
|
||||
/* libvlc core */
|
||||
typedef libvlc_instance_t *(*LIBVLC_NEW)(int argc, const char *const *argv);
|
||||
typedef void (*LIBVLC_RELEASE)(libvlc_instance_t *p_instance);
|
||||
typedef int64_t (*LIBVLC_CLOCK)(void);
|
||||
typedef int (*LIBVLC_EVENT_ATTACH)(libvlc_event_manager_t *p_event_manager,
|
||||
libvlc_event_type_t i_event_type,
|
||||
libvlc_callback_t f_callback,
|
||||
void *user_data);
|
||||
|
||||
/* libvlc media */
|
||||
typedef libvlc_media_t *(*LIBVLC_MEDIA_NEW_PATH)(libvlc_instance_t *p_instance,
|
||||
const char *path);
|
||||
typedef libvlc_media_t *(*LIBVLC_MEDIA_NEW_LOCATION)(
|
||||
libvlc_instance_t *p_instance, const char *location);
|
||||
typedef void (*LIBVLC_MEDIA_ADD_OPTION)(libvlc_media_t *p_md,
|
||||
const char *options);
|
||||
typedef void (*LIBVLC_MEDIA_RETAIN)(libvlc_media_t *p_md);
|
||||
typedef void (*LIBVLC_MEDIA_RELEASE)(libvlc_media_t *p_md);
|
||||
typedef char *(*LIBVLC_MEDIA_GET_META)(libvlc_media_t *p_md,
|
||||
libvlc_meta_t e_meta);
|
||||
|
||||
/* libvlc media player */
|
||||
typedef libvlc_media_player_t *(*LIBVLC_MEDIA_PLAYER_NEW)(
|
||||
libvlc_instance_t *p_libvlc);
|
||||
typedef libvlc_media_player_t *(*LIBVLC_MEDIA_PLAYER_NEW_FROM_MEDIA)(
|
||||
libvlc_media_t *p_md);
|
||||
typedef void (*LIBVLC_MEDIA_PLAYER_RELEASE)(libvlc_media_player_t *p_mi);
|
||||
typedef void (*LIBVLC_VIDEO_SET_CALLBACKS)(libvlc_media_player_t *mp,
|
||||
libvlc_video_lock_cb lock,
|
||||
libvlc_video_unlock_cb unlock,
|
||||
libvlc_video_display_cb display,
|
||||
void *opaque);
|
||||
typedef void (*LIBVLC_VIDEO_SET_FORMAT_CALLBACKS)(
|
||||
libvlc_media_player_t *mp, libvlc_video_format_cb setup,
|
||||
libvlc_video_cleanup_cb cleanup);
|
||||
typedef void (*LIBVLC_AUDIO_SET_CALLBACKS)(
|
||||
libvlc_media_player_t *mp, libvlc_audio_play_cb play,
|
||||
libvlc_audio_pause_cb pause, libvlc_audio_resume_cb resume,
|
||||
libvlc_audio_flush_cb flush, libvlc_audio_drain_cb drain, void *opaque);
|
||||
typedef void (*LIBVLC_AUDIO_SET_FORMAT_CALLBACKS)(
|
||||
libvlc_media_player_t *mp, libvlc_audio_setup_cb setup,
|
||||
libvlc_audio_cleanup_cb cleanup);
|
||||
typedef int (*LIBVLC_MEDIA_PLAYER_PLAY)(libvlc_media_player_t *p_mi);
|
||||
typedef void (*LIBVLC_MEDIA_PLAYER_STOP)(libvlc_media_player_t *p_mi);
|
||||
typedef libvlc_time_t (*LIBVLC_MEDIA_PLAYER_GET_TIME)(
|
||||
libvlc_media_player_t *p_mi);
|
||||
typedef void (*LIBVLC_MEDIA_PLAYER_SET_TIME)(libvlc_media_player_t *p_mi,
|
||||
libvlc_time_t i_time);
|
||||
typedef int (*LIBVLC_VIDEO_GET_SIZE)(libvlc_media_player_t *p_mi, unsigned num,
|
||||
unsigned *px, unsigned *py);
|
||||
typedef libvlc_event_manager_t *(*LIBVLC_MEDIA_PLAYER_EVENT_MANAGER)(
|
||||
libvlc_media_player_t *p_mp);
|
||||
typedef libvlc_state_t (*LIBVLC_MEDIA_PLAYER_GET_STATE)(
|
||||
libvlc_media_player_t *p_mi);
|
||||
typedef libvlc_time_t (*LIBVLC_MEDIA_PLAYER_GET_LENGTH)(
|
||||
libvlc_media_player_t *p_mi);
|
||||
typedef libvlc_media_t *(*LIBVLC_MEDIA_PLAYER_GET_MEDIA)(
|
||||
libvlc_media_player_t *p_mi);
|
||||
|
||||
/* libvlc media list */
|
||||
typedef libvlc_media_list_t *(*LIBVLC_MEDIA_LIST_NEW)(
|
||||
libvlc_instance_t *p_instance);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_RELEASE)(libvlc_media_list_t *p_ml);
|
||||
typedef int (*LIBVLC_MEDIA_LIST_ADD_MEDIA)(libvlc_media_list_t *p_ml,
|
||||
libvlc_media_t *p_md);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_LOCK)(libvlc_media_list_t *p_ml);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_UNLOCK)(libvlc_media_list_t *p_ml);
|
||||
typedef libvlc_event_manager_t *(*LIBVLC_MEDIA_LIST_EVENT_MANAGER)(
|
||||
libvlc_media_list_t *p_ml);
|
||||
|
||||
/* libvlc media list player */
|
||||
typedef libvlc_media_list_player_t *(*LIBVLC_MEDIA_LIST_PLAYER_NEW)(
|
||||
libvlc_instance_t *p_instance);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_RELEASE)(
|
||||
libvlc_media_list_player_t *p_mlp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_PLAY)(libvlc_media_list_player_t *p_mlp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_PAUSE)(
|
||||
libvlc_media_list_player_t *p_mlp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_SET_PAUSE)(
|
||||
libvlc_media_list_player_t *p_mlp, int do_pause);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_STOP)(libvlc_media_list_player_t *p_mlp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_PLAYER)(
|
||||
libvlc_media_list_player_t *p_mlp, libvlc_media_player_t *p_mp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_LIST)(
|
||||
libvlc_media_list_player_t *p_mlp, libvlc_media_list_t *p_mlist);
|
||||
typedef libvlc_event_manager_t *(*LIBVLC_MEDIA_LIST_PLAYER_EVENT_MANAGER)(
|
||||
libvlc_media_list_player_t *p_mlp);
|
||||
typedef void (*LIBVLC_MEDIA_LIST_PLAYER_SET_PLAYBACK_MODE)(
|
||||
libvlc_media_list_player_t *p_mlp, libvlc_playback_mode_t e_mode);
|
||||
typedef int (*LIBVLC_MEDIA_LIST_PLAYER_NEXT)(libvlc_media_list_player_t *p_mlp);
|
||||
typedef int (*LIBVLC_MEDIA_LIST_PLAYER_PREVIOUS)(
|
||||
libvlc_media_list_player_t *p_mlp);
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
/* libvlc core */
|
||||
extern LIBVLC_NEW libvlc_new_;
|
||||
extern LIBVLC_RELEASE libvlc_release_;
|
||||
extern LIBVLC_CLOCK libvlc_clock_;
|
||||
extern LIBVLC_EVENT_ATTACH libvlc_event_attach_;
|
||||
|
||||
/* libvlc media */
|
||||
extern LIBVLC_MEDIA_NEW_PATH libvlc_media_new_path_;
|
||||
extern LIBVLC_MEDIA_NEW_LOCATION libvlc_media_new_location_;
|
||||
extern LIBVLC_MEDIA_ADD_OPTION libvlc_media_add_option_;
|
||||
extern LIBVLC_MEDIA_RELEASE libvlc_media_release_;
|
||||
extern LIBVLC_MEDIA_RETAIN libvlc_media_retain_;
|
||||
extern LIBVLC_MEDIA_GET_META libvlc_media_get_meta_;
|
||||
|
||||
/* libvlc media player */
|
||||
extern LIBVLC_MEDIA_PLAYER_NEW libvlc_media_player_new_;
|
||||
extern LIBVLC_MEDIA_PLAYER_NEW_FROM_MEDIA libvlc_media_player_new_from_media_;
|
||||
extern LIBVLC_MEDIA_PLAYER_RELEASE libvlc_media_player_release_;
|
||||
extern LIBVLC_VIDEO_SET_CALLBACKS libvlc_video_set_callbacks_;
|
||||
extern LIBVLC_VIDEO_SET_FORMAT_CALLBACKS libvlc_video_set_format_callbacks_;
|
||||
extern LIBVLC_AUDIO_SET_CALLBACKS libvlc_audio_set_callbacks_;
|
||||
extern LIBVLC_AUDIO_SET_FORMAT_CALLBACKS libvlc_audio_set_format_callbacks_;
|
||||
extern LIBVLC_MEDIA_PLAYER_PLAY libvlc_media_player_play_;
|
||||
extern LIBVLC_MEDIA_PLAYER_STOP libvlc_media_player_stop_;
|
||||
extern LIBVLC_MEDIA_PLAYER_GET_TIME libvlc_media_player_get_time_;
|
||||
extern LIBVLC_MEDIA_PLAYER_SET_TIME libvlc_media_player_set_time_;
|
||||
extern LIBVLC_VIDEO_GET_SIZE libvlc_video_get_size_;
|
||||
extern LIBVLC_MEDIA_PLAYER_EVENT_MANAGER libvlc_media_player_event_manager_;
|
||||
extern LIBVLC_MEDIA_PLAYER_GET_STATE libvlc_media_player_get_state_;
|
||||
extern LIBVLC_MEDIA_PLAYER_GET_LENGTH libvlc_media_player_get_length_;
|
||||
extern LIBVLC_MEDIA_PLAYER_GET_MEDIA libvlc_media_player_get_media_;
|
||||
|
||||
/* libvlc media list */
|
||||
extern LIBVLC_MEDIA_LIST_NEW libvlc_media_list_new_;
|
||||
extern LIBVLC_MEDIA_LIST_RELEASE libvlc_media_list_release_;
|
||||
extern LIBVLC_MEDIA_LIST_ADD_MEDIA libvlc_media_list_add_media_;
|
||||
extern LIBVLC_MEDIA_LIST_LOCK libvlc_media_list_lock_;
|
||||
extern LIBVLC_MEDIA_LIST_UNLOCK libvlc_media_list_unlock_;
|
||||
extern LIBVLC_MEDIA_LIST_EVENT_MANAGER libvlc_media_list_event_manager_;
|
||||
|
||||
/* libvlc media list player */
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_NEW libvlc_media_list_player_new_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_RELEASE libvlc_media_list_player_release_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_PLAY libvlc_media_list_player_play_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_PAUSE libvlc_media_list_player_pause_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_SET_PAUSE libvlc_media_list_player_set_pause_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_STOP libvlc_media_list_player_stop_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_PLAYER
|
||||
libvlc_media_list_player_set_media_player_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_SET_MEDIA_LIST
|
||||
libvlc_media_list_player_set_media_list_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_EVENT_MANAGER
|
||||
libvlc_media_list_player_event_manager_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_SET_PLAYBACK_MODE
|
||||
libvlc_media_list_player_set_playback_mode_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_NEXT libvlc_media_list_player_next_;
|
||||
extern LIBVLC_MEDIA_LIST_PLAYER_PREVIOUS libvlc_media_list_player_previous_;
|
||||
|
||||
#define EXTENSIONS_AUDIO \
|
||||
"*.3ga;" \
|
||||
"*.669;" \
|
||||
"*.a52;" \
|
||||
"*.aac;" \
|
||||
"*.ac3;" \
|
||||
"*.adt;" \
|
||||
"*.adts;" \
|
||||
"*.aif;" \
|
||||
"*.aifc;" \
|
||||
"*.aiff;" \
|
||||
"*.amb;" \
|
||||
"*.amr;" \
|
||||
"*.aob;" \
|
||||
"*.ape;" \
|
||||
"*.au;" \
|
||||
"*.awb;" \
|
||||
"*.caf;" \
|
||||
"*.dts;" \
|
||||
"*.flac;" \
|
||||
"*.it;" \
|
||||
"*.kar;" \
|
||||
"*.m4a;" \
|
||||
"*.m4b;" \
|
||||
"*.m4p;" \
|
||||
"*.m5p;" \
|
||||
"*.mid;" \
|
||||
"*.mka;" \
|
||||
"*.mlp;" \
|
||||
"*.mod;" \
|
||||
"*.mpa;" \
|
||||
"*.mp1;" \
|
||||
"*.mp2;" \
|
||||
"*.mp3;" \
|
||||
"*.mpc;" \
|
||||
"*.mpga;" \
|
||||
"*.mus;" \
|
||||
"*.oga;" \
|
||||
"*.ogg;" \
|
||||
"*.oma;" \
|
||||
"*.opus;" \
|
||||
"*.qcp;" \
|
||||
"*.ra;" \
|
||||
"*.rmi;" \
|
||||
"*.s3m;" \
|
||||
"*.sid;" \
|
||||
"*.spx;" \
|
||||
"*.tak;" \
|
||||
"*.thd;" \
|
||||
"*.tta;" \
|
||||
"*.voc;" \
|
||||
"*.vqf;" \
|
||||
"*.w64;" \
|
||||
"*.wav;" \
|
||||
"*.wma;" \
|
||||
"*.wv;" \
|
||||
"*.xa;" \
|
||||
"*.xm"
|
||||
|
||||
#define EXTENSIONS_VIDEO \
|
||||
"*.3g2;*.3gp;*.3gp2;*.3gpp;*.amv;*.asf;*.avi;" \
|
||||
"*.bik;*.bin;*.crf;*.divx;*.drc;*.dv;*.evo;*.f4v;*.flv;*.gvi;*.gxf;" \
|
||||
"*.iso;*.m1v;*.m2v;*.m2t;*.m2ts;*.m4v;*.mkv;*.mov;*.mp2;*.mp2v;*.mp4;" \
|
||||
"*.mp4v;*.mpe;*.mpeg;*.mpeg1;*.mpeg2;*.mpeg4;*.mpg;*.mpv2;*.mts;" \
|
||||
"*.mtv;*.mxf;*.mxg;*.nsv;*.nuv;*.ogg;*.ogm;*.ogv;*.ogx;*.ps;*.rec;" \
|
||||
"*.rm;*.rmvb;*.rpl;*.thp;*.tod;*.ts;*.tts;*.txd;*.vob;*.vro;*.webm;" \
|
||||
"*.wm;*.wmv;*.wtv;*.xesc"
|
||||
|
||||
#define EXTENSIONS_PLAYLIST \
|
||||
"*.asx;*.b4s;*.cue;*.ifo;*.m3u;*.m3u8;*.pls;" \
|
||||
"*.ram;*.rar;*.sdp;*.vlc;*.xspf;*.wax;*.wvx;*.zip;*.conf"
|
||||
|
||||
#define EXTENSIONS_MEDIA \
|
||||
EXTENSIONS_VIDEO ";" EXTENSIONS_AUDIO ";" EXTENSIONS_PLAYLIST
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user