diff --git a/libvlc-sys/bindings.rs b/libvlc-sys/bindings.rs index 5edb4b3..497ccd1 100644 --- a/libvlc-sys/bindings.rs +++ b/libvlc-sys/bindings.rs @@ -1,13 +1,15 @@ /* automatically generated by rust-bindgen 0.59.2 */ +pub const libvlc_media_filestat_mtime: u32 = 0; +pub const libvlc_media_filestat_size: u32 = 1; pub type size_t = libc::c_ulong; pub type va_list = __builtin_va_list; +pub type __uint16_t = libc::c_ushort; pub type __uint32_t = libc::c_uint; pub type __int64_t = libc::c_long; pub type __uint64_t = libc::c_ulong; pub type __off_t = libc::c_long; pub type __off64_t = libc::c_long; -pub type __ssize_t = libc::c_long; pub type FILE = _IO_FILE; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -361,7 +363,6 @@ fn bindgen_test_layout__IO_FILE() { ) ); } -pub type ssize_t = __ssize_t; extern "C" { pub fn vsnprintf( __s: *mut libc::c_char, @@ -377,39 +378,128 @@ pub struct libvlc_instance_t { } pub type libvlc_time_t = i64; extern "C" { + #[doc = " A human-readable error message for the last LibVLC error in the calling"] + #[doc = " thread. The resulting string is valid until another error occurs (at least"] + #[doc = " until the next LibVLC call)."] + #[doc = ""] + #[doc = " @warning"] + #[doc = " This will be NULL if there was no error."] pub fn libvlc_errmsg() -> *const libc::c_char; } extern "C" { + #[doc = " Clears the LibVLC error status for the current thread. This is optional."] + #[doc = " By default, the error status is automatically overridden when a new error"] + #[doc = " occurs, and destroyed when the thread exits."] pub fn libvlc_clearerr(); } extern "C" { - pub fn libvlc_vprinterr( - fmt: *const libc::c_char, - ap: *mut __va_list_tag, - ) -> *const libc::c_char; -} -extern "C" { + #[doc = " Sets the LibVLC error status and message for the current thread."] + #[doc = " Any previous error is overridden."] + #[doc = " \\param fmt the format string"] + #[doc = " \\param ... the arguments for the format string"] + #[doc = " \\return a nul terminated string in any case"] pub fn libvlc_printerr(fmt: *const libc::c_char, ...) -> *const libc::c_char; } extern "C" { + #[doc = " Create and initialize a libvlc instance."] + #[doc = " This functions accept a list of \"command line\" arguments similar to the"] + #[doc = " main(). These arguments affect the LibVLC instance default configuration."] + #[doc = ""] + #[doc = " \\note"] + #[doc = " LibVLC may create threads. Therefore, any thread-unsafe process"] + #[doc = " initialization must be performed before calling libvlc_new(). In particular"] + #[doc = " and where applicable:"] + #[doc = " - setlocale() and textdomain(),"] + #[doc = " - setenv(), unsetenv() and putenv(),"] + #[doc = " - with the X11 display system, XInitThreads()"] + #[doc = " (see also libvlc_media_player_set_xwindow()) and"] + #[doc = " - on Microsoft Windows, SetErrorMode()."] + #[doc = " - sigprocmask() shall never be invoked; pthread_sigmask() can be used."] + #[doc = ""] + #[doc = " On POSIX systems, the SIGCHLD signal <b>must not</b> be ignored, i.e. the"] + #[doc = " signal handler must set to SIG_DFL or a function pointer, not SIG_IGN."] + #[doc = " Also while LibVLC is active, the wait() function shall not be called, and"] + #[doc = " any call to waitpid() shall use a strictly positive value for the first"] + #[doc = " parameter (i.e. the PID). Failure to follow those rules may lead to a"] + #[doc = " deadlock or a busy loop."] + #[doc = " Also on POSIX systems, it is recommended that the SIGPIPE signal be blocked,"] + #[doc = " even if it is not, in principles, necessary, e.g.:"] + #[doc = " @code"] + #[doc = "sigset_t set;"] + #[doc = ""] + #[doc = "signal(SIGCHLD, SIG_DFL);"] + #[doc = "sigemptyset(&set);"] + #[doc = "sigaddset(&set, SIGPIPE);"] + #[doc = "pthread_sigmask(SIG_BLOCK, &set, NULL);"] + #[doc = " @endcode"] + #[doc = ""] + #[doc = " On Microsoft Windows, setting the default DLL directories to SYSTEM32"] + #[doc = " exclusively is strongly recommended for security reasons:"] + #[doc = " @code"] + #[doc = "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32);"] + #[doc = " @endcode"] + #[doc = ""] + #[doc = " \\version"] + #[doc = " Arguments are meant to be passed from the command line to LibVLC, just like"] + #[doc = " VLC media player does. The list of valid arguments depends on the LibVLC"] + #[doc = " version, the operating system and platform, and set of available LibVLC"] + #[doc = " plugins. Invalid or unsupported arguments will cause the function to fail"] + #[doc = " (i.e. return NULL). Also, some arguments may alter the behaviour or"] + #[doc = " otherwise interfere with other LibVLC functions."] + #[doc = ""] + #[doc = " \\warning"] + #[doc = " There is absolutely no warranty or promise of forward, backward and"] + #[doc = " cross-platform compatibility with regards to libvlc_new() arguments."] + #[doc = " We recommend that you do not use them, other than when debugging."] + #[doc = ""] + #[doc = " \\param argc the number of arguments (should be 0)"] + #[doc = " \\param argv list of arguments (should be NULL)"] + #[doc = " \\return the libvlc instance or NULL in case of error"] pub fn libvlc_new( argc: libc::c_int, argv: *const *const libc::c_char, ) -> *mut libvlc_instance_t; } extern "C" { + #[doc = " Decrement the reference count of a libvlc instance, and destroy it"] + #[doc = " if it reaches zero."] + #[doc = ""] + #[doc = " \\param p_instance the instance to destroy"] pub fn libvlc_release(p_instance: *mut libvlc_instance_t); } extern "C" { + #[doc = " Increments the reference count of a libvlc instance."] + #[doc = " The initial reference count is 1 after libvlc_new() returns."] + #[doc = ""] + #[doc = " \\param p_instance the instance to reference"] pub fn libvlc_retain(p_instance: *mut libvlc_instance_t); } extern "C" { + #[doc = " Try to start a user interface for the libvlc instance."] + #[doc = ""] + #[doc = " \\param p_instance the instance"] + #[doc = " \\param name interface name, or NULL for default"] + #[doc = " \\return 0 on success, -1 on error."] pub fn libvlc_add_intf( p_instance: *mut libvlc_instance_t, name: *const libc::c_char, ) -> libc::c_int; } extern "C" { + #[doc = " Registers a callback for the LibVLC exit event. This is mostly useful if"] + #[doc = " the VLC playlist and/or at least one interface are started with"] + #[doc = " libvlc_playlist_play() or libvlc_add_intf() respectively."] + #[doc = " Typically, this function will wake up your application main loop (from"] + #[doc = " another thread)."] + #[doc = ""] + #[doc = " \\note This function should be called before the playlist or interface are"] + #[doc = " started. Otherwise, there is a small race condition: the exit event could"] + #[doc = " be raised before the handler is registered."] + #[doc = ""] + #[doc = " \\param p_instance LibVLC instance"] + #[doc = " \\param cb callback to invoke when LibVLC wants to exit,"] + #[doc = " or NULL to disable the exit handler (as by default)"] + #[doc = " \\param opaque data pointer for the callback"] pub fn libvlc_set_exit_handler( p_instance: *mut libvlc_instance_t, cb: ::core::option::Option<unsafe extern "C" fn(arg1: *mut libc::c_void)>, @@ -417,6 +507,13 @@ extern "C" { ); } extern "C" { + #[doc = " Sets the application name. LibVLC passes this as the user agent string"] + #[doc = " when a protocol requires it."] + #[doc = ""] + #[doc = " \\param p_instance LibVLC instance"] + #[doc = " \\param name human-readable application name, e.g. \"FooBar player 1.2.3\""] + #[doc = " \\param http HTTP User Agent, e.g. \"FooBar/1.2.3 Python/2.6.0\""] + #[doc = " \\version LibVLC 1.1.1 or later"] pub fn libvlc_set_user_agent( p_instance: *mut libvlc_instance_t, name: *const libc::c_char, @@ -424,6 +521,14 @@ extern "C" { ); } extern "C" { + #[doc = " Sets some meta-information about the application."] + #[doc = " See also libvlc_set_user_agent()."] + #[doc = ""] + #[doc = " \\param p_instance LibVLC instance"] + #[doc = " \\param id Java-style application identifier, e.g. \"com.acme.foobar\""] + #[doc = " \\param version application version numbers, e.g. \"1.2.3\""] + #[doc = " \\param icon application icon name, e.g. \"foobar\""] + #[doc = " \\version LibVLC 2.1.0 or later."] pub fn libvlc_set_app_id( p_instance: *mut libvlc_instance_t, id: *const libc::c_char, @@ -432,15 +537,35 @@ extern "C" { ); } extern "C" { + #[doc = " Retrieve libvlc version."] + #[doc = ""] + #[doc = " Example: \"1.1.0-git The Luggage\""] + #[doc = ""] + #[doc = " \\return a string containing the libvlc version"] pub fn libvlc_get_version() -> *const libc::c_char; } extern "C" { + #[doc = " Retrieve libvlc compiler version."] + #[doc = ""] + #[doc = " Example: \"gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)\""] + #[doc = ""] + #[doc = " \\return a string containing the libvlc compiler version"] pub fn libvlc_get_compiler() -> *const libc::c_char; } extern "C" { + #[doc = " Retrieve libvlc changeset."] + #[doc = ""] + #[doc = " Example: \"aa9bce0bc4\""] + #[doc = ""] + #[doc = " \\return a string containing the libvlc changeset"] pub fn libvlc_get_changeset() -> *const libc::c_char; } extern "C" { + #[doc = " Frees an heap allocation returned by a LibVLC function."] + #[doc = " If you know you're using the same underlying C run-time as the LibVLC"] + #[doc = " implementation, then you can call ANSI C free() directly instead."] + #[doc = ""] + #[doc = " \\param ptr the pointer"] pub fn libvlc_free(ptr: *mut libc::c_void); } #[repr(C)] @@ -448,11 +573,23 @@ extern "C" { pub struct libvlc_event_manager_t { _unused: [u8; 0], } +#[doc = " Type of a LibVLC event."] pub type libvlc_event_type_t = libc::c_int; +#[doc = " Callback function notification"] +#[doc = " \\param p_event the event triggering the callback"] pub type libvlc_callback_t = ::core::option::Option< unsafe extern "C" fn(p_event: *const libvlc_event_t, p_data: *mut libc::c_void), >; extern "C" { + #[doc = " Register for an event notification."] + #[doc = ""] + #[doc = " \\param p_event_manager the event manager to which you want to attach to."] + #[doc = " Generally it is obtained by vlc_my_object_event_manager() where"] + #[doc = " my_object is the object you want to listen to."] + #[doc = " \\param i_event_type the desired event to which we want to listen"] + #[doc = " \\param f_callback the function to call when i_event_type occurs"] + #[doc = " \\param user_data user provided data to carry with the event"] + #[doc = " \\return 0 on success, ENOMEM on error"] pub fn libvlc_event_attach( p_event_manager: *mut libvlc_event_manager_t, i_event_type: libvlc_event_type_t, @@ -461,6 +598,12 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Unregister an event notification."] + #[doc = ""] + #[doc = " \\param p_event_manager the event manager"] + #[doc = " \\param i_event_type the desired event to which we want to unregister"] + #[doc = " \\param f_callback the function to call when i_event_type occurs"] + #[doc = " \\param p_user_data user provided data to carry with the event"] pub fn libvlc_event_detach( p_event_manager: *mut libvlc_event_manager_t, i_event_type: libvlc_event_type_t, @@ -468,13 +611,16 @@ extern "C" { p_user_data: *mut libc::c_void, ); } -extern "C" { - pub fn libvlc_event_type_name(event_type: libvlc_event_type_t) -> *const libc::c_char; -} +#[doc = "< Debug message"] pub const libvlc_log_level_LIBVLC_DEBUG: libvlc_log_level = 0; +#[doc = "< Important informational message"] pub const libvlc_log_level_LIBVLC_NOTICE: libvlc_log_level = 2; +#[doc = "< Warning (potential error) message"] pub const libvlc_log_level_LIBVLC_WARNING: libvlc_log_level = 3; +#[doc = "< Error message"] pub const libvlc_log_level_LIBVLC_ERROR: libvlc_log_level = 4; +#[doc = " Logging messages level."] +#[doc = " \\note Future LibVLC versions may define new levels."] pub type libvlc_log_level = libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -483,6 +629,24 @@ pub struct vlc_log_t { } pub type libvlc_log_t = vlc_log_t; extern "C" { + #[doc = " Gets log message debug infos."] + #[doc = ""] + #[doc = " This function retrieves self-debug information about a log message:"] + #[doc = " - the name of the VLC module emitting the message,"] + #[doc = " - the name of the source code module (i.e. file) and"] + #[doc = " - the line number within the source code module."] + #[doc = ""] + #[doc = " The returned module name and file name will be NULL if unknown."] + #[doc = " The returned line number will similarly be zero if unknown."] + #[doc = ""] + #[doc = " \\param ctx message context (as passed to the @ref libvlc_log_cb callback)"] + #[doc = " \\param module module name storage (or NULL) [OUT]"] + #[doc = " \\param file source code file name storage (or NULL) [OUT]"] + #[doc = " \\param line source code file line number storage (or NULL) [OUT]"] + #[doc = " \\warning The returned module name and source code file name, if non-NULL,"] + #[doc = " are only valid until the logging callback returns."] + #[doc = ""] + #[doc = " \\version LibVLC 2.1.0 or later"] pub fn libvlc_log_get_context( ctx: *const libvlc_log_t, module: *mut *const libc::c_char, @@ -491,6 +655,29 @@ extern "C" { ); } extern "C" { + #[doc = " Gets log message info."] + #[doc = ""] + #[doc = " This function retrieves meta-information about a log message:"] + #[doc = " - the type name of the VLC object emitting the message,"] + #[doc = " - the object header if any, and"] + #[doc = " - a temporaly-unique object identifier."] + #[doc = ""] + #[doc = " This information is mainly meant for <b>manual</b> troubleshooting."] + #[doc = ""] + #[doc = " The returned type name may be \"generic\" if unknown, but it cannot be NULL."] + #[doc = " The returned header will be NULL if unset; in current versions, the header"] + #[doc = " is used to distinguish for VLM inputs."] + #[doc = " The returned object ID will be zero if the message is not associated with"] + #[doc = " any VLC object."] + #[doc = ""] + #[doc = " \\param ctx message context (as passed to the @ref libvlc_log_cb callback)"] + #[doc = " \\param name object name storage (or NULL) [OUT]"] + #[doc = " \\param header object header (or NULL) [OUT]"] + #[doc = " \\param id temporarily-unique object identifier (or 0) [OUT]"] + #[doc = " \\warning The returned module name and source code file name, if non-NULL,"] + #[doc = " are only valid until the logging callback returns."] + #[doc = ""] + #[doc = " \\version LibVLC 2.1.0 or later"] pub fn libvlc_log_get_object( ctx: *const libvlc_log_t, name: *mut *const libc::c_char, @@ -498,6 +685,16 @@ extern "C" { id: *mut usize, ); } +#[doc = " Callback prototype for LibVLC log message handler."] +#[doc = ""] +#[doc = " \\param data data pointer as given to libvlc_log_set()"] +#[doc = " \\param level message level (@ref libvlc_log_level)"] +#[doc = " \\param ctx message context (meta-information about the message)"] +#[doc = " \\param fmt printf() format string (as defined by ISO C11)"] +#[doc = " \\param args variable argument list for the format"] +#[doc = " \\note Log message handlers <b>must</b> be thread-safe."] +#[doc = " \\warning The message context pointer, the format string parameters and the"] +#[doc = " variable arguments are only valid until the callback returns."] pub type libvlc_log_cb = ::core::option::Option< unsafe extern "C" fn( data: *mut libc::c_void, @@ -508,9 +705,35 @@ pub type libvlc_log_cb = ::core::option::Option< ), >; extern "C" { + #[doc = " Unsets the logging callback."] + #[doc = ""] + #[doc = " This function deregisters the logging callback for a LibVLC instance."] + #[doc = " This is rarely needed as the callback is implicitly unset when the instance"] + #[doc = " is destroyed."] + #[doc = ""] + #[doc = " \\note This function will wait for any pending callbacks invocation to"] + #[doc = " complete (causing a deadlock if called from within the callback)."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = " \\version LibVLC 2.1.0 or later"] pub fn libvlc_log_unset(p_instance: *mut libvlc_instance_t); } extern "C" { + #[doc = " Sets the logging callback for a LibVLC instance."] + #[doc = ""] + #[doc = " This function is thread-safe: it will wait for any pending callbacks"] + #[doc = " invocation to complete."] + #[doc = ""] + #[doc = " \\param cb callback function pointer"] + #[doc = " \\param data opaque data pointer for the callback function"] + #[doc = ""] + #[doc = " \\note Some log messages (especially debug) are emitted by LibVLC while"] + #[doc = " is being initialized. These messages cannot be captured with this interface."] + #[doc = ""] + #[doc = " \\warning A deadlock may occur if this function is called from the callback."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = " \\version LibVLC 2.1.0 or later"] pub fn libvlc_log_set( p_instance: *mut libvlc_instance_t, cb: libvlc_log_cb, @@ -518,8 +741,14 @@ extern "C" { ); } extern "C" { + #[doc = " Sets up logging to a file."] + #[doc = " \\param p_instance libvlc instance"] + #[doc = " \\param stream FILE pointer opened for writing"] + #[doc = " (the FILE pointer must remain valid until libvlc_log_unset())"] + #[doc = " \\version LibVLC 2.1.0 or later"] pub fn libvlc_log_set_file(p_instance: *mut libvlc_instance_t, stream: *mut FILE); } +#[doc = " Description of a module."] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_module_description_t { @@ -605,19 +834,46 @@ fn bindgen_test_layout_libvlc_module_description_t() { ); } extern "C" { + #[doc = " Release a list of module descriptions."] + #[doc = ""] + #[doc = " \\param p_list the list to be released"] pub fn libvlc_module_description_list_release(p_list: *mut libvlc_module_description_t); } extern "C" { + #[doc = " Returns a list of audio filters that are available."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = ""] + #[doc = " \\return a list of module descriptions. It should be freed with libvlc_module_description_list_release()."] + #[doc = " In case of an error, NULL is returned."] + #[doc = ""] + #[doc = " \\see libvlc_module_description_t"] + #[doc = " \\see libvlc_module_description_list_release"] pub fn libvlc_audio_filter_list_get( p_instance: *mut libvlc_instance_t, ) -> *mut libvlc_module_description_t; } extern "C" { + #[doc = " Returns a list of video filters that are available."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = ""] + #[doc = " \\return a list of module descriptions. It should be freed with libvlc_module_description_list_release()."] + #[doc = " In case of an error, NULL is returned."] + #[doc = ""] + #[doc = " \\see libvlc_module_description_t"] + #[doc = " \\see libvlc_module_description_list_release"] pub fn libvlc_video_filter_list_get( p_instance: *mut libvlc_instance_t, ) -> *mut libvlc_module_description_t; } extern "C" { + #[doc = " Return the current time as defined by LibVLC. The unit is the microsecond."] + #[doc = " Time increases monotonically (regardless of time zone changes and RTC"] + #[doc = " adjustments)."] + #[doc = " The origin is arbitrary but consistent across the whole system"] + #[doc = " (e.g. the system uptime, the time since the system was booted)."] + #[doc = " \\note On systems that support it, the POSIX monotonic clock is used."] pub fn libvlc_clock() -> i64; } #[repr(C)] @@ -625,6 +881,9 @@ extern "C" { pub struct libvlc_renderer_discoverer_t { _unused: [u8; 0], } +#[doc = " Renderer discoverer description"] +#[doc = ""] +#[doc = " \\see libvlc_renderer_discoverer_list_get()"] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_rd_description_t { @@ -674,55 +933,166 @@ pub struct libvlc_renderer_item_t { _unused: [u8; 0], } extern "C" { + #[doc = " Hold a renderer item, i.e. creates a new reference"] + #[doc = ""] + #[doc = " This functions need to called from the libvlc_RendererDiscovererItemAdded"] + #[doc = " callback if the libvlc user wants to use this item after. (for display or"] + #[doc = " for passing it to the mediaplayer for example)."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return the current item"] pub fn libvlc_renderer_item_hold( p_item: *mut libvlc_renderer_item_t, ) -> *mut libvlc_renderer_item_t; } extern "C" { + #[doc = " Releases a renderer item, i.e. decrements its reference counter"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_renderer_item_release(p_item: *mut libvlc_renderer_item_t); } extern "C" { + #[doc = " Get the human readable name of a renderer item"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return the name of the item (can't be NULL, must *not* be freed)"] pub fn libvlc_renderer_item_name(p_item: *const libvlc_renderer_item_t) -> *const libc::c_char; } extern "C" { + #[doc = " Get the type (not translated) of a renderer item. For now, the type can only"] + #[doc = " be \"chromecast\" (\"upnp\", \"airplay\" may come later)."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return the type of the item (can't be NULL, must *not* be freed)"] pub fn libvlc_renderer_item_type(p_item: *const libvlc_renderer_item_t) -> *const libc::c_char; } extern "C" { + #[doc = " Get the icon uri of a renderer item"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return the uri of the item's icon (can be NULL, must *not* be freed)"] pub fn libvlc_renderer_item_icon_uri( p_item: *const libvlc_renderer_item_t, ) -> *const libc::c_char; } extern "C" { + #[doc = " Get the flags of a renderer item"] + #[doc = ""] + #[doc = " \\see LIBVLC_RENDERER_CAN_AUDIO"] + #[doc = " \\see LIBVLC_RENDERER_CAN_VIDEO"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return bitwise flag: capabilities of the renderer, see"] pub fn libvlc_renderer_item_flags(p_item: *const libvlc_renderer_item_t) -> libc::c_int; } extern "C" { + #[doc = " Create a renderer discoverer object by name"] + #[doc = ""] + #[doc = " After this object is created, you should attach to events in order to be"] + #[doc = " notified of the discoverer events."] + #[doc = ""] + #[doc = " You need to call libvlc_renderer_discoverer_start() in order to start the"] + #[doc = " discovery."] + #[doc = ""] + #[doc = " \\see libvlc_renderer_discoverer_event_manager()"] + #[doc = " \\see libvlc_renderer_discoverer_start()"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_inst libvlc instance"] + #[doc = " \\param psz_name service name; use libvlc_renderer_discoverer_list_get() to"] + #[doc = " get a list of the discoverer names available in this libVLC instance"] + #[doc = " \\return media discover object or NULL in case of error"] pub fn libvlc_renderer_discoverer_new( p_inst: *mut libvlc_instance_t, psz_name: *const libc::c_char, ) -> *mut libvlc_renderer_discoverer_t; } extern "C" { + #[doc = " Release a renderer discoverer object"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_rd renderer discoverer object"] pub fn libvlc_renderer_discoverer_release(p_rd: *mut libvlc_renderer_discoverer_t); } extern "C" { + #[doc = " Start renderer discovery"] + #[doc = ""] + #[doc = " To stop it, call libvlc_renderer_discoverer_stop() or"] + #[doc = " libvlc_renderer_discoverer_release() directly."] + #[doc = ""] + #[doc = " \\see libvlc_renderer_discoverer_stop()"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_rd renderer discoverer object"] + #[doc = " \\return -1 in case of error, 0 otherwise"] pub fn libvlc_renderer_discoverer_start(p_rd: *mut libvlc_renderer_discoverer_t) -> libc::c_int; } extern "C" { + #[doc = " Stop renderer discovery."] + #[doc = ""] + #[doc = " \\see libvlc_renderer_discoverer_start()"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_rd renderer discoverer object"] pub fn libvlc_renderer_discoverer_stop(p_rd: *mut libvlc_renderer_discoverer_t); } extern "C" { + #[doc = " Get the event manager of the renderer discoverer"] + #[doc = ""] + #[doc = " The possible events to attach are @ref libvlc_RendererDiscovererItemAdded"] + #[doc = " and @ref libvlc_RendererDiscovererItemDeleted."] + #[doc = ""] + #[doc = " The @ref libvlc_renderer_item_t struct passed to event callbacks is owned by"] + #[doc = " VLC, users should take care of holding/releasing this struct for their"] + #[doc = " internal usage."] + #[doc = ""] + #[doc = " \\see libvlc_event_t.u.renderer_discoverer_item_added.item"] + #[doc = " \\see libvlc_event_t.u.renderer_discoverer_item_removed.item"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 or later"] + #[doc = ""] + #[doc = " \\return a valid event manager (can't fail)"] pub fn libvlc_renderer_discoverer_event_manager( p_rd: *mut libvlc_renderer_discoverer_t, ) -> *mut libvlc_event_manager_t; } extern "C" { + #[doc = " Get media discoverer services"] + #[doc = ""] + #[doc = " \\see libvlc_renderer_list_release()"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\param p_inst libvlc instance"] + #[doc = " \\param ppp_services address to store an allocated array of renderer"] + #[doc = " discoverer services (must be freed with libvlc_renderer_list_release() by"] + #[doc = " the caller) [OUT]"] + #[doc = ""] + #[doc = " \\return the number of media discoverer services (0 on error)"] pub fn libvlc_renderer_discoverer_list_get( p_inst: *mut libvlc_instance_t, ppp_services: *mut *mut *mut libvlc_rd_description_t, ) -> size_t; } extern "C" { + #[doc = " Release an array of media discoverer services"] + #[doc = ""] + #[doc = " \\see libvlc_renderer_discoverer_list_get()"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\param pp_services array to release"] + #[doc = " \\param i_count number of elements in the array"] pub fn libvlc_renderer_discoverer_list_release( pp_services: *mut *mut libvlc_rd_description_t, i_count: size_t, @@ -730,6 +1100,759 @@ extern "C" { } #[repr(C)] #[derive(Debug, Copy, Clone)] +pub struct libvlc_picture_t { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_picture_list_t { + _unused: [u8; 0], +} +pub const libvlc_picture_type_t_libvlc_picture_Argb: libvlc_picture_type_t = 0; +pub const libvlc_picture_type_t_libvlc_picture_Png: libvlc_picture_type_t = 1; +pub const libvlc_picture_type_t_libvlc_picture_Jpg: libvlc_picture_type_t = 2; +pub type libvlc_picture_type_t = libc::c_uint; +extern "C" { + #[doc = " Increment the reference count of this picture."] + #[doc = ""] + #[doc = " \\see libvlc_picture_release()"] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_retain(pic: *mut libvlc_picture_t); +} +extern "C" { + #[doc = " Decrement the reference count of this picture."] + #[doc = " When the reference count reaches 0, the picture will be released."] + #[doc = " The picture must not be accessed after calling this function."] + #[doc = ""] + #[doc = " \\see libvlc_picture_retain"] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_release(pic: *mut libvlc_picture_t); +} +extern "C" { + #[doc = " Saves this picture to a file. The image format is the same as the one"] + #[doc = " returned by \\link libvlc_picture_type \\endlink"] + #[doc = ""] + #[doc = " \\param pic A picture object"] + #[doc = " \\param path The path to the generated file"] + #[doc = " \\return 0 in case of success, -1 otherwise"] + pub fn libvlc_picture_save( + pic: *const libvlc_picture_t, + path: *const libc::c_char, + ) -> libc::c_int; +} +extern "C" { + #[doc = " Returns the image internal buffer, including potential padding."] + #[doc = " The libvlc_picture_t owns the returned buffer, which must not be modified nor"] + #[doc = " freed."] + #[doc = ""] + #[doc = " \\param pic A picture object"] + #[doc = " \\param size A pointer to a size_t that will hold the size of the buffer [required]"] + #[doc = " \\return A pointer to the internal buffer."] + pub fn libvlc_picture_get_buffer( + pic: *const libvlc_picture_t, + size: *mut size_t, + ) -> *const libc::c_uchar; +} +extern "C" { + #[doc = " Returns the picture type"] + #[doc = ""] + #[doc = " \\param pic A picture object"] + #[doc = " \\see libvlc_picture_type_t"] + pub fn libvlc_picture_type(pic: *const libvlc_picture_t) -> libvlc_picture_type_t; +} +extern "C" { + #[doc = " Returns the image stride, ie. the number of bytes per line."] + #[doc = " This can only be called on images of type libvlc_picture_Argb"] + #[doc = ""] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_get_stride(pic: *const libvlc_picture_t) -> libc::c_uint; +} +extern "C" { + #[doc = " Returns the width of the image in pixels"] + #[doc = ""] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_get_width(pic: *const libvlc_picture_t) -> libc::c_uint; +} +extern "C" { + #[doc = " Returns the height of the image in pixels"] + #[doc = ""] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_get_height(pic: *const libvlc_picture_t) -> libc::c_uint; +} +extern "C" { + #[doc = " Returns the time at which this picture was generated, in milliseconds"] + #[doc = " \\param pic A picture object"] + pub fn libvlc_picture_get_time(pic: *const libvlc_picture_t) -> libvlc_time_t; +} +extern "C" { + #[doc = " Returns the number of pictures in the list"] + pub fn libvlc_picture_list_count(list: *const libvlc_picture_list_t) -> size_t; +} +extern "C" { + #[doc = " Returns the picture at the provided index."] + #[doc = ""] + #[doc = " If the index is out of bound, the result is undefined."] + pub fn libvlc_picture_list_at( + list: *const libvlc_picture_list_t, + index: size_t, + ) -> *mut libvlc_picture_t; +} +extern "C" { + #[doc = " Destroys a picture list and releases the pictures it contains"] + #[doc = " \\param list The list to destroy"] + #[doc = ""] + #[doc = " Calling this function with a NULL list is safe and will return immediately"] + pub fn libvlc_picture_list_destroy(list: *mut libvlc_picture_list_t); +} +pub const libvlc_track_type_t_libvlc_track_unknown: libvlc_track_type_t = -1; +pub const libvlc_track_type_t_libvlc_track_audio: libvlc_track_type_t = 0; +pub const libvlc_track_type_t_libvlc_track_video: libvlc_track_type_t = 1; +pub const libvlc_track_type_t_libvlc_track_text: libvlc_track_type_t = 2; +#[doc = " \\defgroup libvlc_media_track LibVLC media track"] +#[doc = " \\ingroup libvlc"] +#[doc = " @ref libvlc_media_track_t is an abstract representation of a media track."] +#[doc = " @{"] +#[doc = " \\file"] +#[doc = " LibVLC media track"] +pub type libvlc_track_type_t = libc::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_audio_track_t { + pub i_channels: libc::c_uint, + pub i_rate: libc::c_uint, +} +#[test] +fn bindgen_test_layout_libvlc_audio_track_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_audio_track_t>(), + 8usize, + concat!("Size of: ", stringify!(libvlc_audio_track_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_audio_track_t>(), + 4usize, + concat!("Alignment of ", stringify!(libvlc_audio_track_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_audio_track_t>())).i_channels as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_audio_track_t), + "::", + stringify!(i_channels) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_audio_track_t>())).i_rate as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_audio_track_t), + "::", + stringify!(i_rate) + ) + ); +} +#[doc = "< Normal. Top line represents top, left column left."] +pub const libvlc_video_orient_t_libvlc_video_orient_top_left: libvlc_video_orient_t = 0; +#[doc = "< Flipped horizontally"] +pub const libvlc_video_orient_t_libvlc_video_orient_top_right: libvlc_video_orient_t = 1; +#[doc = "< Flipped vertically"] +pub const libvlc_video_orient_t_libvlc_video_orient_bottom_left: libvlc_video_orient_t = 2; +#[doc = "< Rotated 180 degrees"] +pub const libvlc_video_orient_t_libvlc_video_orient_bottom_right: libvlc_video_orient_t = 3; +#[doc = "< Transposed"] +pub const libvlc_video_orient_t_libvlc_video_orient_left_top: libvlc_video_orient_t = 4; +#[doc = "< Rotated 90 degrees clockwise (or 270 anti-clockwise)"] +pub const libvlc_video_orient_t_libvlc_video_orient_left_bottom: libvlc_video_orient_t = 5; +#[doc = "< Rotated 90 degrees anti-clockwise"] +pub const libvlc_video_orient_t_libvlc_video_orient_right_top: libvlc_video_orient_t = 6; +#[doc = "< Anti-transposed"] +pub const libvlc_video_orient_t_libvlc_video_orient_right_bottom: libvlc_video_orient_t = 7; +pub type libvlc_video_orient_t = libc::c_uint; +pub const libvlc_video_projection_t_libvlc_video_projection_rectangular: libvlc_video_projection_t = + 0; +#[doc = "< 360 spherical"] +pub const libvlc_video_projection_t_libvlc_video_projection_equirectangular: + libvlc_video_projection_t = 1; +pub const libvlc_video_projection_t_libvlc_video_projection_cubemap_layout_standard: + libvlc_video_projection_t = 256; +pub type libvlc_video_projection_t = libc::c_uint; +#[doc = " Viewpoint"] +#[doc = ""] +#[doc = " \\warning allocate using libvlc_video_new_viewpoint()"] +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_viewpoint_t { + #[doc = "< view point yaw in degrees ]-180;180]"] + pub f_yaw: f32, + #[doc = "< view point pitch in degrees ]-90;90]"] + pub f_pitch: f32, + #[doc = "< view point roll in degrees ]-180;180]"] + pub f_roll: f32, + #[doc = "< field of view in degrees ]0;180[ (default 80.)"] + pub f_field_of_view: f32, +} +#[test] +fn bindgen_test_layout_libvlc_video_viewpoint_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_viewpoint_t>(), + 16usize, + concat!("Size of: ", stringify!(libvlc_video_viewpoint_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_viewpoint_t>(), + 4usize, + concat!("Alignment of ", stringify!(libvlc_video_viewpoint_t)) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_yaw as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_viewpoint_t), + "::", + stringify!(f_yaw) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_pitch as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_viewpoint_t), + "::", + stringify!(f_pitch) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_roll as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_viewpoint_t), + "::", + stringify!(f_roll) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_field_of_view as *const _ + as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_viewpoint_t), + "::", + stringify!(f_field_of_view) + ) + ); +} +#[doc = "< No stereoscopy: 2D picture."] +pub const libvlc_video_multiview_t_libvlc_video_multiview_2d: libvlc_video_multiview_t = 0; +#[doc = "< Side-by-side"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_sbs: libvlc_video_multiview_t = 1; +#[doc = "< Top-bottom"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_tb: libvlc_video_multiview_t = 2; +#[doc = "< Row sequential"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_row: libvlc_video_multiview_t = 3; +#[doc = "< Column sequential"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_col: libvlc_video_multiview_t = 4; +#[doc = "< Frame sequential"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_frame: libvlc_video_multiview_t = + 5; +#[doc = "< Checkerboard pattern"] +pub const libvlc_video_multiview_t_libvlc_video_multiview_stereo_checkerboard: + libvlc_video_multiview_t = 6; +pub type libvlc_video_multiview_t = libc::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_track_t { + pub i_height: libc::c_uint, + pub i_width: libc::c_uint, + pub i_sar_num: libc::c_uint, + pub i_sar_den: libc::c_uint, + pub i_frame_rate_num: libc::c_uint, + pub i_frame_rate_den: libc::c_uint, + pub i_orientation: libvlc_video_orient_t, + pub i_projection: libvlc_video_projection_t, + #[doc = "< Initial view point"] + pub pose: libvlc_video_viewpoint_t, + pub i_multiview: libvlc_video_multiview_t, +} +#[test] +fn bindgen_test_layout_libvlc_video_track_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_track_t>(), + 52usize, + concat!("Size of: ", stringify!(libvlc_video_track_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_track_t>(), + 4usize, + concat!("Alignment of ", stringify!(libvlc_video_track_t)) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_height as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_height) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_width as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_width) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_sar_num as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_sar_num) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_sar_den as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_sar_den) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_track_t>())).i_frame_rate_num as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_frame_rate_num) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_track_t>())).i_frame_rate_den as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_frame_rate_den) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_track_t>())).i_orientation as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_orientation) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_track_t>())).i_projection as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_projection) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).pose as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_track_t>())).i_multiview as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_track_t), + "::", + stringify!(i_multiview) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_subtitle_track_t { + pub psz_encoding: *mut libc::c_char, +} +#[test] +fn bindgen_test_layout_libvlc_subtitle_track_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_subtitle_track_t>(), + 8usize, + concat!("Size of: ", stringify!(libvlc_subtitle_track_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_subtitle_track_t>(), + 8usize, + concat!("Alignment of ", stringify!(libvlc_subtitle_track_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_subtitle_track_t>())).psz_encoding as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_subtitle_track_t), + "::", + stringify!(psz_encoding) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct libvlc_media_track_t { + pub i_codec: u32, + pub i_original_fourcc: u32, + pub i_id: libc::c_int, + pub i_type: libvlc_track_type_t, + pub i_profile: libc::c_int, + pub i_level: libc::c_int, + pub __bindgen_anon_1: libvlc_media_track_t__bindgen_ty_1, + pub i_bitrate: libc::c_uint, + pub psz_language: *mut libc::c_char, + pub psz_description: *mut libc::c_char, + #[doc = " String identifier of track, can be used to save the track preference"] + #[doc = " from an other LibVLC run, only valid when the track is fetch from a"] + #[doc = " media_player"] + pub psz_id: *const libc::c_char, + #[doc = " A string identifier is stable when it is certified to be the same"] + #[doc = " across different playback instances for the same track, only valid when"] + #[doc = " the track is fetch from a media_player"] + pub id_stable: bool, + #[doc = " Name of the track, only valid when the track is fetch from a"] + #[doc = " media_player"] + pub psz_name: *mut libc::c_char, + #[doc = " true if the track is selected, only valid when the track is fetch from"] + #[doc = " a media_player"] + pub selected: bool, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union libvlc_media_track_t__bindgen_ty_1 { + pub audio: *mut libvlc_audio_track_t, + pub video: *mut libvlc_video_track_t, + pub subtitle: *mut libvlc_subtitle_track_t, +} +#[test] +fn bindgen_test_layout_libvlc_media_track_t__bindgen_ty_1() { + assert_eq!( + ::core::mem::size_of::<libvlc_media_track_t__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(libvlc_media_track_t__bindgen_ty_1)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_media_track_t__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_media_track_t__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).audio as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t__bindgen_ty_1), + "::", + stringify!(audio) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).video as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t__bindgen_ty_1), + "::", + stringify!(video) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).subtitle as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t__bindgen_ty_1), + "::", + stringify!(subtitle) + ) + ); +} +#[test] +fn bindgen_test_layout_libvlc_media_track_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_media_track_t>(), + 88usize, + concat!("Size of: ", stringify!(libvlc_media_track_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_media_track_t>(), + 8usize, + concat!("Alignment of ", stringify!(libvlc_media_track_t)) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_codec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_codec) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t>())).i_original_fourcc as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_original_fourcc) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_id as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_id) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_type as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_type) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_profile as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_profile) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_level as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_level) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_bitrate as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(i_bitrate) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_language as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(psz_language) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_description as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(psz_description) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_id as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(psz_id) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).id_stable as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(id_stable) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_name as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(psz_name) + ) + ); + assert_eq!( + unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).selected as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_track_t), + "::", + stringify!(selected) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_media_tracklist_t { + _unused: [u8; 0], +} +extern "C" { + #[doc = " Get the number of tracks in a tracklist"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param list valid tracklist"] + #[doc = ""] + #[doc = " \\return number of tracks, or 0 if the list is empty"] + pub fn libvlc_media_tracklist_count(list: *const libvlc_media_tracklist_t) -> size_t; +} +extern "C" { + #[doc = " Get a track at a specific index"] + #[doc = ""] + #[doc = " \\warning The behaviour is undefined if the index is not valid."] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param list valid tracklist"] + #[doc = " \\param index valid index in the range [0; count["] + #[doc = ""] + #[doc = " \\return a valid track (can't be NULL if libvlc_media_tracklist_count()"] + #[doc = " returned a valid count)"] + pub fn libvlc_media_tracklist_at( + list: *mut libvlc_media_tracklist_t, + index: size_t, + ) -> *mut libvlc_media_track_t; +} +extern "C" { + #[doc = " Release a tracklist"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_get_tracklist"] + #[doc = " \\see libvlc_media_player_get_tracklist"] + #[doc = ""] + #[doc = " \\param list valid tracklist"] + pub fn libvlc_media_tracklist_delete(list: *mut libvlc_media_tracklist_t); +} +extern "C" { + #[doc = " Hold a single track reference"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " This function can be used to hold a track from a tracklist. In that case,"] + #[doc = " the track can outlive its tracklist."] + #[doc = ""] + #[doc = " \\param track valid track"] + #[doc = " \\return the same track, need to be released with libvlc_media_track_release()"] + pub fn libvlc_media_track_hold(track: *mut libvlc_media_track_t) -> *mut libvlc_media_track_t; +} +extern "C" { + #[doc = " Release a single track"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\warning Tracks from a tracklist are released alongside the list with"] + #[doc = " libvlc_media_tracklist_delete()."] + #[doc = ""] + #[doc = " \\note You only need to release tracks previously held with"] + #[doc = " libvlc_media_track_hold() or returned by"] + #[doc = " libvlc_media_player_get_selected_track() and"] + #[doc = " libvlc_media_player_get_track_from_id()"] + #[doc = ""] + #[doc = " \\param track valid track"] + pub fn libvlc_media_track_release(track: *mut libvlc_media_track_t); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct libvlc_media_t { _unused: [u8; 0], } @@ -759,6 +1882,7 @@ pub const libvlc_meta_t_libvlc_meta_Actors: libvlc_meta_t = 22; pub const libvlc_meta_t_libvlc_meta_AlbumArtist: libvlc_meta_t = 23; pub const libvlc_meta_t_libvlc_meta_DiscNumber: libvlc_meta_t = 24; pub const libvlc_meta_t_libvlc_meta_DiscTotal: libvlc_meta_t = 25; +#[doc = " Meta data types"] pub type libvlc_meta_t = libc::c_uint; pub const libvlc_state_t_libvlc_NothingSpecial: libvlc_state_t = 0; pub const libvlc_state_t_libvlc_Opening: libvlc_state_t = 1; @@ -766,17 +1890,13 @@ pub const libvlc_state_t_libvlc_Buffering: libvlc_state_t = 2; pub const libvlc_state_t_libvlc_Playing: libvlc_state_t = 3; pub const libvlc_state_t_libvlc_Paused: libvlc_state_t = 4; pub const libvlc_state_t_libvlc_Stopped: libvlc_state_t = 5; -pub const libvlc_state_t_libvlc_Ended: libvlc_state_t = 6; +pub const libvlc_state_t_libvlc_Stopping: libvlc_state_t = 6; pub const libvlc_state_t_libvlc_Error: libvlc_state_t = 7; +#[doc = " libvlc media or media_player state"] pub type libvlc_state_t = libc::c_uint; pub const libvlc_media_option_trusted: libc::c_uint = 2; pub const libvlc_media_option_unique: libc::c_uint = 256; pub type _bindgen_ty_1 = libc::c_uint; -pub const libvlc_track_type_t_libvlc_track_unknown: libvlc_track_type_t = -1; -pub const libvlc_track_type_t_libvlc_track_audio: libvlc_track_type_t = 0; -pub const libvlc_track_type_t_libvlc_track_video: libvlc_track_type_t = 1; -pub const libvlc_track_type_t_libvlc_track_text: libvlc_track_type_t = 2; -pub type libvlc_track_type_t = libc::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_media_stats_t { @@ -789,18 +1909,16 @@ pub struct libvlc_media_stats_t { pub i_decoded_video: libc::c_int, pub i_decoded_audio: libc::c_int, pub i_displayed_pictures: libc::c_int, + pub i_late_pictures: libc::c_int, pub i_lost_pictures: libc::c_int, pub i_played_abuffers: libc::c_int, pub i_lost_abuffers: libc::c_int, - pub i_sent_packets: libc::c_int, - pub i_sent_bytes: libc::c_int, - pub f_send_bitrate: f32, } #[test] fn bindgen_test_layout_libvlc_media_stats_t() { assert_eq!( ::core::mem::size_of::<libvlc_media_stats_t>(), - 60usize, + 52usize, concat!("Size of: ", stringify!(libvlc_media_stats_t)) ); assert_eq!( @@ -921,9 +2039,21 @@ fn bindgen_test_layout_libvlc_media_stats_t() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_lost_pictures as *const _ as usize + &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_late_pictures as *const _ as usize }, 36usize, + concat!( + "Offset of field: ", + stringify!(libvlc_media_stats_t), + "::", + stringify!(i_late_pictures) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_lost_pictures as *const _ as usize + }, + 40usize, concat!( "Offset of field: ", stringify!(libvlc_media_stats_t), @@ -935,7 +2065,7 @@ fn bindgen_test_layout_libvlc_media_stats_t() { unsafe { &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_played_abuffers as *const _ as usize }, - 40usize, + 44usize, concat!( "Offset of field: ", stringify!(libvlc_media_stats_t), @@ -947,7 +2077,7 @@ fn bindgen_test_layout_libvlc_media_stats_t() { unsafe { &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_lost_abuffers as *const _ as usize }, - 44usize, + 48usize, concat!( "Offset of field: ", stringify!(libvlc_media_stats_t), @@ -955,750 +2085,6 @@ fn bindgen_test_layout_libvlc_media_stats_t() { stringify!(i_lost_abuffers) ) ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_sent_packets as *const _ as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_stats_t), - "::", - stringify!(i_sent_packets) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_stats_t>())).i_sent_bytes as *const _ as usize - }, - 52usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_stats_t), - "::", - stringify!(i_sent_bytes) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_stats_t>())).f_send_bitrate as *const _ as usize - }, - 56usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_stats_t), - "::", - stringify!(f_send_bitrate) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct libvlc_media_track_info_t { - pub i_codec: u32, - pub i_id: libc::c_int, - pub i_type: libvlc_track_type_t, - pub i_profile: libc::c_int, - pub i_level: libc::c_int, - pub u: libvlc_media_track_info_t__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union libvlc_media_track_info_t__bindgen_ty_1 { - pub audio: libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1, - pub video: libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1 { - pub i_channels: libc::c_uint, - pub i_rate: libc::c_uint, -} -#[test] -fn bindgen_test_layout_libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1>(), - 8usize, - concat!( - "Size of: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1>())) - .i_channels as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(i_channels) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1>())) - .i_rate as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(i_rate) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2 { - pub i_height: libc::c_uint, - pub i_width: libc::c_uint, -} -#[test] -fn bindgen_test_layout_libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2>(), - 8usize, - concat!( - "Size of: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!( - "Alignment of ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2>())) - .i_height as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(i_height) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2>())) - .i_width as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(i_width) - ) - ); -} -#[test] -fn bindgen_test_layout_libvlc_media_track_info_t__bindgen_ty_1() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_info_t__bindgen_ty_1>(), - 8usize, - concat!( - "Size of: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1) - ) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_info_t__bindgen_ty_1>(), - 4usize, - concat!( - "Alignment of ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1>())).audio as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1), - "::", - stringify!(audio) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t__bindgen_ty_1>())).video as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t__bindgen_ty_1), - "::", - stringify!(video) - ) - ); -} -#[test] -fn bindgen_test_layout_libvlc_media_track_info_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_info_t>(), - 28usize, - concat!("Size of: ", stringify!(libvlc_media_track_info_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_info_t>(), - 4usize, - concat!("Alignment of ", stringify!(libvlc_media_track_info_t)) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t>())).i_codec as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(i_codec) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_info_t>())).i_id as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(i_id) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t>())).i_type as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(i_type) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t>())).i_profile as *const _ as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(i_profile) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_info_t>())).i_level as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(i_level) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_info_t>())).u as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_info_t), - "::", - stringify!(u) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_audio_track_t { - pub i_channels: libc::c_uint, - pub i_rate: libc::c_uint, -} -#[test] -fn bindgen_test_layout_libvlc_audio_track_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_audio_track_t>(), - 8usize, - concat!("Size of: ", stringify!(libvlc_audio_track_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_audio_track_t>(), - 4usize, - concat!("Alignment of ", stringify!(libvlc_audio_track_t)) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_audio_track_t>())).i_channels as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_audio_track_t), - "::", - stringify!(i_channels) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_audio_track_t>())).i_rate as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_audio_track_t), - "::", - stringify!(i_rate) - ) - ); -} -pub const libvlc_video_orient_t_libvlc_video_orient_top_left: libvlc_video_orient_t = 0; -pub const libvlc_video_orient_t_libvlc_video_orient_top_right: libvlc_video_orient_t = 1; -pub const libvlc_video_orient_t_libvlc_video_orient_bottom_left: libvlc_video_orient_t = 2; -pub const libvlc_video_orient_t_libvlc_video_orient_bottom_right: libvlc_video_orient_t = 3; -pub const libvlc_video_orient_t_libvlc_video_orient_left_top: libvlc_video_orient_t = 4; -pub const libvlc_video_orient_t_libvlc_video_orient_left_bottom: libvlc_video_orient_t = 5; -pub const libvlc_video_orient_t_libvlc_video_orient_right_top: libvlc_video_orient_t = 6; -pub const libvlc_video_orient_t_libvlc_video_orient_right_bottom: libvlc_video_orient_t = 7; -pub type libvlc_video_orient_t = libc::c_uint; -pub const libvlc_video_projection_t_libvlc_video_projection_rectangular: libvlc_video_projection_t = - 0; -pub const libvlc_video_projection_t_libvlc_video_projection_equirectangular: - libvlc_video_projection_t = 1; -pub const libvlc_video_projection_t_libvlc_video_projection_cubemap_layout_standard: - libvlc_video_projection_t = 256; -pub type libvlc_video_projection_t = libc::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_video_viewpoint_t { - pub f_yaw: f32, - pub f_pitch: f32, - pub f_roll: f32, - pub f_field_of_view: f32, -} -#[test] -fn bindgen_test_layout_libvlc_video_viewpoint_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_video_viewpoint_t>(), - 16usize, - concat!("Size of: ", stringify!(libvlc_video_viewpoint_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_video_viewpoint_t>(), - 4usize, - concat!("Alignment of ", stringify!(libvlc_video_viewpoint_t)) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_yaw as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_viewpoint_t), - "::", - stringify!(f_yaw) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_pitch as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_viewpoint_t), - "::", - stringify!(f_pitch) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_roll as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_viewpoint_t), - "::", - stringify!(f_roll) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_viewpoint_t>())).f_field_of_view as *const _ - as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_viewpoint_t), - "::", - stringify!(f_field_of_view) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_video_track_t { - pub i_height: libc::c_uint, - pub i_width: libc::c_uint, - pub i_sar_num: libc::c_uint, - pub i_sar_den: libc::c_uint, - pub i_frame_rate_num: libc::c_uint, - pub i_frame_rate_den: libc::c_uint, - pub i_orientation: libvlc_video_orient_t, - pub i_projection: libvlc_video_projection_t, - pub pose: libvlc_video_viewpoint_t, -} -#[test] -fn bindgen_test_layout_libvlc_video_track_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_video_track_t>(), - 48usize, - concat!("Size of: ", stringify!(libvlc_video_track_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_video_track_t>(), - 4usize, - concat!("Alignment of ", stringify!(libvlc_video_track_t)) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_height as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_height) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_width as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_width) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_sar_num as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_sar_num) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).i_sar_den as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_sar_den) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_track_t>())).i_frame_rate_num as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_frame_rate_num) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_track_t>())).i_frame_rate_den as *const _ as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_frame_rate_den) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_track_t>())).i_orientation as *const _ as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_orientation) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_video_track_t>())).i_projection as *const _ as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(i_projection) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_video_track_t>())).pose as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(libvlc_video_track_t), - "::", - stringify!(pose) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_subtitle_track_t { - pub psz_encoding: *mut libc::c_char, -} -#[test] -fn bindgen_test_layout_libvlc_subtitle_track_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_subtitle_track_t>(), - 8usize, - concat!("Size of: ", stringify!(libvlc_subtitle_track_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_subtitle_track_t>(), - 8usize, - concat!("Alignment of ", stringify!(libvlc_subtitle_track_t)) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_subtitle_track_t>())).psz_encoding as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_subtitle_track_t), - "::", - stringify!(psz_encoding) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct libvlc_media_track_t { - pub i_codec: u32, - pub i_original_fourcc: u32, - pub i_id: libc::c_int, - pub i_type: libvlc_track_type_t, - pub i_profile: libc::c_int, - pub i_level: libc::c_int, - pub __bindgen_anon_1: libvlc_media_track_t__bindgen_ty_1, - pub i_bitrate: libc::c_uint, - pub psz_language: *mut libc::c_char, - pub psz_description: *mut libc::c_char, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union libvlc_media_track_t__bindgen_ty_1 { - pub audio: *mut libvlc_audio_track_t, - pub video: *mut libvlc_video_track_t, - pub subtitle: *mut libvlc_subtitle_track_t, -} -#[test] -fn bindgen_test_layout_libvlc_media_track_t__bindgen_ty_1() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_t__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(libvlc_media_track_t__bindgen_ty_1)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_t__bindgen_ty_1>(), - 8usize, - concat!( - "Alignment of ", - stringify!(libvlc_media_track_t__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).audio as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t__bindgen_ty_1), - "::", - stringify!(audio) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).video as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t__bindgen_ty_1), - "::", - stringify!(video) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t__bindgen_ty_1>())).subtitle as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t__bindgen_ty_1), - "::", - stringify!(subtitle) - ) - ); -} -#[test] -fn bindgen_test_layout_libvlc_media_track_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_media_track_t>(), - 56usize, - concat!("Size of: ", stringify!(libvlc_media_track_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_media_track_t>(), - 8usize, - concat!("Alignment of ", stringify!(libvlc_media_track_t)) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_codec as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_codec) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t>())).i_original_fourcc as *const _ as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_original_fourcc) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_id as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_id) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_type as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_type) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_profile as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_profile) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_level as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_level) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_media_track_t>())).i_bitrate as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(i_bitrate) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_language as *const _ as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(psz_language) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_media_track_t>())).psz_description as *const _ as usize - }, - 48usize, - concat!( - "Offset of field: ", - stringify!(libvlc_media_track_t), - "::", - stringify!(psz_description) - ) - ); } pub const libvlc_media_type_t_libvlc_media_type_unknown: libvlc_media_type_t = 0; pub const libvlc_media_type_t_libvlc_media_type_file: libvlc_media_type_t = 1; @@ -1706,12 +2092,25 @@ pub const libvlc_media_type_t_libvlc_media_type_directory: libvlc_media_type_t = pub const libvlc_media_type_t_libvlc_media_type_disc: libvlc_media_type_t = 3; pub const libvlc_media_type_t_libvlc_media_type_stream: libvlc_media_type_t = 4; pub const libvlc_media_type_t_libvlc_media_type_playlist: libvlc_media_type_t = 5; +#[doc = " Media type"] +#[doc = ""] +#[doc = " \\see libvlc_media_get_type"] pub type libvlc_media_type_t = libc::c_uint; +#[doc = " Parse media if it's a local file"] pub const libvlc_media_parse_flag_t_libvlc_media_parse_local: libvlc_media_parse_flag_t = 0; +#[doc = " Parse media even if it's a network file"] pub const libvlc_media_parse_flag_t_libvlc_media_parse_network: libvlc_media_parse_flag_t = 1; +#[doc = " Fetch meta and cover art using local resources"] pub const libvlc_media_parse_flag_t_libvlc_media_fetch_local: libvlc_media_parse_flag_t = 2; +#[doc = " Fetch meta and cover art using network resources"] pub const libvlc_media_parse_flag_t_libvlc_media_fetch_network: libvlc_media_parse_flag_t = 4; +#[doc = " Interact with the user (via libvlc_dialog_cbs) when preparsing this item"] +#[doc = " (and not its sub items). Set this flag in order to receive a callback"] +#[doc = " when the input is asking for credentials."] pub const libvlc_media_parse_flag_t_libvlc_media_do_interact: libvlc_media_parse_flag_t = 8; +#[doc = " Parse flags used by libvlc_media_parse_with_options()"] +#[doc = ""] +#[doc = " \\see libvlc_media_parse_with_options"] pub type libvlc_media_parse_flag_t = libc::c_uint; pub const libvlc_media_parsed_status_t_libvlc_media_parsed_status_skipped: libvlc_media_parsed_status_t = 1; @@ -1721,10 +2120,19 @@ pub const libvlc_media_parsed_status_t_libvlc_media_parsed_status_timeout: libvlc_media_parsed_status_t = 3; pub const libvlc_media_parsed_status_t_libvlc_media_parsed_status_done: libvlc_media_parsed_status_t = 4; +#[doc = " Parse status used sent by libvlc_media_parse_with_options() or returned by"] +#[doc = " libvlc_media_get_parsed_status()"] +#[doc = ""] +#[doc = " \\see libvlc_media_parse_with_options"] +#[doc = " \\see libvlc_media_get_parsed_status"] pub type libvlc_media_parsed_status_t = libc::c_uint; pub const libvlc_media_slave_type_t_libvlc_media_slave_type_subtitle: libvlc_media_slave_type_t = 0; +pub const libvlc_media_slave_type_t_libvlc_media_slave_type_generic: libvlc_media_slave_type_t = 1; pub const libvlc_media_slave_type_t_libvlc_media_slave_type_audio: libvlc_media_slave_type_t = 1; +#[doc = " Type of a media slave: subtitle or audio."] pub type libvlc_media_slave_type_t = libc::c_uint; +#[doc = " A slave of a libvlc_media_t"] +#[doc = " \\see libvlc_media_slaves_get"] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_media_slave_t { @@ -1777,6 +2185,22 @@ fn bindgen_test_layout_libvlc_media_slave_t() { ) ); } +#[doc = " Callback prototype to open a custom bitstream input media."] +#[doc = ""] +#[doc = " The same media item can be opened multiple times. Each time, this callback"] +#[doc = " is invoked. It should allocate and initialize any instance-specific"] +#[doc = " resources, then store them in *datap. The instance resources can be freed"] +#[doc = " in the @ref libvlc_media_close_cb callback."] +#[doc = ""] +#[doc = " \\param opaque private pointer as passed to libvlc_media_new_callbacks()"] +#[doc = " \\param datap storage space for a private data pointer [OUT]"] +#[doc = " \\param sizep byte length of the bitstream or UINT64_MAX if unknown [OUT]"] +#[doc = ""] +#[doc = " \\note For convenience, *datap is initially NULL and *sizep is initially 0."] +#[doc = ""] +#[doc = " \\return 0 on success, non-zero on error. In case of failure, the other"] +#[doc = " callbacks will not be invoked and any value stored in *datap and *sizep is"] +#[doc = " discarded."] pub type libvlc_media_open_cb = ::core::option::Option< unsafe extern "C" fn( opaque: *mut libc::c_void, @@ -1784,37 +2208,121 @@ pub type libvlc_media_open_cb = ::core::option::Option< sizep: *mut u64, ) -> libc::c_int, >; +#[doc = " Callback prototype to read data from a custom bitstream input media."] +#[doc = ""] +#[doc = " \\param opaque private pointer as set by the @ref libvlc_media_open_cb"] +#[doc = " callback"] +#[doc = " \\param buf start address of the buffer to read data into"] +#[doc = " \\param len bytes length of the buffer"] +#[doc = ""] +#[doc = " \\return strictly positive number of bytes read, 0 on end-of-stream,"] +#[doc = " or -1 on non-recoverable error"] +#[doc = ""] +#[doc = " \\note If no data is immediately available, then the callback should sleep."] +#[doc = " \\warning The application is responsible for avoiding deadlock situations."] pub type libvlc_media_read_cb = ::core::option::Option< - unsafe extern "C" fn( - opaque: *mut libc::c_void, - buf: *mut libc::c_uchar, - len: size_t, - ) -> ssize_t, + unsafe extern "C" fn(opaque: *mut libc::c_void, buf: *mut libc::c_uchar, len: size_t) -> isize, >; +#[doc = " Callback prototype to seek a custom bitstream input media."] +#[doc = ""] +#[doc = " \\param opaque private pointer as set by the @ref libvlc_media_open_cb"] +#[doc = " callback"] +#[doc = " \\param offset absolute byte offset to seek to"] +#[doc = " \\return 0 on success, -1 on error."] pub type libvlc_media_seek_cb = ::core::option::Option< unsafe extern "C" fn(opaque: *mut libc::c_void, offset: u64) -> libc::c_int, >; +#[doc = " Callback prototype to close a custom bitstream input media."] +#[doc = ""] +#[doc = " \\param opaque private pointer as set by the @ref libvlc_media_open_cb"] +#[doc = " callback"] pub type libvlc_media_close_cb = ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void)>; extern "C" { + #[doc = " Create a media with a certain given media resource location,"] + #[doc = " for instance a valid URL."] + #[doc = ""] + #[doc = " \\note To refer to a local file with this function,"] + #[doc = " the file://... URI syntax <b>must</b> be used (see IETF RFC3986)."] + #[doc = " We recommend using libvlc_media_new_path() instead when dealing with"] + #[doc = " local files."] + #[doc = ""] + #[doc = " \\see libvlc_media_release"] + #[doc = ""] + #[doc = " \\param p_instance the instance"] + #[doc = " \\param psz_mrl the media location"] + #[doc = " \\return the newly created media or NULL on error"] pub fn libvlc_media_new_location( p_instance: *mut libvlc_instance_t, psz_mrl: *const libc::c_char, ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Create a media for a certain file path."] + #[doc = ""] + #[doc = " \\see libvlc_media_release"] + #[doc = ""] + #[doc = " \\param p_instance the instance"] + #[doc = " \\param path local filesystem path"] + #[doc = " \\return the newly created media or NULL on error"] pub fn libvlc_media_new_path( p_instance: *mut libvlc_instance_t, path: *const libc::c_char, ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Create a media for an already open file descriptor."] + #[doc = " The file descriptor shall be open for reading (or reading and writing)."] + #[doc = ""] + #[doc = " Regular file descriptors, pipe read descriptors and character device"] + #[doc = " descriptors (including TTYs) are supported on all platforms."] + #[doc = " Block device descriptors are supported where available."] + #[doc = " Directory descriptors are supported on systems that provide fdopendir()."] + #[doc = " Sockets are supported on all platforms where they are file descriptors,"] + #[doc = " i.e. all except Windows."] + #[doc = ""] + #[doc = " \\note This library will <b>not</b> automatically close the file descriptor"] + #[doc = " under any circumstance. Nevertheless, a file descriptor can usually only be"] + #[doc = " rendered once in a media player. To render it a second time, the file"] + #[doc = " descriptor should probably be rewound to the beginning with lseek()."] + #[doc = ""] + #[doc = " \\see libvlc_media_release"] + #[doc = ""] + #[doc = " \\version LibVLC 1.1.5 and later."] + #[doc = ""] + #[doc = " \\param p_instance the instance"] + #[doc = " \\param fd open file descriptor"] + #[doc = " \\return the newly created media or NULL on error"] pub fn libvlc_media_new_fd( p_instance: *mut libvlc_instance_t, fd: libc::c_int, ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Create a media with custom callbacks to read the data from."] + #[doc = ""] + #[doc = " \\param instance LibVLC instance"] + #[doc = " \\param open_cb callback to open the custom bitstream input media"] + #[doc = " \\param read_cb callback to read data (must not be NULL)"] + #[doc = " \\param seek_cb callback to seek, or NULL if seeking is not supported"] + #[doc = " \\param close_cb callback to close the media, or NULL if unnecessary"] + #[doc = " \\param opaque data pointer for the open callback"] + #[doc = ""] + #[doc = " \\return the newly created media or NULL on error"] + #[doc = ""] + #[doc = " \\note If open_cb is NULL, the opaque pointer will be passed to read_cb,"] + #[doc = " seek_cb and close_cb, and the stream size will be treated as unknown."] + #[doc = ""] + #[doc = " \\note The callbacks may be called asynchronously (from another thread)."] + #[doc = " A single stream instance need not be reentrant. However the open_cb needs to"] + #[doc = " be reentrant if the media is used by multiple player instances."] + #[doc = ""] + #[doc = " \\warning The callbacks may be used until all or any player instances"] + #[doc = " that were supplied the media item are stopped."] + #[doc = ""] + #[doc = " \\see libvlc_media_release"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] pub fn libvlc_media_new_callbacks( instance: *mut libvlc_instance_t, open_cb: libvlc_media_open_cb, @@ -1825,15 +2333,53 @@ extern "C" { ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Create a media as an empty node with a given name."] + #[doc = ""] + #[doc = " \\see libvlc_media_release"] + #[doc = ""] + #[doc = " \\param p_instance the instance"] + #[doc = " \\param psz_name the name of the node"] + #[doc = " \\return the new empty media or NULL on error"] pub fn libvlc_media_new_as_node( p_instance: *mut libvlc_instance_t, psz_name: *const libc::c_char, ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Add an option to the media."] + #[doc = ""] + #[doc = " This option will be used to determine how the media_player will"] + #[doc = " read the media. This allows to use VLC's advanced"] + #[doc = " reading/streaming options on a per-media basis."] + #[doc = ""] + #[doc = " \\note The options are listed in 'vlc --longhelp' from the command line,"] + #[doc = " e.g. \"--sout-all\". Keep in mind that available options and their semantics"] + #[doc = " vary across LibVLC versions and builds."] + #[doc = " \\warning Not all options affects libvlc_media_t objects:"] + #[doc = " Specifically, due to architectural issues most audio and video options,"] + #[doc = " such as text renderer options, have no effects on an individual media."] + #[doc = " These options must be set through libvlc_new() instead."] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] + #[doc = " \\param psz_options the options (as a string)"] pub fn libvlc_media_add_option(p_md: *mut libvlc_media_t, psz_options: *const libc::c_char); } extern "C" { + #[doc = " Add an option to the media with configurable flags."] + #[doc = ""] + #[doc = " This option will be used to determine how the media_player will"] + #[doc = " read the media. This allows to use VLC's advanced"] + #[doc = " reading/streaming options on a per-media basis."] + #[doc = ""] + #[doc = " The options are detailed in vlc --longhelp, for instance"] + #[doc = " \"--sout-all\". Note that all options are not usable on medias:"] + #[doc = " specifically, due to architectural issues, video-related options"] + #[doc = " such as text renderer options cannot be set on a single media. They"] + #[doc = " must be set on the whole libvlc instance instead."] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] + #[doc = " \\param psz_options the options (as a string)"] + #[doc = " \\param i_flags the flags for this option"] pub fn libvlc_media_add_option_flag( p_md: *mut libvlc_media_t, psz_options: *const libc::c_char, @@ -1841,24 +2387,63 @@ extern "C" { ); } extern "C" { + #[doc = " Retain a reference to a media descriptor object (libvlc_media_t). Use"] + #[doc = " libvlc_media_release() to decrement the reference count of a"] + #[doc = " media descriptor object."] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] pub fn libvlc_media_retain(p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Decrement the reference count of a media descriptor object. If the"] + #[doc = " reference count is 0, then libvlc_media_release() will release the"] + #[doc = " media descriptor object. If the media descriptor object has been released it"] + #[doc = " should not be used again."] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] pub fn libvlc_media_release(p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Get the media resource locator (mrl) from a media descriptor object"] + #[doc = ""] + #[doc = " \\param p_md a media descriptor object"] + #[doc = " \\return string with mrl of media descriptor object"] pub fn libvlc_media_get_mrl(p_md: *mut libvlc_media_t) -> *mut libc::c_char; } extern "C" { + #[doc = " Duplicate a media descriptor object."] + #[doc = ""] + #[doc = " \\warning the duplicated media won't share forthcoming updates from the"] + #[doc = " original one."] + #[doc = ""] + #[doc = " \\param p_md a media descriptor object."] pub fn libvlc_media_duplicate(p_md: *mut libvlc_media_t) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Read the meta of the media."] + #[doc = ""] + #[doc = " Note, you need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function."] + #[doc = " If the media has not yet been parsed this will return NULL."] + #[doc = ""] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = " \\see libvlc_MediaMetaChanged"] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] + #[doc = " \\param e_meta the meta to read"] + #[doc = " \\return the media's meta"] pub fn libvlc_media_get_meta( p_md: *mut libvlc_media_t, e_meta: libvlc_meta_t, ) -> *mut libc::c_char; } extern "C" { + #[doc = " Set the meta of the media (this function will not save the meta, call"] + #[doc = " libvlc_media_save_meta in order to save the meta)"] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] + #[doc = " \\param e_meta the meta to write"] + #[doc = " \\param psz_value the media's meta"] pub fn libvlc_media_set_meta( p_md: *mut libvlc_media_t, e_meta: libvlc_meta_t, @@ -1866,16 +2451,23 @@ extern "C" { ); } extern "C" { + #[doc = " Save the meta previously set"] + #[doc = ""] + #[doc = " \\param p_md the media descriptor"] + #[doc = " \\return true if the write operation was successful"] pub fn libvlc_media_save_meta(p_md: *mut libvlc_media_t) -> libc::c_int; } extern "C" { - pub fn libvlc_media_get_state(p_md: *mut libvlc_media_t) -> libvlc_state_t; -} -extern "C" { + #[doc = " Get the current statistics about the media"] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param p_stats structure that contain the statistics about the media"] + #[doc = " (this structure must be allocated by the caller)"] + #[doc = " \\retval true statistics are available"] + #[doc = " \\retval false otherwise"] pub fn libvlc_media_get_stats( p_md: *mut libvlc_media_t, p_stats: *mut libvlc_media_stats_t, - ) -> libc::c_int; + ) -> bool; } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -1883,15 +2475,81 @@ pub struct libvlc_media_list_t { _unused: [u8; 0], } extern "C" { + #[doc = " Get subitems of media descriptor object. This will increment"] + #[doc = " the reference count of supplied media descriptor object. Use"] + #[doc = " libvlc_media_list_release() to decrement the reference counting."] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\return list of media descriptor subitems or NULL"] pub fn libvlc_media_subitems(p_md: *mut libvlc_media_t) -> *mut libvlc_media_list_t; } extern "C" { + #[doc = " Get event manager from media descriptor object."] + #[doc = " NOTE: this function doesn't increment reference counting."] + #[doc = ""] + #[doc = " \\param p_md a media descriptor object"] + #[doc = " \\return event manager object"] pub fn libvlc_media_event_manager(p_md: *mut libvlc_media_t) -> *mut libvlc_event_manager_t; } extern "C" { + #[doc = " Get duration (in ms) of media descriptor object item."] + #[doc = ""] + #[doc = " Note, you need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function."] + #[doc = " Not doing this will result in an undefined result."] + #[doc = ""] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\return duration of media item or -1 on error"] pub fn libvlc_media_get_duration(p_md: *mut libvlc_media_t) -> libvlc_time_t; } extern "C" { + #[doc = " Get a 'stat' value of media descriptor object item."] + #[doc = ""] + #[doc = " \\note 'stat' values are currently only parsed by directory accesses. This"] + #[doc = " mean that only sub medias of a directory media, parsed with"] + #[doc = " libvlc_media_parse_with_options() can have valid 'stat' properties."] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param type a valid libvlc_media_stat_ define"] + #[doc = " \\param out field in which the value will be stored"] + #[doc = " \\return 1 on success, 0 if not found, -1 on error."] + pub fn libvlc_media_get_filestat( + p_md: *mut libvlc_media_t, + type_: libc::c_uint, + out: *mut u64, + ) -> libc::c_int; +} +extern "C" { + #[doc = " Parse the media asynchronously with options."] + #[doc = ""] + #[doc = " This fetches (local or network) art, meta data and/or tracks information."] + #[doc = ""] + #[doc = " To track when this is over you can listen to libvlc_MediaParsedChanged"] + #[doc = " event. However if this functions returns an error, you will not receive any"] + #[doc = " events."] + #[doc = ""] + #[doc = " It uses a flag to specify parse options (see libvlc_media_parse_flag_t). All"] + #[doc = " these flags can be combined. By default, media is parsed if it's a local"] + #[doc = " file."] + #[doc = ""] + #[doc = " \\note Parsing can be aborted with libvlc_media_parse_stop()."] + #[doc = ""] + #[doc = " \\see libvlc_MediaParsedChanged"] + #[doc = " \\see libvlc_media_get_meta"] + #[doc = " \\see libvlc_media_get_tracklist"] + #[doc = " \\see libvlc_media_get_parsed_status"] + #[doc = " \\see libvlc_media_parse_flag_t"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param parse_flag parse options:"] + #[doc = " \\param timeout maximum time allowed to preparse the media. If -1, the"] + #[doc = " default \"preparse-timeout\" option will be used as a timeout. If 0, it will"] + #[doc = " wait indefinitely. If > 0, the timeout will be used (in milliseconds)."] + #[doc = " \\return -1 in case of error, 0 otherwise"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_parse_with_options( p_md: *mut libvlc_media_t, parse_flag: libvlc_media_parse_flag_t, @@ -1899,44 +2557,232 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Stop the parsing of the media"] + #[doc = ""] + #[doc = " When the media parsing is stopped, the libvlc_MediaParsedChanged event will"] + #[doc = " be sent with the libvlc_media_parsed_status_timeout status."] + #[doc = ""] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_parse_stop(p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Get Parsed status for media descriptor object."] + #[doc = ""] + #[doc = " \\see libvlc_MediaParsedChanged"] + #[doc = " \\see libvlc_media_parsed_status_t"] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\return a value of the libvlc_media_parsed_status_t enum"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_get_parsed_status( p_md: *mut libvlc_media_t, ) -> libvlc_media_parsed_status_t; } extern "C" { + #[doc = " Sets media descriptor's user_data. user_data is specialized data"] + #[doc = " accessed by the host application, VLC.framework uses it as a pointer to"] + #[doc = " an native object that references a libvlc_media_t pointer"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param p_new_user_data pointer to user data"] pub fn libvlc_media_set_user_data( p_md: *mut libvlc_media_t, p_new_user_data: *mut libc::c_void, ); } extern "C" { + #[doc = " Get media descriptor's user_data. user_data is specialized data"] + #[doc = " accessed by the host application, VLC.framework uses it as a pointer to"] + #[doc = " an native object that references a libvlc_media_t pointer"] + #[doc = ""] + #[doc = " \\see libvlc_media_set_user_data"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] pub fn libvlc_media_get_user_data(p_md: *mut libvlc_media_t) -> *mut libc::c_void; } extern "C" { - pub fn libvlc_media_tracks_get( + #[doc = " Get the track list for one type"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\note You need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function. Not doing this will result in"] + #[doc = " an empty list."] + #[doc = ""] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = " \\see libvlc_media_tracklist_count"] + #[doc = " \\see libvlc_media_tracklist_at"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param type type of the track list to request"] + #[doc = ""] + #[doc = " \\return a valid libvlc_media_tracklist_t or NULL in case of error, if there"] + #[doc = " is no track for a category, the returned list will have a size of 0, delete"] + #[doc = " with libvlc_media_tracklist_delete()"] + pub fn libvlc_media_get_tracklist( p_md: *mut libvlc_media_t, - tracks: *mut *mut *mut libvlc_media_track_t, - ) -> libc::c_uint; + type_: libvlc_track_type_t, + ) -> *mut libvlc_media_tracklist_t; } extern "C" { + #[doc = " Get codec description from media elementary stream"] + #[doc = ""] + #[doc = " Note, you need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_track_t"] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = ""] + #[doc = " \\param i_type i_type from libvlc_media_track_t"] + #[doc = " \\param i_codec i_codec or i_original_fourcc from libvlc_media_track_t"] + #[doc = ""] + #[doc = " \\return codec description"] pub fn libvlc_media_get_codec_description( i_type: libvlc_track_type_t, i_codec: u32, ) -> *const libc::c_char; } extern "C" { - pub fn libvlc_media_tracks_release( - p_tracks: *mut *mut libvlc_media_track_t, - i_count: libc::c_uint, - ); -} -extern "C" { + #[doc = " Get the media type of the media descriptor object"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_type_t"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = ""] + #[doc = " \\return media type"] pub fn libvlc_media_get_type(p_md: *mut libvlc_media_t) -> libvlc_media_type_t; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_media_thumbnail_request_t { + _unused: [u8; 0], +} +pub const libvlc_thumbnailer_seek_speed_t_libvlc_media_thumbnail_seek_precise: + libvlc_thumbnailer_seek_speed_t = 0; +pub const libvlc_thumbnailer_seek_speed_t_libvlc_media_thumbnail_seek_fast: + libvlc_thumbnailer_seek_speed_t = 1; +pub type libvlc_thumbnailer_seek_speed_t = libc::c_uint; extern "C" { + #[doc = " \\brief libvlc_media_request_thumbnail_by_time Start an asynchronous thumbnail generation"] + #[doc = ""] + #[doc = " If the request is successfully queued, the libvlc_MediaThumbnailGenerated"] + #[doc = " is guaranteed to be emitted."] + #[doc = " The resulting thumbnail size can either be:"] + #[doc = " - Hardcoded by providing both width & height. In which case, the image will"] + #[doc = " be stretched to match the provided aspect ratio, or cropped if crop is true."] + #[doc = " - Derived from the media aspect ratio if only width or height is provided and"] + #[doc = " the other one is set to 0."] + #[doc = ""] + #[doc = " \\param md media descriptor object"] + #[doc = " \\param time The time at which the thumbnail should be generated"] + #[doc = " \\param speed The seeking speed \\sa{libvlc_thumbnailer_seek_speed_t}"] + #[doc = " \\param width The thumbnail width"] + #[doc = " \\param height the thumbnail height"] + #[doc = " \\param crop Should the picture be cropped to preserve source aspect ratio"] + #[doc = " \\param picture_type The thumbnail picture type \\sa{libvlc_picture_type_t}"] + #[doc = " \\param timeout A timeout value in ms, or 0 to disable timeout"] + #[doc = ""] + #[doc = " \\return A valid opaque request object, or NULL in case of failure."] + #[doc = " It may be cancelled by libvlc_media_thumbnail_request_cancel()."] + #[doc = " It must be released by libvlc_media_thumbnail_request_destroy()."] + #[doc = ""] + #[doc = " \\version libvlc 4.0 or later"] + #[doc = ""] + #[doc = " \\see libvlc_picture_t"] + #[doc = " \\see libvlc_picture_type_t"] + pub fn libvlc_media_thumbnail_request_by_time( + md: *mut libvlc_media_t, + time: libvlc_time_t, + speed: libvlc_thumbnailer_seek_speed_t, + width: libc::c_uint, + height: libc::c_uint, + crop: bool, + picture_type: libvlc_picture_type_t, + timeout: libvlc_time_t, + ) -> *mut libvlc_media_thumbnail_request_t; +} +extern "C" { + #[doc = " \\brief libvlc_media_request_thumbnail_by_pos Start an asynchronous thumbnail generation"] + #[doc = ""] + #[doc = " If the request is successfully queued, the libvlc_MediaThumbnailGenerated"] + #[doc = " is guaranteed to be emitted."] + #[doc = " The resulting thumbnail size can either be:"] + #[doc = " - Hardcoded by providing both width & height. In which case, the image will"] + #[doc = " be stretched to match the provided aspect ratio, or cropped if crop is true."] + #[doc = " - Derived from the media aspect ratio if only width or height is provided and"] + #[doc = " the other one is set to 0."] + #[doc = ""] + #[doc = " \\param md media descriptor object"] + #[doc = " \\param pos The position at which the thumbnail should be generated"] + #[doc = " \\param speed The seeking speed \\sa{libvlc_thumbnailer_seek_speed_t}"] + #[doc = " \\param width The thumbnail width"] + #[doc = " \\param height the thumbnail height"] + #[doc = " \\param crop Should the picture be cropped to preserve source aspect ratio"] + #[doc = " \\param picture_type The thumbnail picture type \\sa{libvlc_picture_type_t}"] + #[doc = " \\param timeout A timeout value in ms, or 0 to disable timeout"] + #[doc = ""] + #[doc = " \\return A valid opaque request object, or NULL in case of failure."] + #[doc = " It may be cancelled by libvlc_media_thumbnail_request_cancel()."] + #[doc = " It must be released by libvlc_media_thumbnail_request_destroy()."] + #[doc = ""] + #[doc = " \\version libvlc 4.0 or later"] + #[doc = ""] + #[doc = " \\see libvlc_picture_t"] + #[doc = " \\see libvlc_picture_type_t"] + pub fn libvlc_media_thumbnail_request_by_pos( + md: *mut libvlc_media_t, + pos: f32, + speed: libvlc_thumbnailer_seek_speed_t, + width: libc::c_uint, + height: libc::c_uint, + crop: bool, + picture_type: libvlc_picture_type_t, + timeout: libvlc_time_t, + ) -> *mut libvlc_media_thumbnail_request_t; +} +extern "C" { + #[doc = " @brief libvlc_media_thumbnail_cancel cancels a thumbnailing request"] + #[doc = " @param p_req An opaque thumbnail request object."] + #[doc = ""] + #[doc = " Cancelling the request will still cause libvlc_MediaThumbnailGenerated event"] + #[doc = " to be emitted, with a NULL libvlc_picture_t"] + #[doc = " If the request is cancelled after its completion, the behavior is undefined."] + pub fn libvlc_media_thumbnail_request_cancel(p_req: *mut libvlc_media_thumbnail_request_t); +} +extern "C" { + #[doc = " @brief libvlc_media_thumbnail_destroy destroys a thumbnail request"] + #[doc = " @param p_req An opaque thumbnail request object."] + #[doc = ""] + #[doc = " If the request has not completed or hasn't been cancelled yet, the behavior"] + #[doc = " is undefined"] + pub fn libvlc_media_thumbnail_request_destroy(p_req: *mut libvlc_media_thumbnail_request_t); +} +extern "C" { + #[doc = " Add a slave to the current media."] + #[doc = ""] + #[doc = " A slave is an external input source that may contains an additional subtitle"] + #[doc = " track (like a .srt) or an additional audio track (like a .ac3)."] + #[doc = ""] + #[doc = " \\note This function must be called before the media is parsed (via"] + #[doc = " libvlc_media_parse_with_options()) or before the media is played (via"] + #[doc = " libvlc_media_player_play())"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param i_type subtitle or audio"] + #[doc = " \\param i_priority from 0 (low priority) to 4 (high priority)"] + #[doc = " \\param psz_uri Uri of the slave (should contain a valid scheme)."] + #[doc = ""] + #[doc = " \\return 0 on success, -1 on error."] pub fn libvlc_media_slaves_add( p_md: *mut libvlc_media_t, i_type: libvlc_media_slave_type_t, @@ -1945,15 +2791,42 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Clear all slaves previously added by libvlc_media_slaves_add() or"] + #[doc = " internally."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] pub fn libvlc_media_slaves_clear(p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Get a media descriptor's slave list"] + #[doc = ""] + #[doc = " The list will contain slaves parsed by VLC or previously added by"] + #[doc = " libvlc_media_slaves_add(). The typical use case of this function is to save"] + #[doc = " a list of slave in a database for a later use."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_slaves_add"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param ppp_slaves address to store an allocated array of slaves (must be"] + #[doc = " freed with libvlc_media_slaves_release()) [OUT]"] + #[doc = ""] + #[doc = " \\return the number of slaves (zero on error)"] pub fn libvlc_media_slaves_get( p_md: *mut libvlc_media_t, ppp_slaves: *mut *mut *mut libvlc_media_slave_t, ) -> libc::c_uint; } extern "C" { + #[doc = " Release a media descriptor's slave list"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param pp_slaves slave array to release"] + #[doc = " \\param i_count number of elements in the array"] pub fn libvlc_media_slaves_release( pp_slaves: *mut *mut libvlc_media_slave_t, i_count: libc::c_uint, @@ -1964,70 +2837,18 @@ extern "C" { pub struct libvlc_media_player_t { _unused: [u8; 0], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_track_description_t { - pub i_id: libc::c_int, - pub psz_name: *mut libc::c_char, - pub p_next: *mut libvlc_track_description_t, -} -#[test] -fn bindgen_test_layout_libvlc_track_description_t() { - assert_eq!( - ::core::mem::size_of::<libvlc_track_description_t>(), - 24usize, - concat!("Size of: ", stringify!(libvlc_track_description_t)) - ); - assert_eq!( - ::core::mem::align_of::<libvlc_track_description_t>(), - 8usize, - concat!("Alignment of ", stringify!(libvlc_track_description_t)) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_track_description_t>())).i_id as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_track_description_t), - "::", - stringify!(i_id) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_track_description_t>())).psz_name as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_track_description_t), - "::", - stringify!(psz_name) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_track_description_t>())).p_next as *const _ as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(libvlc_track_description_t), - "::", - stringify!(p_next) - ) - ); -} pub const libvlc_title_menu: libc::c_uint = 1; pub const libvlc_title_interactive: libc::c_uint = 2; +#[doc = " Description for titles"] pub type _bindgen_ty_2 = libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_title_description_t { + #[doc = "< duration in milliseconds"] pub i_duration: i64, + #[doc = "< title name"] pub psz_name: *mut libc::c_char, + #[doc = "< info if item was recognized as a menu, interactive or plain content by the demuxer"] pub i_flags: libc::c_uint, } #[test] @@ -2079,11 +2900,15 @@ fn bindgen_test_layout_libvlc_title_description_t() { ) ); } +#[doc = " Description for chapters"] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_chapter_description_t { + #[doc = "< time-offset of the chapter in milliseconds"] pub i_time_offset: i64, + #[doc = "< duration of the chapter in milliseconds"] pub i_duration: i64, + #[doc = "< chapter name"] pub psz_name: *mut libc::c_char, } #[test] @@ -2137,6 +2962,8 @@ fn bindgen_test_layout_libvlc_chapter_description_t() { ) ); } +#[doc = " Description for audio output. It contains"] +#[doc = " name, description and pointer to next record."] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_audio_output_t { @@ -2189,11 +3016,15 @@ fn bindgen_test_layout_libvlc_audio_output_t() { ) ); } +#[doc = " Description for audio output device."] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_audio_output_device_t { + #[doc = "< Next entry in list"] pub p_next: *mut libvlc_audio_output_device_t, + #[doc = "< Device identifier string"] pub psz_device: *mut libc::c_char, + #[doc = "< User-friendly device description"] pub psz_description: *mut libc::c_char, } #[test] @@ -2249,14 +3080,23 @@ fn bindgen_test_layout_libvlc_audio_output_device_t() { } pub const libvlc_video_marquee_option_t_libvlc_marquee_Enable: libvlc_video_marquee_option_t = 0; pub const libvlc_video_marquee_option_t_libvlc_marquee_Text: libvlc_video_marquee_option_t = 1; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Color: libvlc_video_marquee_option_t = 2; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Opacity: libvlc_video_marquee_option_t = 3; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Position: libvlc_video_marquee_option_t = 4; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Refresh: libvlc_video_marquee_option_t = 5; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Size: libvlc_video_marquee_option_t = 6; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Timeout: libvlc_video_marquee_option_t = 7; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_X: libvlc_video_marquee_option_t = 8; +#[doc = " string argument"] pub const libvlc_video_marquee_option_t_libvlc_marquee_Y: libvlc_video_marquee_option_t = 9; +#[doc = " Marq options definition"] pub type libvlc_video_marquee_option_t = libc::c_uint; pub const libvlc_navigate_mode_t_libvlc_navigate_activate: libvlc_navigate_mode_t = 0; pub const libvlc_navigate_mode_t_libvlc_navigate_up: libvlc_navigate_mode_t = 1; @@ -2264,6 +3104,7 @@ pub const libvlc_navigate_mode_t_libvlc_navigate_down: libvlc_navigate_mode_t = pub const libvlc_navigate_mode_t_libvlc_navigate_left: libvlc_navigate_mode_t = 3; pub const libvlc_navigate_mode_t_libvlc_navigate_right: libvlc_navigate_mode_t = 4; pub const libvlc_navigate_mode_t_libvlc_navigate_popup: libvlc_navigate_mode_t = 5; +#[doc = " Navigation mode"] pub type libvlc_navigate_mode_t = libc::c_uint; pub const libvlc_position_t_libvlc_position_disable: libvlc_position_t = -1; pub const libvlc_position_t_libvlc_position_center: libvlc_position_t = 0; @@ -2275,12 +3116,15 @@ pub const libvlc_position_t_libvlc_position_top_right: libvlc_position_t = 5; pub const libvlc_position_t_libvlc_position_bottom: libvlc_position_t = 6; pub const libvlc_position_t_libvlc_position_bottom_left: libvlc_position_t = 7; pub const libvlc_position_t_libvlc_position_bottom_right: libvlc_position_t = 8; +#[doc = " Enumeration of values used to set position (e.g. of video title)."] pub type libvlc_position_t = libc::c_int; pub const libvlc_teletext_key_t_libvlc_teletext_key_red: libvlc_teletext_key_t = 7471104; pub const libvlc_teletext_key_t_libvlc_teletext_key_green: libvlc_teletext_key_t = 6750208; pub const libvlc_teletext_key_t_libvlc_teletext_key_yellow: libvlc_teletext_key_t = 7929856; pub const libvlc_teletext_key_t_libvlc_teletext_key_blue: libvlc_teletext_key_t = 6422528; pub const libvlc_teletext_key_t_libvlc_teletext_key_index: libvlc_teletext_key_t = 6881280; +#[doc = " Enumeration of teletext keys than can be passed via"] +#[doc = " libvlc_video_set_teletext()"] pub type libvlc_teletext_key_t = libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -2288,62 +3132,209 @@ pub struct libvlc_equalizer_t { _unused: [u8; 0], } extern "C" { + #[doc = " Create an empty Media Player object"] + #[doc = ""] + #[doc = " \\param p_libvlc_instance the libvlc instance in which the Media Player"] + #[doc = " should be created."] + #[doc = " \\return a new media player object, or NULL on error."] + #[doc = " It must be released by libvlc_media_player_release()."] pub fn libvlc_media_player_new( p_libvlc_instance: *mut libvlc_instance_t, ) -> *mut libvlc_media_player_t; } extern "C" { + #[doc = " Create a Media Player object from a Media"] + #[doc = ""] + #[doc = " \\param p_md the media. Afterwards the p_md can be safely"] + #[doc = " destroyed."] + #[doc = " \\return a new media player object, or NULL on error."] + #[doc = " It must be released by libvlc_media_player_release()."] pub fn libvlc_media_player_new_from_media( p_md: *mut libvlc_media_t, ) -> *mut libvlc_media_player_t; } extern "C" { + #[doc = " Release a media_player after use"] + #[doc = " Decrement the reference count of a media player object. If the"] + #[doc = " reference count is 0, then libvlc_media_player_release() will"] + #[doc = " release the media player object. If the media player object"] + #[doc = " has been released, then it should not be used again."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player to free"] pub fn libvlc_media_player_release(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Retain a reference to a media player object. Use"] + #[doc = " libvlc_media_player_release() to decrement reference count."] + #[doc = ""] + #[doc = " \\param p_mi media player object"] pub fn libvlc_media_player_retain(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Set the media that will be used by the media_player. If any,"] + #[doc = " previous md will be released."] + #[doc = ""] + #[doc = " \\note The user should listen to the libvlc_MediaPlayerMediaChanged event, to"] + #[doc = " know when the new media is actually used by the player (or to known that the"] + #[doc = " older media is no longer used)."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param p_md the Media. Afterwards the p_md can be safely"] + #[doc = " destroyed."] pub fn libvlc_media_player_set_media( p_mi: *mut libvlc_media_player_t, p_md: *mut libvlc_media_t, ); } extern "C" { + #[doc = " Get the media used by the media_player."] + #[doc = ""] + #[doc = " \\warning Calling this function just after libvlc_media_player_set_media()"] + #[doc = " will return the media that was just set, but this media might not be"] + #[doc = " currently used internally by the player. To detect such case, the user"] + #[doc = " should listen to the libvlc_MediaPlayerMediaChanged event."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the media associated with p_mi, or NULL if no"] + #[doc = " media is associated"] pub fn libvlc_media_player_get_media(p_mi: *mut libvlc_media_player_t) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Get the Event Manager from which the media player send event."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the event manager associated with p_mi"] pub fn libvlc_media_player_event_manager( p_mi: *mut libvlc_media_player_t, ) -> *mut libvlc_event_manager_t; } extern "C" { - pub fn libvlc_media_player_is_playing(p_mi: *mut libvlc_media_player_t) -> libc::c_int; + #[doc = " is_playing"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\retval true media player is playing"] + #[doc = " \\retval false media player is not playing"] + pub fn libvlc_media_player_is_playing(p_mi: *mut libvlc_media_player_t) -> bool; } extern "C" { + #[doc = " Play"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return 0 if playback started (and was already started), or -1 on error."] pub fn libvlc_media_player_play(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Pause or resume (no effect if there is no media)"] + #[doc = ""] + #[doc = " \\param mp the Media Player"] + #[doc = " \\param do_pause play/resume if zero, pause if non-zero"] + #[doc = " \\version LibVLC 1.1.1 or later"] pub fn libvlc_media_player_set_pause(mp: *mut libvlc_media_player_t, do_pause: libc::c_int); } extern "C" { + #[doc = " Toggle pause (no effect if there is no media)"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] pub fn libvlc_media_player_pause(p_mi: *mut libvlc_media_player_t); } extern "C" { - pub fn libvlc_media_player_stop(p_mi: *mut libvlc_media_player_t); + #[doc = " Stop asynchronously"] + #[doc = ""] + #[doc = " \\note This function is asynchronous. In case of success, the user should"] + #[doc = " wait for the libvlc_MediaPlayerStopped event to know when the stop is"] + #[doc = " finished."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return 0 if the player is being stopped, -1 otherwise (no-op)"] + #[doc = " \\version LibVLC 4.0.0 or later"] + pub fn libvlc_media_player_stop_async(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set a renderer to the media player"] + #[doc = ""] + #[doc = " \\note must be called before the first call of libvlc_media_player_play() to"] + #[doc = " take effect."] + #[doc = ""] + #[doc = " \\see libvlc_renderer_discoverer_new"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param p_item an item discovered by libvlc_renderer_discoverer_start()"] + #[doc = " \\return 0 on success, -1 on error."] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_player_set_renderer( p_mi: *mut libvlc_media_player_t, p_item: *mut libvlc_renderer_item_t, ) -> libc::c_int; } +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_BT601_525: + libvlc_video_color_primaries_t = 1; +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_BT601_625: + libvlc_video_color_primaries_t = 2; +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_BT709: + libvlc_video_color_primaries_t = 3; +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_BT2020: + libvlc_video_color_primaries_t = 4; +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_DCI_P3: + libvlc_video_color_primaries_t = 5; +pub const libvlc_video_color_primaries_t_libvlc_video_primaries_BT470_M: + libvlc_video_color_primaries_t = 6; +#[doc = " Enumeration of the Video color primaries."] +pub type libvlc_video_color_primaries_t = libc::c_uint; +pub const libvlc_video_color_space_t_libvlc_video_colorspace_BT601: libvlc_video_color_space_t = 1; +pub const libvlc_video_color_space_t_libvlc_video_colorspace_BT709: libvlc_video_color_space_t = 2; +pub const libvlc_video_color_space_t_libvlc_video_colorspace_BT2020: libvlc_video_color_space_t = 3; +#[doc = " Enumeration of the Video color spaces."] +pub type libvlc_video_color_space_t = libc::c_uint; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_LINEAR: + libvlc_video_transfer_func_t = 1; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_SRGB: + libvlc_video_transfer_func_t = 2; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_BT470_BG: + libvlc_video_transfer_func_t = 3; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_BT470_M: + libvlc_video_transfer_func_t = 4; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_BT709: + libvlc_video_transfer_func_t = 5; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_PQ: libvlc_video_transfer_func_t = + 6; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_SMPTE_240: + libvlc_video_transfer_func_t = 7; +pub const libvlc_video_transfer_func_t_libvlc_video_transfer_func_HLG: + libvlc_video_transfer_func_t = 8; +#[doc = " Enumeration of the Video transfer functions."] +pub type libvlc_video_transfer_func_t = libc::c_uint; +#[doc = " Callback prototype to allocate and lock a picture buffer."] +#[doc = ""] +#[doc = " Whenever a new video frame needs to be decoded, the lock callback is"] +#[doc = " invoked. Depending on the video chroma, one or three pixel planes of"] +#[doc = " adequate dimensions must be returned via the second parameter. Those"] +#[doc = " planes must be aligned on 32-bytes boundaries."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer as passed to libvlc_video_set_callbacks()"] +#[doc = " \\param[out] planes start address of the pixel planes (LibVLC allocates the array"] +#[doc = " of void pointers, this callback must initialize the array)"] +#[doc = " \\return a private pointer for the display and unlock callbacks to identify"] +#[doc = " the picture buffers"] pub type libvlc_video_lock_cb = ::core::option::Option< unsafe extern "C" fn( opaque: *mut libc::c_void, planes: *mut *mut libc::c_void, ) -> *mut libc::c_void, >; +#[doc = " Callback prototype to unlock a picture buffer."] +#[doc = ""] +#[doc = " When the video frame decoding is complete, the unlock callback is invoked."] +#[doc = " This callback might not be needed at all. It is only an indication that the"] +#[doc = " application can now read the pixel values if it needs to."] +#[doc = ""] +#[doc = " \\note A picture buffer is unlocked after the picture is decoded,"] +#[doc = " but before the picture is displayed."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer as passed to libvlc_video_set_callbacks()"] +#[doc = " \\param[in] picture private pointer returned from the @ref libvlc_video_lock_cb"] +#[doc = " callback"] +#[doc = " \\param[in] planes pixel planes as defined by the @ref libvlc_video_lock_cb"] +#[doc = " callback (this parameter is only for convenience)"] pub type libvlc_video_unlock_cb = ::core::option::Option< unsafe extern "C" fn( opaque: *mut libc::c_void, @@ -2351,9 +3342,45 @@ pub type libvlc_video_unlock_cb = ::core::option::Option< planes: *const *mut libc::c_void, ), >; +#[doc = " Callback prototype to display a picture."] +#[doc = ""] +#[doc = " When the video frame needs to be shown, as determined by the media playback"] +#[doc = " clock, the display callback is invoked."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer as passed to libvlc_video_set_callbacks()"] +#[doc = " \\param[in] picture private pointer returned from the @ref libvlc_video_lock_cb"] +#[doc = " callback"] pub type libvlc_video_display_cb = ::core::option::Option< unsafe extern "C" fn(opaque: *mut libc::c_void, picture: *mut libc::c_void), >; +#[doc = " Callback prototype to configure picture buffers format."] +#[doc = " This callback gets the format of the video as output by the video decoder"] +#[doc = " and the chain of video filters (if any). It can opt to change any parameter"] +#[doc = " as it needs. In that case, LibVLC will attempt to convert the video format"] +#[doc = " (rescaling and chroma conversion) but these operations can be CPU intensive."] +#[doc = ""] +#[doc = " \\param[in,out] opaque pointer to the private pointer passed to"] +#[doc = " libvlc_video_set_callbacks()"] +#[doc = " \\param[in,out] chroma pointer to the 4 bytes video format identifier"] +#[doc = " \\param[in,out] width pointer to the buffer width in pixels"] +#[doc = " \\param[in,out] height pointer to the buffer height in pixels"] +#[doc = " \\param[out] pitches table of scanline pitches in bytes for each pixel plane"] +#[doc = " (the table is allocated by LibVLC)"] +#[doc = " \\param[out] lines table of scanlines count for each plane"] +#[doc = " \\return the number of picture buffers allocated, 0 indicates failure"] +#[doc = ""] +#[doc = " \\version LibVLC 4.0.0 and later."] +#[doc = " \\param[in] (width+1) - pointer to display width in pixels"] +#[doc = " \\param[in] (height+1) - pointer to display height in pixels"] +#[doc = ""] +#[doc = " \\note"] +#[doc = " For each pixels plane, the scanline pitch must be bigger than or equal to"] +#[doc = " the number of bytes per pixel multiplied by the pixel width."] +#[doc = " Similarly, the number of scanlines must be bigger than of equal to"] +#[doc = " the pixel height."] +#[doc = " Furthermore, we recommend that pitches and lines be multiple of 32"] +#[doc = " to not break assumptions that might be held by optimized code"] +#[doc = " in the video decoders, video filters and/or video converters."] pub type libvlc_video_format_cb = ::core::option::Option< unsafe extern "C" fn( opaque: *mut *mut libc::c_void, @@ -2364,9 +3391,48 @@ pub type libvlc_video_format_cb = ::core::option::Option< lines: *mut libc::c_uint, ) -> libc::c_uint, >; +#[doc = " Callback prototype to configure picture buffers format."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer as passed to libvlc_video_set_format_callbacks()"] +#[doc = " (and possibly modified by @ref libvlc_video_format_cb)"] pub type libvlc_video_cleanup_cb = ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void)>; extern "C" { + #[doc = " Set callbacks and private data to render decoded video to a custom area"] + #[doc = " in memory."] + #[doc = " Use libvlc_video_set_format() or libvlc_video_set_format_callbacks()"] + #[doc = " to configure the decoded format."] + #[doc = ""] + #[doc = " \\warning Rendering video into custom memory buffers is considerably less"] + #[doc = " efficient than rendering in a custom window as normal."] + #[doc = ""] + #[doc = " For optimal perfomances, VLC media player renders into a custom window, and"] + #[doc = " does not use this function and associated callbacks. It is <b>highly"] + #[doc = " recommended</b> that other LibVLC-based application do likewise."] + #[doc = " To embed video in a window, use libvlc_media_player_set_xwindow() or"] + #[doc = " equivalent depending on the operating system."] + #[doc = ""] + #[doc = " If window embedding does not fit the application use case, then a custom"] + #[doc = " LibVLC video output display plugin is required to maintain optimal video"] + #[doc = " rendering performances."] + #[doc = ""] + #[doc = " The following limitations affect performance:"] + #[doc = " - Hardware video decoding acceleration will either be disabled completely,"] + #[doc = " or require (relatively slow) copy from video/DSP memory to main memory."] + #[doc = " - Sub-pictures (subtitles, on-screen display, etc.) must be blent into the"] + #[doc = " main picture by the CPU instead of the GPU."] + #[doc = " - Depending on the video format, pixel format conversion, picture scaling,"] + #[doc = " cropping and/or picture re-orientation, must be performed by the CPU"] + #[doc = " instead of the GPU."] + #[doc = " - Memory copying is required between LibVLC reference picture buffers and"] + #[doc = " application buffers (between lock and unlock callbacks)."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param lock callback to lock video memory (must not be NULL)"] + #[doc = " \\param unlock callback to unlock video memory (or NULL if not needed)"] + #[doc = " \\param display callback to display video (or NULL if not needed)"] + #[doc = " \\param opaque private pointer for the three callbacks (as first parameter)"] + #[doc = " \\version LibVLC 1.1.1 or later"] pub fn libvlc_video_set_callbacks( mp: *mut libvlc_media_player_t, lock: libvlc_video_lock_cb, @@ -2376,6 +3442,20 @@ extern "C" { ); } extern "C" { + #[doc = " Set decoded video chroma and dimensions."] + #[doc = " This only works in combination with libvlc_video_set_callbacks(),"] + #[doc = " and is mutually exclusive with libvlc_video_set_format_callbacks()."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param chroma a four-characters string identifying the chroma"] + #[doc = " (e.g. \"RV32\" or \"YUYV\")"] + #[doc = " \\param width pixel width"] + #[doc = " \\param height pixel height"] + #[doc = " \\param pitch line pitch (in bytes)"] + #[doc = " \\version LibVLC 1.1.1 or later"] + #[doc = " \\bug All pixel planes are expected to have the same pitch."] + #[doc = " To use the YCbCr color space with chrominance subsampling,"] + #[doc = " consider using libvlc_video_set_format_callbacks() instead."] pub fn libvlc_video_set_format( mp: *mut libvlc_media_player_t, chroma: *const libc::c_char, @@ -2385,48 +3465,1051 @@ extern "C" { ); } extern "C" { + #[doc = " Set decoded video chroma and dimensions. This only works in combination with"] + #[doc = " libvlc_video_set_callbacks()."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param setup callback to select the video format (cannot be NULL)"] + #[doc = " \\param cleanup callback to release any allocated resources (or NULL)"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_video_set_format_callbacks( mp: *mut libvlc_media_player_t, setup: libvlc_video_format_cb, cleanup: libvlc_video_cleanup_cb, ); } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_setup_device_cfg_t { + pub hardware_decoding: bool, +} +#[test] +fn bindgen_test_layout_libvlc_video_setup_device_cfg_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_setup_device_cfg_t>(), + 1usize, + concat!("Size of: ", stringify!(libvlc_video_setup_device_cfg_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_setup_device_cfg_t>(), + 1usize, + concat!("Alignment of ", stringify!(libvlc_video_setup_device_cfg_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_cfg_t>())).hardware_decoding + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_cfg_t), + "::", + stringify!(hardware_decoding) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct libvlc_video_setup_device_info_t { + pub __bindgen_anon_1: libvlc_video_setup_device_info_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union libvlc_video_setup_device_info_t__bindgen_ty_1 { + pub d3d11: libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1, + pub d3d9: libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1 { + pub device_context: *mut libc::c_void, + #[doc = " ID3D11DeviceContext*"] + pub context_mutex: *mut libc::c_void, +} +#[test] +fn bindgen_test_layout_libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1>(), + 16usize, + concat!( + "Size of: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1>( + ))) + .device_context as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(device_context) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1>( + ))) + .context_mutex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(context_mutex) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2 { + pub device: *mut libc::c_void, + #[doc = " IDirect3D9*"] + pub adapter: libc::c_int, +} +#[test] +fn bindgen_test_layout_libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2>(), + 16usize, + concat!( + "Size of: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2>( + ))) + .device as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(device) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2>( + ))) + .adapter as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(adapter) + ) + ); +} +#[test] +fn bindgen_test_layout_libvlc_video_setup_device_info_t__bindgen_ty_1() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_setup_device_info_t__bindgen_ty_1>(), + 16usize, + concat!( + "Size of: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_setup_device_info_t__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1>())).d3d11 + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1), + "::", + stringify!(d3d11) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_setup_device_info_t__bindgen_ty_1>())).d3d9 + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_setup_device_info_t__bindgen_ty_1), + "::", + stringify!(d3d9) + ) + ); +} +#[test] +fn bindgen_test_layout_libvlc_video_setup_device_info_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_setup_device_info_t>(), + 16usize, + concat!("Size of: ", stringify!(libvlc_video_setup_device_info_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_setup_device_info_t>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_setup_device_info_t) + ) + ); +} +#[doc = " Callback prototype called to initialize user data."] +#[doc = " Setup the rendering environment."] +#[doc = ""] +#[doc = " \\param[in,out] opaque private pointer passed to the @a libvlc_video_set_output_callbacks()"] +#[doc = " on input. The callback can change this value on output to be"] +#[doc = " passed to all the other callbacks set on @a libvlc_video_set_output_callbacks()."] +#[doc = " \\param[in] cfg requested configuration of the video device"] +#[doc = " \\param[out] out libvlc_video_setup_device_info_t* to fill"] +#[doc = " \\return true on success"] +#[doc = " \\version LibVLC 4.0.0 or later"] +#[doc = ""] +#[doc = " For \\ref libvlc_video_engine_d3d9 the output must be a IDirect3D9*."] +#[doc = " A reference to this object is held until the \\ref libvlc_video_output_cleanup_cb is called."] +#[doc = " the device must be created with D3DPRESENT_PARAMETERS.hDeviceWindow set to 0."] +#[doc = ""] +#[doc = " For \\ref libvlc_video_engine_d3d11 the output must be a ID3D11DeviceContext*."] +#[doc = " A reference to this object is held until the \\ref libvlc_video_output_cleanup_cb is called."] +#[doc = " The ID3D11Device used to create ID3D11DeviceContext must have multithreading enabled."] +#[doc = ""] +#[doc = " If the ID3D11DeviceContext is used outside of the callbacks called by libvlc, the host"] +#[doc = " MUST use a mutex to protect the access to the ID3D11DeviceContext of libvlc. This mutex"] +#[doc = " value is set on d3d11.context_mutex. If the ID3D11DeviceContext is not used outside of"] +#[doc = " the callbacks, the mutex d3d11.context_mutex may be NULL."] +pub type libvlc_video_output_setup_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut *mut libc::c_void, + cfg: *const libvlc_video_setup_device_cfg_t, + out: *mut libvlc_video_setup_device_info_t, + ) -> bool, +>; +#[doc = " Callback prototype called to release user data"] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\version LibVLC 4.0.0 or later"] +pub type libvlc_video_output_cleanup_cb = + ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void)>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_render_cfg_t { + #[doc = " rendering video width in pixel"] + pub width: libc::c_uint, + #[doc = " rendering video height in pixel"] + pub height: libc::c_uint, + #[doc = " rendering video bit depth in bits per channel"] + pub bitdepth: libc::c_uint, + #[doc = " video is full range or studio/limited range"] + pub full_range: bool, + #[doc = " video color space"] + pub colorspace: libvlc_video_color_space_t, + #[doc = " video color primaries"] + pub primaries: libvlc_video_color_primaries_t, + #[doc = " video transfer function"] + pub transfer: libvlc_video_transfer_func_t, + #[doc = " device used for rendering, IDirect3DDevice9* for D3D9"] + pub device: *mut libc::c_void, +} +#[test] +fn bindgen_test_layout_libvlc_video_render_cfg_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_render_cfg_t>(), + 40usize, + concat!("Size of: ", stringify!(libvlc_video_render_cfg_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_render_cfg_t>(), + 8usize, + concat!("Alignment of ", stringify!(libvlc_video_render_cfg_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).width as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).height as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).bitdepth as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(bitdepth) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).full_range as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(full_range) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).colorspace as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(colorspace) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).primaries as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(primaries) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).transfer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(transfer) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_render_cfg_t>())).device as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_render_cfg_t), + "::", + stringify!(device) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct libvlc_video_output_cfg_t { + pub __bindgen_anon_1: libvlc_video_output_cfg_t__bindgen_ty_1, + #[doc = " Video is full range or studio/limited range."] + pub full_range: bool, + #[doc = " video color space"] + pub colorspace: libvlc_video_color_space_t, + #[doc = " video color primaries"] + pub primaries: libvlc_video_color_primaries_t, + #[doc = " video transfer function"] + pub transfer: libvlc_video_transfer_func_t, + #[doc = " video surface orientation"] + pub orientation: libvlc_video_orient_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union libvlc_video_output_cfg_t__bindgen_ty_1 { + #[doc = " The rendering DXGI_FORMAT for \\ref libvlc_video_engine_d3d11."] + pub dxgi_format: libc::c_int, + #[doc = " The rendering D3DFORMAT for \\ref libvlc_video_engine_d3d9."] + pub d3d9_format: u32, + #[doc = " The rendering GLint GL_RGBA or GL_RGB for"] + #[doc = " \\ref libvlc_video_engine_opengl and for"] + #[doc = " \\ref libvlc_video_engine_gles2."] + pub opengl_format: libc::c_int, + #[doc = " currently unused"] + pub p_surface: *mut libc::c_void, +} +#[test] +fn bindgen_test_layout_libvlc_video_output_cfg_t__bindgen_ty_1() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_output_cfg_t__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_output_cfg_t__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t__bindgen_ty_1>())).dxgi_format + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1), + "::", + stringify!(dxgi_format) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t__bindgen_ty_1>())).d3d9_format + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1), + "::", + stringify!(d3d9_format) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t__bindgen_ty_1>())).opengl_format + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1), + "::", + stringify!(opengl_format) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t__bindgen_ty_1>())).p_surface + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t__bindgen_ty_1), + "::", + stringify!(p_surface) + ) + ); +} +#[test] +fn bindgen_test_layout_libvlc_video_output_cfg_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_output_cfg_t>(), + 32usize, + concat!("Size of: ", stringify!(libvlc_video_output_cfg_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_output_cfg_t>(), + 8usize, + concat!("Alignment of ", stringify!(libvlc_video_output_cfg_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t>())).full_range as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t), + "::", + stringify!(full_range) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t>())).colorspace as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t), + "::", + stringify!(colorspace) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t>())).primaries as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t), + "::", + stringify!(primaries) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t>())).transfer as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t), + "::", + stringify!(transfer) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_output_cfg_t>())).orientation as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_output_cfg_t), + "::", + stringify!(orientation) + ) + ); +} +#[doc = " Callback prototype called on video size changes."] +#[doc = " Update the rendering output setup."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\param[in] cfg configuration of the video that will be rendered"] +#[doc = " \\param[out] output configuration describing with how the rendering is setup"] +#[doc = " \\version LibVLC 4.0.0 or later"] +#[doc = ""] +#[doc = " \\note the configuration device for Direct3D9 is the IDirect3DDevice9 that VLC"] +#[doc = " uses to render. The host must set a Render target and call Present()"] +#[doc = " when it needs the drawing from VLC to be done. This object is not valid"] +#[doc = " anymore after Cleanup is called."] +#[doc = ""] +#[doc = " Tone mapping, range and color conversion will be done depending on the values"] +#[doc = " set in the output structure."] +pub type libvlc_video_update_output_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut libc::c_void, + cfg: *const libvlc_video_render_cfg_t, + output: *mut libvlc_video_output_cfg_t, + ) -> bool, +>; +#[doc = " Callback prototype called after performing drawing calls."] +#[doc = ""] +#[doc = " This callback is called outside of libvlc_video_makeCurrent_cb current/not-current"] +#[doc = " calls."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\version LibVLC 4.0.0 or later"] +pub type libvlc_video_swap_cb = + ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void)>; +#[doc = " Callback prototype to set up the OpenGL context for rendering."] +#[doc = " Tell the host the rendering is about to start/has finished."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\param[in] enter true to set the context as current, false to unset it"] +#[doc = " \\return true on success"] +#[doc = " \\version LibVLC 4.0.0 or later"] +#[doc = ""] +#[doc = " On Direct3D11 the following may change on the provided ID3D11DeviceContext*"] +#[doc = " between \\p enter being true and \\p enter being false:"] +#[doc = " - IASetPrimitiveTopology()"] +#[doc = " - IASetInputLayout()"] +#[doc = " - IASetVertexBuffers()"] +#[doc = " - IASetIndexBuffer()"] +#[doc = " - VSSetConstantBuffers()"] +#[doc = " - VSSetShader()"] +#[doc = " - PSSetSamplers()"] +#[doc = " - PSSetConstantBuffers()"] +#[doc = " - PSSetShaderResources()"] +#[doc = " - PSSetShader()"] +#[doc = " - RSSetViewports()"] +#[doc = " - DrawIndexed()"] +pub type libvlc_video_makeCurrent_cb = + ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void, enter: bool) -> bool>; +#[doc = " Callback prototype to load opengl functions"] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\param fct_name name of the opengl function to load"] +#[doc = " \\return a pointer to the named OpenGL function the NULL otherwise"] +#[doc = " \\version LibVLC 4.0.0 or later"] +pub type libvlc_video_getProcAddress_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut libc::c_void, + fct_name: *const libc::c_char, + ) -> *mut libc::c_void, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_video_frame_hdr10_metadata_t { + pub RedPrimary: [u16; 2usize], + pub GreenPrimary: [u16; 2usize], + pub BluePrimary: [u16; 2usize], + pub WhitePoint: [u16; 2usize], + pub MaxMasteringLuminance: libc::c_uint, + pub MinMasteringLuminance: libc::c_uint, + pub MaxContentLightLevel: u16, + pub MaxFrameAverageLightLevel: u16, +} +#[test] +fn bindgen_test_layout_libvlc_video_frame_hdr10_metadata_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_video_frame_hdr10_metadata_t>(), + 28usize, + concat!("Size of: ", stringify!(libvlc_video_frame_hdr10_metadata_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_video_frame_hdr10_metadata_t>(), + 4usize, + concat!( + "Alignment of ", + stringify!(libvlc_video_frame_hdr10_metadata_t) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).RedPrimary as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(RedPrimary) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).GreenPrimary + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(GreenPrimary) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).BluePrimary as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(BluePrimary) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).WhitePoint as *const _ + as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(WhitePoint) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).MaxMasteringLuminance + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(MaxMasteringLuminance) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).MinMasteringLuminance + as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(MinMasteringLuminance) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())).MaxContentLightLevel + as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(MaxContentLightLevel) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_video_frame_hdr10_metadata_t>())) + .MaxFrameAverageLightLevel as *const _ as usize + }, + 26usize, + concat!( + "Offset of field: ", + stringify!(libvlc_video_frame_hdr10_metadata_t), + "::", + stringify!(MaxFrameAverageLightLevel) + ) + ); +} +#[doc = "< libvlc_video_frame_hdr10_metadata_t"] +pub const libvlc_video_metadata_type_t_libvlc_video_metadata_frame_hdr10: + libvlc_video_metadata_type_t = 0; +pub type libvlc_video_metadata_type_t = libc::c_uint; +#[doc = " Callback prototype to receive metadata before rendering."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer passed to the @a libvlc_video_set_output_callbacks()"] +#[doc = " \\param[in] type type of data passed in metadata"] +#[doc = " \\param[in] metadata the type of metadata"] +#[doc = " \\version LibVLC 4.0.0 or later"] +pub type libvlc_video_frameMetadata_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut libc::c_void, + type_: libvlc_video_metadata_type_t, + metadata: *const libc::c_void, + ), +>; +#[doc = " Disable rendering engine"] +pub const libvlc_video_engine_t_libvlc_video_engine_disable: libvlc_video_engine_t = 0; +#[doc = " Disable rendering engine"] +pub const libvlc_video_engine_t_libvlc_video_engine_opengl: libvlc_video_engine_t = 1; +#[doc = " Disable rendering engine"] +pub const libvlc_video_engine_t_libvlc_video_engine_gles2: libvlc_video_engine_t = 2; +#[doc = " Direct3D11 rendering engine"] +pub const libvlc_video_engine_t_libvlc_video_engine_d3d11: libvlc_video_engine_t = 3; +#[doc = " Direct3D9 rendering engine"] +pub const libvlc_video_engine_t_libvlc_video_engine_d3d9: libvlc_video_engine_t = 4; +#[doc = " Enumeration of the Video engine to be used on output."] +#[doc = " can be passed to @a libvlc_video_set_output_callbacks"] +pub type libvlc_video_engine_t = libc::c_uint; +#[doc = " Callback type that can be called to request a render size changes."] +#[doc = ""] +#[doc = " libvlc will provide a callback of this type when calling \\ref libvlc_video_output_set_resize_cb."] +#[doc = ""] +#[doc = " \\param report_opaque parameter passed to \\ref libvlc_video_output_set_resize_cb. [IN]"] +#[doc = " \\param width new rendering width requested. [IN]"] +#[doc = " \\param height new rendering height requested. [IN]"] +pub type libvlc_video_output_resize_cb = ::core::option::Option< + unsafe extern "C" fn( + report_opaque: *mut libc::c_void, + width: libc::c_uint, + height: libc::c_uint, + ), +>; +#[doc = " Set the callback to call when the host app resizes the rendering area."] +#[doc = ""] +#[doc = " This allows text rendering and aspect ratio to be handled properly when the host"] +#[doc = " rendering size changes."] +#[doc = ""] +#[doc = " It may be called before the \\ref libvlc_video_output_setup_cb callback."] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\param[in] report_size_change callback which must be called when the host size changes."] +#[doc = " The callback is valid until another call to \\ref libvlc_video_output_set_resize_cb"] +#[doc = " is done. This may be called from any thread."] +#[doc = " \\param[in] report_opaque private pointer to pass to the \\ref report_size_change callback."] +pub type libvlc_video_output_set_resize_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut libc::c_void, + report_size_change: libvlc_video_output_resize_cb, + report_opaque: *mut libc::c_void, + ), +>; +#[doc = " Tell the host the rendering for the given plane is about to start"] +#[doc = ""] +#[doc = " \\param[in] opaque private pointer set on the opaque parameter of @a libvlc_video_output_setup_cb()"] +#[doc = " \\param plane number of the rendering plane to select"] +#[doc = " \\param output handle of the rendering output for the given plane"] +#[doc = " \\return true on success"] +#[doc = " \\version LibVLC 4.0.0 or later"] +#[doc = ""] +#[doc = " \\note This is only used with \\ref libvlc_video_engine_d3d11."] +#[doc = ""] +#[doc = " The output parameter receives the ID3D11RenderTargetView* to use for rendering"] +#[doc = " the plane."] +#[doc = ""] +#[doc = " If this callback is not used (set to NULL in @a libvlc_video_set_output_callbacks())"] +#[doc = " OMSetRenderTargets has to be set during the @a libvlc_video_makeCurrent_cb()"] +#[doc = " entering call."] +#[doc = ""] +#[doc = " The number of planes depend on the DXGI_FORMAT returned during the"] +#[doc = " @a libvlc_video_update_output_cb() call. It's usually one plane except for"] +#[doc = " semi-planar formats like DXGI_FORMAT_NV12 or DXGI_FORMAT_P010."] +#[doc = ""] +#[doc = " This callback is called between libvlc_video_makeCurrent_cb current/not-current"] +#[doc = " calls."] +pub type libvlc_video_output_select_plane_cb = ::core::option::Option< + unsafe extern "C" fn( + opaque: *mut libc::c_void, + plane: size_t, + output: *mut libc::c_void, + ) -> bool, +>; extern "C" { + #[doc = " Set callbacks and data to render decoded video to a custom texture"] + #[doc = ""] + #[doc = " \\warning VLC will perform video rendering in its own thread and at its own rate,"] + #[doc = " You need to provide your own synchronisation mechanism."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param engine the GPU engine to use"] + #[doc = " \\param setup_cb callback called to initialize user data"] + #[doc = " \\param cleanup_cb callback called to clean up user data"] + #[doc = " \\param resize_cb callback to set the resize callback"] + #[doc = " \\param update_output_cb callback to get the rendering format of the host (cannot be NULL)"] + #[doc = " \\param swap_cb callback called after rendering a video frame (cannot be NULL)"] + #[doc = " \\param makeCurrent_cb callback called to enter/leave the rendering context (cannot be NULL)"] + #[doc = " \\param getProcAddress_cb opengl function loading callback (cannot be NULL for \\ref libvlc_video_engine_opengl and for \\ref libvlc_video_engine_gles2)"] + #[doc = " \\param metadata_cb callback to provide frame metadata (D3D11 only)"] + #[doc = " \\param select_plane_cb callback to select different D3D11 rendering targets"] + #[doc = " \\param opaque private pointer passed to callbacks"] + #[doc = ""] + #[doc = " \\note the \\p setup_cb and \\p cleanup_cb may be called more than once per"] + #[doc = " playback."] + #[doc = ""] + #[doc = " \\retval true engine selected and callbacks set"] + #[doc = " \\retval false engine type unknown, callbacks not set"] + #[doc = " \\version LibVLC 4.0.0 or later"] + pub fn libvlc_video_set_output_callbacks( + mp: *mut libvlc_media_player_t, + engine: libvlc_video_engine_t, + setup_cb: libvlc_video_output_setup_cb, + cleanup_cb: libvlc_video_output_cleanup_cb, + resize_cb: libvlc_video_output_set_resize_cb, + update_output_cb: libvlc_video_update_output_cb, + swap_cb: libvlc_video_swap_cb, + makeCurrent_cb: libvlc_video_makeCurrent_cb, + getProcAddress_cb: libvlc_video_getProcAddress_cb, + metadata_cb: libvlc_video_frameMetadata_cb, + select_plane_cb: libvlc_video_output_select_plane_cb, + opaque: *mut libc::c_void, + ) -> bool; +} +extern "C" { + #[doc = " Set the NSView handler where the media player should render its video output."] + #[doc = ""] + #[doc = " Use the vout called \"macosx\"."] + #[doc = ""] + #[doc = " The drawable is an NSObject that follow the VLCVideoViewEmbedding"] + #[doc = " protocol:"] + #[doc = ""] + #[doc = " @code{.m}"] + #[doc = " @protocol VLCVideoViewEmbedding <NSObject>"] + #[doc = " - (void)addVoutSubview:(NSView *)view;"] + #[doc = " - (void)removeVoutSubview:(NSView *)view;"] + #[doc = " @end"] + #[doc = " @endcode"] + #[doc = ""] + #[doc = " Or it can be an NSView object."] + #[doc = ""] + #[doc = " If you want to use it along with Qt see the QMacCocoaViewContainer. Then"] + #[doc = " the following code should work:"] + #[doc = " @code{.mm}"] + #[doc = " {"] + #[doc = " NSView *video = [[NSView alloc] init];"] + #[doc = " QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent);"] + #[doc = " libvlc_media_player_set_nsobject(mp, video);"] + #[doc = " [video release];"] + #[doc = " }"] + #[doc = " @endcode"] + #[doc = ""] + #[doc = " You can find a live example in VLCVideoView in VLCKit.framework."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param drawable the drawable that is either an NSView or an object following"] + #[doc = " the VLCVideoViewEmbedding protocol."] pub fn libvlc_media_player_set_nsobject( p_mi: *mut libvlc_media_player_t, drawable: *mut libc::c_void, ); } extern "C" { + #[doc = " Get the NSView handler previously set with libvlc_media_player_set_nsobject()."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the NSView handler or 0 if none where set"] pub fn libvlc_media_player_get_nsobject(p_mi: *mut libvlc_media_player_t) -> *mut libc::c_void; } extern "C" { + #[doc = " Set an X Window System drawable where the media player should render its"] + #[doc = " video output. The call takes effect when the playback starts. If it is"] + #[doc = " already started, it might need to be stopped before changes apply."] + #[doc = " If LibVLC was built without X11 output support, then this function has no"] + #[doc = " effects."] + #[doc = ""] + #[doc = " By default, LibVLC will capture input events on the video rendering area."] + #[doc = " Use libvlc_video_set_mouse_input() and libvlc_video_set_key_input() to"] + #[doc = " disable that and deliver events to the parent window / to the application"] + #[doc = " instead. By design, the X11 protocol delivers input events to only one"] + #[doc = " recipient."] + #[doc = ""] + #[doc = " \\warning"] + #[doc = " The application must call the XInitThreads() function from Xlib before"] + #[doc = " libvlc_new(), and before any call to XOpenDisplay() directly or via any"] + #[doc = " other library. Failure to call XInitThreads() will seriously impede LibVLC"] + #[doc = " performance. Calling XOpenDisplay() before XInitThreads() will eventually"] + #[doc = " crash the process. That is a limitation of Xlib."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param drawable X11 window ID"] + #[doc = ""] + #[doc = " \\note"] + #[doc = " The specified identifier must correspond to an existing Input/Output class"] + #[doc = " X11 window. Pixmaps are <b>not</b> currently supported. The default X11"] + #[doc = " server is assumed, i.e. that specified in the DISPLAY environment variable."] + #[doc = ""] + #[doc = " \\warning"] + #[doc = " LibVLC can deal with invalid X11 handle errors, however some display drivers"] + #[doc = " (EGL, GLX, VA and/or VDPAU) can unfortunately not. Thus the window handle"] + #[doc = " must remain valid until playback is stopped, otherwise the process may"] + #[doc = " abort or crash."] + #[doc = ""] + #[doc = " \\bug"] + #[doc = " No more than one window handle per media player instance can be specified."] + #[doc = " If the media has multiple simultaneously active video tracks, extra tracks"] + #[doc = " will be rendered into external windows beyond the control of the"] + #[doc = " application."] pub fn libvlc_media_player_set_xwindow(p_mi: *mut libvlc_media_player_t, drawable: u32); } extern "C" { + #[doc = " Get the X Window System window identifier previously set with"] + #[doc = " libvlc_media_player_set_xwindow(). Note that this will return the identifier"] + #[doc = " even if VLC is not currently using it (for instance if it is playing an"] + #[doc = " audio-only input)."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return an X window ID, or 0 if none where set."] pub fn libvlc_media_player_get_xwindow(p_mi: *mut libvlc_media_player_t) -> u32; } extern "C" { + #[doc = " Set a Win32/Win64 API window handle (HWND) where the media player should"] + #[doc = " render its video output. If LibVLC was built without Win32/Win64 API output"] + #[doc = " support, then this has no effects."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param drawable windows handle of the drawable"] pub fn libvlc_media_player_set_hwnd( p_mi: *mut libvlc_media_player_t, drawable: *mut libc::c_void, ); } extern "C" { + #[doc = " Get the Windows API window handle (HWND) previously set with"] + #[doc = " libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC"] + #[doc = " is not currently outputting any video to it."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return a window handle or NULL if there are none."] pub fn libvlc_media_player_get_hwnd(p_mi: *mut libvlc_media_player_t) -> *mut libc::c_void; } extern "C" { + #[doc = " Set the android context."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param p_awindow_handler org.videolan.libvlc.AWindow jobject owned by the"] + #[doc = " org.videolan.libvlc.MediaPlayer class from the libvlc-android project."] pub fn libvlc_media_player_set_android_context( p_mi: *mut libvlc_media_player_t, p_awindow_handler: *mut libc::c_void, ); } -extern "C" { - pub fn libvlc_media_player_set_evas_object( - p_mi: *mut libvlc_media_player_t, - p_evas_object: *mut libc::c_void, - ) -> libc::c_int; -} +#[doc = " Callback prototype for audio playback."] +#[doc = ""] +#[doc = " The LibVLC media player decodes and post-processes the audio signal"] +#[doc = " asynchronously (in an internal thread). Whenever audio samples are ready"] +#[doc = " to be queued to the output, this callback is invoked."] +#[doc = ""] +#[doc = " The number of samples provided per invocation may depend on the file format,"] +#[doc = " the audio coding algorithm, the decoder plug-in, the post-processing"] +#[doc = " filters and timing. Application must not assume a certain number of samples."] +#[doc = ""] +#[doc = " The exact format of audio samples is determined by libvlc_audio_set_format()"] +#[doc = " or libvlc_audio_set_format_callbacks() as is the channels layout."] +#[doc = ""] +#[doc = " Note that the number of samples is per channel. For instance, if the audio"] +#[doc = " track sampling rate is 48000 Hz, then 1200 samples represent 25 milliseconds"] +#[doc = " of audio signal - regardless of the number of audio channels."] +#[doc = ""] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] +#[doc = " \\param[in] samples pointer to a table of audio samples to play back"] +#[doc = " \\param count number of audio samples to play back"] +#[doc = " \\param pts expected play time stamp (see libvlc_delay())"] pub type libvlc_audio_play_cb = ::core::option::Option< unsafe extern "C" fn( data: *mut libc::c_void, @@ -2435,17 +4518,66 @@ pub type libvlc_audio_play_cb = ::core::option::Option< pts: i64, ), >; +#[doc = " Callback prototype for audio pause."] +#[doc = ""] +#[doc = " LibVLC invokes this callback to pause audio playback."] +#[doc = ""] +#[doc = " \\note The pause callback is never called if the audio is already paused."] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] +#[doc = " \\param pts time stamp of the pause request (should be elapsed already)"] pub type libvlc_audio_pause_cb = ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void, pts: i64)>; +#[doc = " Callback prototype for audio resumption."] +#[doc = ""] +#[doc = " LibVLC invokes this callback to resume audio playback after it was"] +#[doc = " previously paused."] +#[doc = ""] +#[doc = " \\note The resume callback is never called if the audio is not paused."] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] +#[doc = " \\param pts time stamp of the resumption request (should be elapsed already)"] pub type libvlc_audio_resume_cb = ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void, pts: i64)>; +#[doc = " Callback prototype for audio buffer flush."] +#[doc = ""] +#[doc = " LibVLC invokes this callback if it needs to discard all pending buffers and"] +#[doc = " stop playback as soon as possible. This typically occurs when the media is"] +#[doc = " stopped."] +#[doc = ""] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] pub type libvlc_audio_flush_cb = ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void, pts: i64)>; +#[doc = " Callback prototype for audio buffer drain."] +#[doc = ""] +#[doc = " LibVLC may invoke this callback when the decoded audio track is ending."] +#[doc = " There will be no further decoded samples for the track, but playback should"] +#[doc = " nevertheless continue until all already pending buffers are rendered."] +#[doc = ""] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] pub type libvlc_audio_drain_cb = ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void)>; +#[doc = " Callback prototype for audio volume change."] +#[doc = " \\param[in] data data pointer as passed to libvlc_audio_set_callbacks()"] +#[doc = " \\param volume software volume (1. = nominal, 0. = mute)"] +#[doc = " \\param mute muted flag"] pub type libvlc_audio_set_volume_cb = ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void, volume: f32, mute: bool)>; extern "C" { + #[doc = " Sets callbacks and private data for decoded audio."] + #[doc = ""] + #[doc = " Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks()"] + #[doc = " to configure the decoded audio format."] + #[doc = ""] + #[doc = " \\note The audio callbacks override any other audio output mechanism."] + #[doc = " If the callbacks are set, LibVLC will <b>not</b> output audio in any way."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param play callback to play audio samples (must not be NULL)"] + #[doc = " \\param pause callback to pause playback (or NULL to ignore)"] + #[doc = " \\param resume callback to resume playback (or NULL to ignore)"] + #[doc = " \\param flush callback to flush audio buffers (or NULL to ignore)"] + #[doc = " \\param drain callback to drain audio buffers (or NULL to ignore)"] + #[doc = " \\param opaque private pointer for the audio callbacks (as first parameter)"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_audio_set_callbacks( mp: *mut libvlc_media_player_t, play: libvlc_audio_play_cb, @@ -2457,22 +4589,52 @@ extern "C" { ); } extern "C" { + #[doc = " Set callbacks and private data for decoded audio. This only works in"] + #[doc = " combination with libvlc_audio_set_callbacks()."] + #[doc = " Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks()"] + #[doc = " to configure the decoded audio format."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param set_volume callback to apply audio volume,"] + #[doc = " or NULL to apply volume in software"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_audio_set_volume_callback( mp: *mut libvlc_media_player_t, set_volume: libvlc_audio_set_volume_cb, ); } +#[doc = " Callback prototype to setup the audio playback."] +#[doc = ""] +#[doc = " This is called when the media player needs to create a new audio output."] +#[doc = " \\param[in,out] opaque pointer to the data pointer passed to"] +#[doc = " libvlc_audio_set_callbacks()"] +#[doc = " \\param[in,out] format 4 bytes sample format"] +#[doc = " \\param[in,out] rate sample rate"] +#[doc = " \\param[in,out] channels channels count"] +#[doc = " \\return 0 on success, anything else to skip audio playback"] pub type libvlc_audio_setup_cb = ::core::option::Option< unsafe extern "C" fn( - data: *mut *mut libc::c_void, + opaque: *mut *mut libc::c_void, format: *mut libc::c_char, rate: *mut libc::c_uint, channels: *mut libc::c_uint, ) -> libc::c_int, >; +#[doc = " Callback prototype for audio playback cleanup."] +#[doc = ""] +#[doc = " This is called when the media player no longer needs an audio output."] +#[doc = " \\param[in] opaque data pointer as passed to libvlc_audio_set_callbacks()"] pub type libvlc_audio_cleanup_cb = - ::core::option::Option<unsafe extern "C" fn(data: *mut libc::c_void)>; + ::core::option::Option<unsafe extern "C" fn(opaque: *mut libc::c_void)>; extern "C" { + #[doc = " Sets decoded audio format via callbacks."] + #[doc = ""] + #[doc = " This only works in combination with libvlc_audio_set_callbacks()."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param setup callback to select the audio format (cannot be NULL)"] + #[doc = " \\param cleanup callback to release any allocated resources (or NULL)"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_audio_set_format_callbacks( mp: *mut libvlc_media_player_t, setup: libvlc_audio_setup_cb, @@ -2480,6 +4642,24 @@ extern "C" { ); } extern "C" { + #[doc = " Sets a fixed decoded audio format."] + #[doc = ""] + #[doc = " This only works in combination with libvlc_audio_set_callbacks(),"] + #[doc = " and is mutually exclusive with libvlc_audio_set_format_callbacks()."] + #[doc = ""] + #[doc = " The supported formats are:"] + #[doc = " - \"S16N\" for signed 16-bit PCM"] + #[doc = " - \"S32N\" for signed 32-bit PCM"] + #[doc = " - \"FL32\" for single precision IEEE 754"] + #[doc = ""] + #[doc = " All supported formats use the native endianess."] + #[doc = " If there are more than one channel, samples are interleaved."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param format a four-characters string identifying the sample format"] + #[doc = " \\param rate sample rate (expressed in Hz)"] + #[doc = " \\param channels channels count"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_audio_set_format( mp: *mut libvlc_media_player_t, format: *const libc::c_char, @@ -2488,85 +4668,203 @@ extern "C" { ); } extern "C" { + #[doc = " Get the current movie length (in ms)."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the movie length (in ms), or -1 if there is no media."] pub fn libvlc_media_player_get_length(p_mi: *mut libvlc_media_player_t) -> libvlc_time_t; } extern "C" { + #[doc = " Get the current movie time (in ms)."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the movie time (in ms), or -1 if there is no media."] pub fn libvlc_media_player_get_time(p_mi: *mut libvlc_media_player_t) -> libvlc_time_t; } extern "C" { - pub fn libvlc_media_player_set_time(p_mi: *mut libvlc_media_player_t, i_time: libvlc_time_t); + #[doc = " Set the movie time (in ms). This has no effect if no media is being played."] + #[doc = " Not all formats and protocols support this."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param b_fast prefer fast seeking or precise seeking"] + #[doc = " \\param i_time the movie time (in ms)."] + #[doc = " \\return 0 on success, -1 on error"] + pub fn libvlc_media_player_set_time( + p_mi: *mut libvlc_media_player_t, + i_time: libvlc_time_t, + b_fast: bool, + ) -> libc::c_int; } extern "C" { + #[doc = " Get movie position as percentage between 0.0 and 1.0."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return movie position, or -1. in case of error"] pub fn libvlc_media_player_get_position(p_mi: *mut libvlc_media_player_t) -> f32; } extern "C" { - pub fn libvlc_media_player_set_position(p_mi: *mut libvlc_media_player_t, f_pos: f32); + #[doc = " Set movie position as percentage between 0.0 and 1.0."] + #[doc = " This has no effect if playback is not enabled."] + #[doc = " This might not work depending on the underlying input format and protocol."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param b_fast prefer fast seeking or precise seeking"] + #[doc = " \\param f_pos the position"] + #[doc = " \\return 0 on success, -1 on error"] + pub fn libvlc_media_player_set_position( + p_mi: *mut libvlc_media_player_t, + f_pos: f32, + b_fast: bool, + ) -> libc::c_int; } extern "C" { + #[doc = " Set movie chapter (if applicable)."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param i_chapter chapter number to play"] pub fn libvlc_media_player_set_chapter( p_mi: *mut libvlc_media_player_t, i_chapter: libc::c_int, ); } extern "C" { + #[doc = " Get movie chapter."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return chapter number currently playing, or -1 if there is no media."] pub fn libvlc_media_player_get_chapter(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Get movie chapter count"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return number of chapters in movie, or -1."] pub fn libvlc_media_player_get_chapter_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { - pub fn libvlc_media_player_will_play(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { + #[doc = " Get title chapter count"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param i_title title"] + #[doc = " \\return number of chapters in title, or -1"] pub fn libvlc_media_player_get_chapter_count_for_title( p_mi: *mut libvlc_media_player_t, i_title: libc::c_int, ) -> libc::c_int; } extern "C" { + #[doc = " Set movie title"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param i_title title number to play"] pub fn libvlc_media_player_set_title(p_mi: *mut libvlc_media_player_t, i_title: libc::c_int); } extern "C" { + #[doc = " Get movie title"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return title number currently playing, or -1"] pub fn libvlc_media_player_get_title(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Get movie title count"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return title number count, or -1"] pub fn libvlc_media_player_get_title_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set previous chapter (if applicable)"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] pub fn libvlc_media_player_previous_chapter(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Set next chapter (if applicable)"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] pub fn libvlc_media_player_next_chapter(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Get the requested movie play rate."] + #[doc = " @warning Depending on the underlying media, the requested rate may be"] + #[doc = " different from the real playback rate."] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return movie play rate"] pub fn libvlc_media_player_get_rate(p_mi: *mut libvlc_media_player_t) -> f32; } extern "C" { + #[doc = " Set movie play rate"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param rate movie play rate to set"] + #[doc = " \\return -1 if an error was detected, 0 otherwise (but even then, it might"] + #[doc = " not actually work depending on the underlying media protocol)"] pub fn libvlc_media_player_set_rate(p_mi: *mut libvlc_media_player_t, rate: f32) -> libc::c_int; } extern "C" { + #[doc = " Get current movie state"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\return the current state of the media player (playing, paused, ...) \\see libvlc_state_t"] pub fn libvlc_media_player_get_state(p_mi: *mut libvlc_media_player_t) -> libvlc_state_t; } extern "C" { + #[doc = " How many video outputs does this media player have?"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the number of video outputs"] pub fn libvlc_media_player_has_vout(p_mi: *mut libvlc_media_player_t) -> libc::c_uint; } extern "C" { - pub fn libvlc_media_player_is_seekable(p_mi: *mut libvlc_media_player_t) -> libc::c_int; + #[doc = " Is this media player seekable?"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\retval true media player can seek"] + #[doc = " \\retval false media player cannot seek"] + pub fn libvlc_media_player_is_seekable(p_mi: *mut libvlc_media_player_t) -> bool; } extern "C" { - pub fn libvlc_media_player_can_pause(p_mi: *mut libvlc_media_player_t) -> libc::c_int; + #[doc = " Can this media player be paused?"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\retval true media player can be paused"] + #[doc = " \\retval false media player cannot be paused"] + pub fn libvlc_media_player_can_pause(p_mi: *mut libvlc_media_player_t) -> bool; } extern "C" { - pub fn libvlc_media_player_program_scrambled(p_mi: *mut libvlc_media_player_t) -> libc::c_int; + #[doc = " Check if the current program is scrambled"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\retval true current program is scrambled"] + #[doc = " \\retval false current program is not scrambled"] + #[doc = ""] + #[doc = " \\version LibVLC 2.2.0 or later"] + pub fn libvlc_media_player_program_scrambled(p_mi: *mut libvlc_media_player_t) -> bool; } extern "C" { + #[doc = " Display the next frame (if supported)"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] pub fn libvlc_media_player_next_frame(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Navigate through DVD Menu"] + #[doc = ""] + #[doc = " \\param p_mi the Media Player"] + #[doc = " \\param navigate the Navigation mode"] + #[doc = " \\version libVLC 2.0.0 or later"] pub fn libvlc_media_player_navigate(p_mi: *mut libvlc_media_player_t, navigate: libc::c_uint); } extern "C" { + #[doc = " Set if, and how, the video title will be shown when media is played."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param position position at which to display the title, or libvlc_position_disable to prevent the title from being displayed"] + #[doc = " \\param timeout title display timeout in milliseconds (ignored if libvlc_position_disable)"] + #[doc = " \\version libVLC 2.1.0 or later"] pub fn libvlc_media_player_set_video_title_display( p_mi: *mut libvlc_media_player_t, position: libvlc_position_t, @@ -2574,6 +4872,165 @@ extern "C" { ); } extern "C" { + #[doc = " Get the track list for one type"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\note You need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function. Not doing this will result in"] + #[doc = " an empty list."] + #[doc = ""] + #[doc = " \\note This track list is a snapshot of the current tracks when this function"] + #[doc = " is called. If a track is updated after this call, the user will need to call"] + #[doc = " this function again to get the updated track."] + #[doc = ""] + #[doc = ""] + #[doc = " The track list can be used to get track information and to select specific"] + #[doc = " tracks."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param type type of the track list to request"] + #[doc = ""] + #[doc = " \\return a valid libvlc_media_tracklist_t or NULL in case of error, if there"] + #[doc = " is no track for a category, the returned list will have a size of 0, delete"] + #[doc = " with libvlc_media_tracklist_delete()"] + pub fn libvlc_media_player_get_tracklist( + p_mi: *mut libvlc_media_player_t, + type_: libvlc_track_type_t, + ) -> *mut libvlc_media_tracklist_t; +} +extern "C" { + #[doc = " Get the selected track for one type"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\warning More than one tracks can be selected for one type. In that case,"] + #[doc = " libvlc_media_player_get_tracklist() should be used."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param type type of the selected track"] + #[doc = ""] + #[doc = " \\return a valid track or NULL if there is no selected tracks for this type,"] + #[doc = " release it with libvlc_media_track_release()."] + pub fn libvlc_media_player_get_selected_track( + p_mi: *mut libvlc_media_player_t, + type_: libvlc_track_type_t, + ) -> *mut libvlc_media_track_t; +} +extern "C" { + pub fn libvlc_media_player_get_track_from_id( + p_mi: *mut libvlc_media_player_t, + psz_id: *const libc::c_char, + ) -> *mut libvlc_media_track_t; +} +extern "C" { + #[doc = " Select a track"] + #[doc = ""] + #[doc = " This will unselected the current track."] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\note Use libvlc_media_player_select_tracks() for multiple selection"] + #[doc = ""] + #[doc = " \\warning Only use a \\ref libvlc_media_track_t retrieved with \\ref libvlc_media_player_get_tracklist"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param track track to select, can't be NULL"] + pub fn libvlc_media_player_select_track( + p_mi: *mut libvlc_media_player_t, + track: *const libvlc_media_track_t, + ); +} +extern "C" { + #[doc = " Unselect all tracks for a given type"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param type type to unselect"] + pub fn libvlc_media_player_unselect_track_type( + p_mi: *mut libvlc_media_player_t, + type_: libvlc_track_type_t, + ); +} +extern "C" { + #[doc = " Select multiple tracks for one type"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\note The internal track list can change between the calls of"] + #[doc = " libvlc_media_player_get_tracklist() and"] + #[doc = " libvlc_media_player_set_tracks(). If a track selection change but the"] + #[doc = " track is not present anymore, the player will just ignore it."] + #[doc = ""] + #[doc = " \\note selecting multiple audio tracks is currently not supported."] + #[doc = ""] + #[doc = " \\warning Only use a \\ref libvlc_media_track_t retrieved with \\ref libvlc_media_player_get_tracklist"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param type type of the selected track"] + #[doc = " \\param tracks pointer to the track array, or NULL if track_count is 0"] + #[doc = " \\param track_count number of tracks in the track array"] + pub fn libvlc_media_player_select_tracks( + p_mi: *mut libvlc_media_player_t, + type_: libvlc_track_type_t, + tracks: *mut *const libvlc_media_track_t, + track_count: size_t, + ); +} +extern "C" { + #[doc = " Select tracks by their string identifier"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " This function can be used pre-select a list of tracks before starting the"] + #[doc = " player. It has only effect for the current media. It can also be used when"] + #[doc = " the player is already started."] + #[doc = ""] + #[doc = " 'str_ids' can contain more than one track id, delimited with ','. \"\" or any"] + #[doc = " invalid track id will cause the player to unselect all tracks of that"] + #[doc = " category. NULL will disable the preference for newer tracks without"] + #[doc = " unselecting any current tracks."] + #[doc = ""] + #[doc = " Example:"] + #[doc = " - (libvlc_track_video, \"video/1,video/2\") will select these 2 video tracks."] + #[doc = " If there is only one video track with the id \"video/0\", no tracks will be"] + #[doc = " selected."] + #[doc = " - (libvlc_track_type_t, \"${slave_url_md5sum}/spu/0) will select one spu"] + #[doc = " added by an input slave with the corresponding url."] + #[doc = ""] + #[doc = " \\note The string identifier of a track can be found via psz_id from \\ref"] + #[doc = " libvlc_media_track_t"] + #[doc = ""] + #[doc = " \\note selecting multiple audio tracks is currently not supported."] + #[doc = ""] + #[doc = " \\warning Only use a \\ref libvlc_media_track_t id retrieved with \\ref libvlc_media_player_get_tracklist"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param type type to select"] + #[doc = " \\param psz_ids list of string identifier or NULL"] + pub fn libvlc_media_player_select_tracks_by_ids( + p_mi: *mut libvlc_media_player_t, + type_: libvlc_track_type_t, + psz_ids: *const libc::c_char, + ); +} +extern "C" { + #[doc = " Add a slave to the current media player."] + #[doc = ""] + #[doc = " \\note If the player is playing, the slave will be added directly. This call"] + #[doc = " will also update the slave list of the attached libvlc_media_t."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_slaves_add"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param i_type subtitle or audio"] + #[doc = " \\param psz_uri Uri of the slave (should contain a valid scheme)."] + #[doc = " \\param b_select True if this slave should be selected when it's loaded"] + #[doc = ""] + #[doc = " \\return 0 on success, -1 on error."] pub fn libvlc_media_player_add_slave( p_mi: *mut libvlc_media_player_t, i_type: libvlc_media_slave_type_t, @@ -2581,27 +5038,269 @@ extern "C" { b_select: bool, ) -> libc::c_int; } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_player_program_t { + #[doc = " Id used for libvlc_media_player_select_program()"] + pub i_group_id: libc::c_int, + #[doc = " Program name, always valid"] + pub psz_name: *mut libc::c_char, + #[doc = " True if the program is selected"] + pub b_selected: bool, + #[doc = " True if the program is scrambled"] + pub b_scrambled: bool, +} +#[test] +fn bindgen_test_layout_libvlc_player_program_t() { + assert_eq!( + ::core::mem::size_of::<libvlc_player_program_t>(), + 24usize, + concat!("Size of: ", stringify!(libvlc_player_program_t)) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_player_program_t>(), + 8usize, + concat!("Alignment of ", stringify!(libvlc_player_program_t)) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_player_program_t>())).i_group_id as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_player_program_t), + "::", + stringify!(i_group_id) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_player_program_t>())).psz_name as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_player_program_t), + "::", + stringify!(psz_name) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_player_program_t>())).b_selected as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_player_program_t), + "::", + stringify!(b_selected) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_player_program_t>())).b_scrambled as *const _ as usize + }, + 17usize, + concat!( + "Offset of field: ", + stringify!(libvlc_player_program_t), + "::", + stringify!(b_scrambled) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_player_programlist_t { + _unused: [u8; 0], +} extern "C" { - pub fn libvlc_track_description_list_release( - p_track_description: *mut libvlc_track_description_t, + #[doc = " Delete a program struct"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param program returned by libvlc_media_player_get_selected_program() or"] + #[doc = " libvlc_media_player_get_program_from_id()"] + #[doc = ""] + pub fn libvlc_player_program_delete(program: *mut libvlc_player_program_t); +} +extern "C" { + #[doc = " Get the number of programs in a programlist"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param list valid programlist"] + #[doc = ""] + #[doc = " \\return number of programs, or 0 if the list is empty"] + pub fn libvlc_player_programlist_count(list: *const libvlc_player_programlist_t) -> size_t; +} +extern "C" { + #[doc = " Get a program at a specific index"] + #[doc = ""] + #[doc = " \\warning The behaviour is undefined if the index is not valid."] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\param list valid programlist"] + #[doc = " \\param index valid index in the range [0; count["] + #[doc = ""] + #[doc = " \\return a valid program (can't be NULL if libvlc_player_programlist_count()"] + #[doc = " returned a valid count)"] + pub fn libvlc_player_programlist_at( + list: *mut libvlc_player_programlist_t, + index: size_t, + ) -> *mut libvlc_player_program_t; +} +extern "C" { + #[doc = " Release a programlist"] + #[doc = ""] + #[doc = " \\note program structs from the list are also deleted."] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_player_get_programlist"] + #[doc = ""] + #[doc = " \\param list valid programlist"] + pub fn libvlc_player_programlist_delete(list: *mut libvlc_player_programlist_t); +} +extern "C" { + #[doc = " Select program with a given program id."] + #[doc = ""] + #[doc = " \\note program ids are sent via the libvlc_MediaPlayerProgramAdded event or"] + #[doc = " can be fetch via libvlc_media_player_get_programlist()"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_mi opaque media player handle"] + #[doc = " \\param i_group_id program id"] + pub fn libvlc_media_player_select_program_id( + p_mi: *mut libvlc_media_player_t, + i_group_id: libc::c_int, ); } extern "C" { + #[doc = " Get the selected program"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_mi opaque media player handle"] + #[doc = ""] + #[doc = " \\return a valid program struct or NULL if no programs are selected. The"] + #[doc = " program need to be freed with libvlc_player_program_delete()."] + pub fn libvlc_media_player_get_selected_program( + p_mi: *mut libvlc_media_player_t, + ) -> *mut libvlc_player_program_t; +} +extern "C" { + #[doc = " Get a program struct from a program id"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 or later"] + #[doc = ""] + #[doc = " \\param p_mi opaque media player handle"] + #[doc = " \\param i_group_id program id"] + #[doc = ""] + #[doc = " \\return a valid program struct or NULL if the i_group_id is not found. The"] + #[doc = " program need to be freed with libvlc_player_program_delete()."] + pub fn libvlc_media_player_get_program_from_id( + p_mi: *mut libvlc_media_player_t, + i_group_id: libc::c_int, + ) -> *mut libvlc_player_program_t; +} +extern "C" { + #[doc = " Get the program list"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later."] + #[doc = " \\note This program list is a snapshot of the current programs when this"] + #[doc = " function is called. If a program is updated after this call, the user will"] + #[doc = " need to call this function again to get the updated program."] + #[doc = ""] + #[doc = " The program list can be used to get program information and to select"] + #[doc = " specific programs."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = ""] + #[doc = " \\return a valid libvlc_media_programlist_t or NULL in case of error or empty"] + #[doc = " list, delete with libvlc_media_programlist_delete()"] + pub fn libvlc_media_player_get_programlist( + p_mi: *mut libvlc_media_player_t, + ) -> *mut libvlc_player_programlist_t; +} +extern "C" { + #[doc = " Toggle fullscreen status on non-embedded video outputs."] + #[doc = ""] + #[doc = " @warning The same limitations applies to this function"] + #[doc = " as to libvlc_set_fullscreen()."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] pub fn libvlc_toggle_fullscreen(p_mi: *mut libvlc_media_player_t); } extern "C" { - pub fn libvlc_set_fullscreen(p_mi: *mut libvlc_media_player_t, b_fullscreen: libc::c_int); + #[doc = " Enable or disable fullscreen."] + #[doc = ""] + #[doc = " @warning With most window managers, only a top-level windows can be in"] + #[doc = " full-screen mode. Hence, this function will not operate properly if"] + #[doc = " libvlc_media_player_set_xwindow() was used to embed the video in a"] + #[doc = " non-top-level window. In that case, the embedding window must be reparented"] + #[doc = " to the root window <b>before</b> fullscreen mode is enabled. You will want"] + #[doc = " to reparent it back to its normal parent when disabling fullscreen."] + #[doc = ""] + #[doc = " \\note This setting applies to any and all current or future active video"] + #[doc = " tracks and windows for the given media player. The choice of fullscreen"] + #[doc = " output for each window is left to the operating system."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param b_fullscreen boolean for fullscreen status"] + pub fn libvlc_set_fullscreen(p_mi: *mut libvlc_media_player_t, b_fullscreen: bool); } extern "C" { - pub fn libvlc_get_fullscreen(p_mi: *mut libvlc_media_player_t) -> libc::c_int; + #[doc = " Get current fullscreen status."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the fullscreen status (boolean)"] + #[doc = ""] + #[doc = " \\retval false media player is windowed"] + #[doc = " \\retval true media player is in fullscreen mode"] + pub fn libvlc_get_fullscreen(p_mi: *mut libvlc_media_player_t) -> bool; } extern "C" { + #[doc = " Enable or disable key press events handling, according to the LibVLC hotkeys"] + #[doc = " configuration. By default and for historical reasons, keyboard events are"] + #[doc = " handled by the LibVLC video widget."] + #[doc = ""] + #[doc = " \\note On X11, there can be only one subscriber for key press and mouse"] + #[doc = " click events per window. If your application has subscribed to those events"] + #[doc = " for the X window ID of the video widget, then LibVLC will not be able to"] + #[doc = " handle key presses and mouse clicks in any case."] + #[doc = ""] + #[doc = " \\warning This function is only implemented for X11 and Win32 at the moment."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param on true to handle key press events, false to ignore them."] pub fn libvlc_video_set_key_input(p_mi: *mut libvlc_media_player_t, on: libc::c_uint); } extern "C" { + #[doc = " Enable or disable mouse click events handling. By default, those events are"] + #[doc = " handled. This is needed for DVD menus to work, as well as a few video"] + #[doc = " filters such as \"puzzle\"."] + #[doc = ""] + #[doc = " \\see libvlc_video_set_key_input()."] + #[doc = ""] + #[doc = " \\warning This function is only implemented for X11 and Win32 at the moment."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param on true to handle mouse click events, false to ignore them."] pub fn libvlc_video_set_mouse_input(p_mi: *mut libvlc_media_player_t, on: libc::c_uint); } extern "C" { + #[doc = " Get the pixel dimensions of a video."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param num number of the video (starting from, and most commonly 0)"] + #[doc = " \\param[out] px pointer to get the pixel width"] + #[doc = " \\param[out] py pointer to get the pixel height"] + #[doc = " \\return 0 on success, -1 if the specified video does not exist"] pub fn libvlc_video_get_size( p_mi: *mut libvlc_media_player_t, num: libc::c_uint, @@ -2610,6 +5309,26 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Get the mouse pointer coordinates over a video."] + #[doc = " Coordinates are expressed in terms of the decoded video resolution,"] + #[doc = " <b>not</b> in terms of pixels on the screen/viewport (to get the latter,"] + #[doc = " you can query your windowing system directly)."] + #[doc = ""] + #[doc = " Either of the coordinates may be negative or larger than the corresponding"] + #[doc = " dimension of the video, if the cursor is outside the rendering area."] + #[doc = ""] + #[doc = " @warning The coordinates may be out-of-date if the pointer is not located"] + #[doc = " on the video rendering area. LibVLC does not track the pointer if it is"] + #[doc = " outside of the video widget."] + #[doc = ""] + #[doc = " @note LibVLC does not support multiple pointers (it does of course support"] + #[doc = " multiple input devices sharing the same pointer) at the moment."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param num number of the video (starting from, and most commonly 0)"] + #[doc = " \\param[out] px pointer to get the abscissa"] + #[doc = " \\param[out] py pointer to get the ordinate"] + #[doc = " \\return 0 on success, -1 if the specified video does not exist"] pub fn libvlc_video_get_cursor( p_mi: *mut libvlc_media_player_t, num: libc::c_uint, @@ -2618,24 +5337,68 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Get the current video scaling factor."] + #[doc = " See also libvlc_video_set_scale()."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the currently configured zoom factor, or 0. if the video is set"] + #[doc = " to fit to the output window/drawable automatically."] pub fn libvlc_video_get_scale(p_mi: *mut libvlc_media_player_t) -> f32; } extern "C" { + #[doc = " Set the video scaling factor. That is the ratio of the number of pixels on"] + #[doc = " screen to the number of pixels in the original decoded video in each"] + #[doc = " dimension. Zero is a special value; it will adjust the video to the output"] + #[doc = " window/drawable (in windowed mode) or the entire screen."] + #[doc = ""] + #[doc = " Note that not all video outputs support scaling."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param f_factor the scaling factor, or zero"] pub fn libvlc_video_set_scale(p_mi: *mut libvlc_media_player_t, f_factor: f32); } extern "C" { + #[doc = " Get current video aspect ratio."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the video aspect ratio or NULL if unspecified"] + #[doc = " (the result must be released with free() or libvlc_free())."] pub fn libvlc_video_get_aspect_ratio(p_mi: *mut libvlc_media_player_t) -> *mut libc::c_char; } extern "C" { + #[doc = " Set new video aspect ratio."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param psz_aspect new video aspect-ratio or NULL to reset to default"] + #[doc = " \\note Invalid aspect ratios are ignored."] pub fn libvlc_video_set_aspect_ratio( p_mi: *mut libvlc_media_player_t, psz_aspect: *const libc::c_char, ); } extern "C" { + #[doc = " Create a video viewpoint structure."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\return video viewpoint or NULL"] + #[doc = " (the result must be released with free())."] pub fn libvlc_video_new_viewpoint() -> *mut libvlc_video_viewpoint_t; } extern "C" { + #[doc = " Update the video viewpoint information."] + #[doc = ""] + #[doc = " \\note It is safe to call this function before the media player is started."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param p_viewpoint video viewpoint allocated via libvlc_video_new_viewpoint()"] + #[doc = " \\param b_absolute if true replace the old viewpoint with the new one. If"] + #[doc = " false, increase/decrease it."] + #[doc = " \\return -1 in case of error, 0 otherwise"] + #[doc = ""] + #[doc = " \\note the values are set asynchronously, it will be used by the next frame displayed."] pub fn libvlc_video_update_viewpoint( p_mi: *mut libvlc_media_player_t, p_viewpoint: *const libvlc_video_viewpoint_t, @@ -2643,44 +5406,98 @@ extern "C" { ) -> libc::c_int; } extern "C" { - pub fn libvlc_video_get_spu(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_get_spu_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_get_spu_description( - p_mi: *mut libvlc_media_player_t, - ) -> *mut libvlc_track_description_t; -} -extern "C" { - pub fn libvlc_video_set_spu( - p_mi: *mut libvlc_media_player_t, - i_spu: libc::c_int, - ) -> libc::c_int; -} -extern "C" { + #[doc = " Get the current subtitle delay. Positive values means subtitles are being"] + #[doc = " displayed later, negative values earlier."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return time (in microseconds) the display of subtitles is being delayed"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_video_get_spu_delay(p_mi: *mut libvlc_media_player_t) -> i64; } extern "C" { + #[doc = " Get the current subtitle text scale"] + #[doc = ""] + #[doc = " The scale factor is expressed as a percentage of the default size, where"] + #[doc = " 1.0 represents 100 percent."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\version LibVLC 4.0.0 or later"] + pub fn libvlc_video_get_spu_text_scale(p_mi: *mut libvlc_media_player_t) -> f32; +} +extern "C" { + #[doc = " Set the subtitle text scale."] + #[doc = ""] + #[doc = " The scale factor is expressed as a percentage of the default size, where"] + #[doc = " 1.0 represents 100 percent."] + #[doc = ""] + #[doc = " A value of 0.5 would result in text half the normal size, and a value of 2.0"] + #[doc = " would result in text twice the normal size."] + #[doc = ""] + #[doc = " The minimum acceptable value for the scale factor is 0.1."] + #[doc = ""] + #[doc = " The maximum is 5.0 (five times normal size)."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param f_scale scale factor in the range [0.1;5.0] (default: 1.0)"] + #[doc = " \\version LibVLC 4.0.0 or later"] + pub fn libvlc_video_set_spu_text_scale(p_mi: *mut libvlc_media_player_t, f_scale: f32); +} +extern "C" { + #[doc = " Set the subtitle delay. This affects the timing of when the subtitle will"] + #[doc = " be displayed. Positive values result in subtitles being displayed later,"] + #[doc = " while negative values will result in subtitles being displayed earlier."] + #[doc = ""] + #[doc = " The subtitle delay will be reset to zero each time the media changes."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param i_delay time (in microseconds) the display of subtitles should be delayed"] + #[doc = " \\return 0 on success, -1 on error"] + #[doc = " \\version LibVLC 2.0.0 or later"] pub fn libvlc_video_set_spu_delay( p_mi: *mut libvlc_media_player_t, i_delay: i64, ) -> libc::c_int; } extern "C" { + #[doc = " Get the full description of available titles"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param[out] titles address to store an allocated array of title descriptions"] + #[doc = " descriptions (must be freed with libvlc_title_descriptions_release()"] + #[doc = " by the caller)"] + #[doc = ""] + #[doc = " \\return the number of titles (-1 on error)"] pub fn libvlc_media_player_get_full_title_descriptions( p_mi: *mut libvlc_media_player_t, titles: *mut *mut *mut libvlc_title_description_t, ) -> libc::c_int; } extern "C" { + #[doc = " Release a title description"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\param p_titles title description array to release"] + #[doc = " \\param i_count number of title descriptions to release"] pub fn libvlc_title_descriptions_release( p_titles: *mut *mut libvlc_title_description_t, i_count: libc::c_uint, ); } extern "C" { + #[doc = " Get the full description of available chapters"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param i_chapters_of_title index of the title to query for chapters (uses current title if set to -1)"] + #[doc = " \\param[out] pp_chapters address to store an allocated array of chapter descriptions"] + #[doc = " descriptions (must be freed with libvlc_chapter_descriptions_release()"] + #[doc = " by the caller)"] + #[doc = ""] + #[doc = " \\return the number of chapters (-1 on error)"] pub fn libvlc_media_player_get_full_chapter_descriptions( p_mi: *mut libvlc_media_player_t, i_chapters_of_title: libc::c_int, @@ -2688,44 +5505,133 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Release a chapter description"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later"] + #[doc = ""] + #[doc = " \\param p_chapters chapter description array to release"] + #[doc = " \\param i_count number of chapter descriptions to release"] pub fn libvlc_chapter_descriptions_release( p_chapters: *mut *mut libvlc_chapter_description_t, i_count: libc::c_uint, ); } extern "C" { - pub fn libvlc_video_get_crop_geometry(p_mi: *mut libvlc_media_player_t) -> *mut libc::c_char; -} -extern "C" { - pub fn libvlc_video_set_crop_geometry( - p_mi: *mut libvlc_media_player_t, - psz_geometry: *const libc::c_char, + #[doc = " Set/unset the video crop ratio."] + #[doc = ""] + #[doc = " This function forces a crop ratio on any and all video tracks rendered by"] + #[doc = " the media player. If the display aspect ratio of a video does not match the"] + #[doc = " crop ratio, either the top and bottom, or the left and right of the video"] + #[doc = " will be cut out to fit the crop ratio."] + #[doc = ""] + #[doc = " For instance, a ratio of 1:1 will force the video to a square shape."] + #[doc = ""] + #[doc = " To disable video crop, set a crop ratio with zero as denominator."] + #[doc = ""] + #[doc = " A call to this function overrides any previous call to any of"] + #[doc = " libvlc_video_set_crop_ratio(), libvlc_video_set_crop_border() and/or"] + #[doc = " libvlc_video_set_crop_window()."] + #[doc = ""] + #[doc = " \\see libvlc_video_set_aspect_ratio()"] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param num crop ratio numerator (ignored if denominator is 0)"] + #[doc = " \\param den crop ratio denominator (or 0 to unset the crop ratio)"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later"] + pub fn libvlc_video_set_crop_ratio( + mp: *mut libvlc_media_player_t, + num: libc::c_uint, + den: libc::c_uint, ); } extern "C" { + #[doc = " Set the video crop window."] + #[doc = ""] + #[doc = " This function selects a sub-rectangle of video to show. Any pixels outside"] + #[doc = " the rectangle will not be shown."] + #[doc = ""] + #[doc = " To unset the video crop window, use libvlc_video_set_crop_ratio() or"] + #[doc = " libvlc_video_set_crop_border()."] + #[doc = ""] + #[doc = " A call to this function overrides any previous call to any of"] + #[doc = " libvlc_video_set_crop_ratio(), libvlc_video_set_crop_border() and/or"] + #[doc = " libvlc_video_set_crop_window()."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param x abscissa (i.e. leftmost sample column offset) of the crop window"] + #[doc = " \\param y ordinate (i.e. topmost sample row offset) of the crop window"] + #[doc = " \\param width sample width of the crop window (cannot be zero)"] + #[doc = " \\param height sample height of the crop window (cannot be zero)"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later"] + pub fn libvlc_video_set_crop_window( + mp: *mut libvlc_media_player_t, + x: libc::c_uint, + y: libc::c_uint, + width: libc::c_uint, + height: libc::c_uint, + ); +} +extern "C" { + #[doc = " Set the video crop borders."] + #[doc = ""] + #[doc = " This function selects the size of video edges to be cropped out."] + #[doc = ""] + #[doc = " To unset the video crop borders, set all borders to zero."] + #[doc = ""] + #[doc = " A call to this function overrides any previous call to any of"] + #[doc = " libvlc_video_set_crop_ratio(), libvlc_video_set_crop_border() and/or"] + #[doc = " libvlc_video_set_crop_window()."] + #[doc = ""] + #[doc = " \\param mp the media player"] + #[doc = " \\param left number of sample columns to crop on the left"] + #[doc = " \\param right number of sample columns to crop on the right"] + #[doc = " \\param top number of sample rows to crop on the top"] + #[doc = " \\param bottom number of sample rows to corp on the bottom"] + #[doc = ""] + #[doc = " \\version LibVLC 4.0.0 and later"] + pub fn libvlc_video_set_crop_border( + mp: *mut libvlc_media_player_t, + left: libc::c_uint, + right: libc::c_uint, + top: libc::c_uint, + bottom: libc::c_uint, + ); +} +extern "C" { + #[doc = " Get current teletext page requested or 0 if it's disabled."] + #[doc = ""] + #[doc = " Teletext is disabled by default, call libvlc_video_set_teletext() to enable"] + #[doc = " it."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the current teletext page requested."] pub fn libvlc_video_get_teletext(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set new teletext page to retrieve."] + #[doc = ""] + #[doc = " This function can also be used to send a teletext key."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param i_page teletex page number requested. This value can be 0 to disable"] + #[doc = " teletext, a number in the range ]0;1000[ to show the requested page, or a"] + #[doc = " \\ref libvlc_teletext_key_t. 100 is the default teletext page."] pub fn libvlc_video_set_teletext(p_mi: *mut libvlc_media_player_t, i_page: libc::c_int); } extern "C" { - pub fn libvlc_video_get_track_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_get_track_description( - p_mi: *mut libvlc_media_player_t, - ) -> *mut libvlc_track_description_t; -} -extern "C" { - pub fn libvlc_video_get_track(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_set_track( - p_mi: *mut libvlc_media_player_t, - i_track: libc::c_int, - ) -> libc::c_int; -} -extern "C" { + #[doc = " Take a snapshot of the current video window."] + #[doc = ""] + #[doc = " If i_width AND i_height is 0, original size is used."] + #[doc = " If i_width XOR i_height is 0, original aspect-ratio is preserved."] + #[doc = ""] + #[doc = " \\param p_mi media player instance"] + #[doc = " \\param num number of video output (typically 0 for the first/only one)"] + #[doc = " \\param psz_filepath the path of a file or a folder to save the screenshot into"] + #[doc = " \\param i_width the snapshot's width"] + #[doc = " \\param i_height the snapshot's height"] + #[doc = " \\return 0 on success, -1 if the video was not found"] pub fn libvlc_video_take_snapshot( p_mi: *mut libvlc_media_player_t, num: libc::c_uint, @@ -2735,24 +5641,37 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Enable or disable deinterlace filter"] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player"] + #[doc = " \\param deinterlace state -1: auto (default), 0: disabled, 1: enabled"] + #[doc = " \\param psz_mode type of deinterlace filter, NULL for current/default filter"] + #[doc = " \\version LibVLC 4.0.0 and later"] pub fn libvlc_video_set_deinterlace( p_mi: *mut libvlc_media_player_t, + deinterlace: libc::c_int, psz_mode: *const libc::c_char, ); } extern "C" { + #[doc = " Get an integer marquee option value"] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player"] + #[doc = " \\param option marq option to get \\see libvlc_video_marquee_option_t"] pub fn libvlc_video_get_marquee_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, ) -> libc::c_int; } extern "C" { - pub fn libvlc_video_get_marquee_string( - p_mi: *mut libvlc_media_player_t, - option: libc::c_uint, - ) -> *mut libc::c_char; -} -extern "C" { + #[doc = " Enable, disable or set an integer marquee option"] + #[doc = ""] + #[doc = " Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)"] + #[doc = " or disabling (arg 0) the marq filter."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player"] + #[doc = " \\param option marq option to set \\see libvlc_video_marquee_option_t"] + #[doc = " \\param i_val marq option value"] pub fn libvlc_video_set_marquee_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, @@ -2760,6 +5679,11 @@ extern "C" { ); } extern "C" { + #[doc = " Set a marquee string option"] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player"] + #[doc = " \\param option marq option to set \\see libvlc_video_marquee_option_t"] + #[doc = " \\param psz_text marq option value"] pub fn libvlc_video_set_marquee_string( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, @@ -2767,6 +5691,7 @@ extern "C" { ); } pub const libvlc_video_logo_option_t_libvlc_logo_enable: libvlc_video_logo_option_t = 0; +#[doc = "< string argument, \"file,d,t;file,d,t;...\""] pub const libvlc_video_logo_option_t_libvlc_logo_file: libvlc_video_logo_option_t = 1; pub const libvlc_video_logo_option_t_libvlc_logo_x: libvlc_video_logo_option_t = 2; pub const libvlc_video_logo_option_t_libvlc_logo_y: libvlc_video_logo_option_t = 3; @@ -2774,14 +5699,27 @@ pub const libvlc_video_logo_option_t_libvlc_logo_delay: libvlc_video_logo_option pub const libvlc_video_logo_option_t_libvlc_logo_repeat: libvlc_video_logo_option_t = 5; pub const libvlc_video_logo_option_t_libvlc_logo_opacity: libvlc_video_logo_option_t = 6; pub const libvlc_video_logo_option_t_libvlc_logo_position: libvlc_video_logo_option_t = 7; +#[doc = " option values for libvlc_video_{get,set}_logo_{int,string}"] pub type libvlc_video_logo_option_t = libc::c_uint; extern "C" { + #[doc = " Get integer logo option."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option logo option to get, values of libvlc_video_logo_option_t"] pub fn libvlc_video_get_logo_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, ) -> libc::c_int; } extern "C" { + #[doc = " Set logo option as integer. Options that take a different type value"] + #[doc = " are ignored."] + #[doc = " Passing libvlc_logo_enable as option value has the side effect of"] + #[doc = " starting (arg !0) or stopping (arg 0) the logo filter."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option logo option to set, values of libvlc_video_logo_option_t"] + #[doc = " \\param value logo option value"] pub fn libvlc_video_set_logo_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, @@ -2789,6 +5727,12 @@ extern "C" { ); } extern "C" { + #[doc = " Set logo option as string. Options that take a different type value"] + #[doc = " are ignored."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option logo option to set, values of libvlc_video_logo_option_t"] + #[doc = " \\param psz_value logo option value"] pub fn libvlc_video_set_logo_string( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, @@ -2801,14 +5745,29 @@ pub const libvlc_video_adjust_option_t_libvlc_adjust_Brightness: libvlc_video_ad pub const libvlc_video_adjust_option_t_libvlc_adjust_Hue: libvlc_video_adjust_option_t = 3; pub const libvlc_video_adjust_option_t_libvlc_adjust_Saturation: libvlc_video_adjust_option_t = 4; pub const libvlc_video_adjust_option_t_libvlc_adjust_Gamma: libvlc_video_adjust_option_t = 5; +#[doc = " option values for libvlc_video_{get,set}_adjust_{int,float,bool}"] pub type libvlc_video_adjust_option_t = libc::c_uint; extern "C" { + #[doc = " Get integer adjust option."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option adjust option to get, values of libvlc_video_adjust_option_t"] + #[doc = " \\version LibVLC 1.1.1 and later."] pub fn libvlc_video_get_adjust_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, ) -> libc::c_int; } extern "C" { + #[doc = " Set adjust option as integer. Options that take a different type value"] + #[doc = " are ignored."] + #[doc = " Passing libvlc_adjust_enable as option value has the side effect of"] + #[doc = " starting (arg !0) or stopping (arg 0) the adjust filter."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option adust option to set, values of libvlc_video_adjust_option_t"] + #[doc = " \\param value adjust option value"] + #[doc = " \\version LibVLC 1.1.1 and later."] pub fn libvlc_video_set_adjust_int( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, @@ -2816,37 +5775,30 @@ extern "C" { ); } extern "C" { + #[doc = " Get float adjust option."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option adjust option to get, values of libvlc_video_adjust_option_t"] + #[doc = " \\version LibVLC 1.1.1 and later."] pub fn libvlc_video_get_adjust_float( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, ) -> f32; } extern "C" { + #[doc = " Set adjust option as float. Options that take a different type value"] + #[doc = " are ignored."] + #[doc = ""] + #[doc = " \\param p_mi libvlc media player instance"] + #[doc = " \\param option adust option to set, values of libvlc_video_adjust_option_t"] + #[doc = " \\param value adjust option value"] + #[doc = " \\version LibVLC 1.1.1 and later."] pub fn libvlc_video_set_adjust_float( p_mi: *mut libvlc_media_player_t, option: libc::c_uint, value: f32, ); } -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_Error: - libvlc_audio_output_device_types_t = -1; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_Mono: - libvlc_audio_output_device_types_t = 1; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_Stereo: - libvlc_audio_output_device_types_t = 2; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_2F2R: - libvlc_audio_output_device_types_t = 4; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_3F2R: - libvlc_audio_output_device_types_t = 5; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_5_1: - libvlc_audio_output_device_types_t = 6; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_6_1: - libvlc_audio_output_device_types_t = 7; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_7_1: - libvlc_audio_output_device_types_t = 8; -pub const libvlc_audio_output_device_types_t_libvlc_AudioOutputDevice_SPDIF: - libvlc_audio_output_device_types_t = 10; -pub type libvlc_audio_output_device_types_t = libc::c_int; pub const libvlc_audio_output_channel_t_libvlc_AudioChannel_Error: libvlc_audio_output_channel_t = -1; pub const libvlc_audio_output_channel_t_libvlc_AudioChannel_Stereo: libvlc_audio_output_channel_t = @@ -2858,127 +5810,320 @@ pub const libvlc_audio_output_channel_t_libvlc_AudioChannel_Right: libvlc_audio_ 4; pub const libvlc_audio_output_channel_t_libvlc_AudioChannel_Dolbys: libvlc_audio_output_channel_t = 5; +#[doc = " Audio channels"] pub type libvlc_audio_output_channel_t = libc::c_int; extern "C" { + #[doc = " Gets the list of available audio output modules."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = " \\return list of available audio outputs. It must be freed with"] + #[doc = " \\see libvlc_audio_output_list_release \\see libvlc_audio_output_t ."] + #[doc = " In case of error, NULL is returned."] pub fn libvlc_audio_output_list_get( p_instance: *mut libvlc_instance_t, ) -> *mut libvlc_audio_output_t; } extern "C" { + #[doc = " Frees the list of available audio output modules."] + #[doc = ""] + #[doc = " \\param p_list list with audio outputs for release"] pub fn libvlc_audio_output_list_release(p_list: *mut libvlc_audio_output_t); } extern "C" { + #[doc = " Selects an audio output module."] + #[doc = " \\note Any change will take be effect only after playback is stopped and"] + #[doc = " restarted. Audio output cannot be changed while playing."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param psz_name name of audio output,"] + #[doc = " use psz_name of \\see libvlc_audio_output_t"] + #[doc = " \\return 0 if function succeeded, -1 on error"] pub fn libvlc_audio_output_set( p_mi: *mut libvlc_media_player_t, psz_name: *const libc::c_char, ) -> libc::c_int; } extern "C" { + #[doc = " Gets a list of potential audio output devices."] + #[doc = ""] + #[doc = " See also libvlc_audio_output_device_set()."] + #[doc = ""] + #[doc = " \\note Not all audio outputs support enumerating devices."] + #[doc = " The audio output may be functional even if the list is empty (NULL)."] + #[doc = ""] + #[doc = " \\note The list may not be exhaustive."] + #[doc = ""] + #[doc = " \\warning Some audio output devices in the list might not actually work in"] + #[doc = " some circumstances. By default, it is recommended to not specify any"] + #[doc = " explicit audio device."] + #[doc = ""] + #[doc = " \\param mp media player"] + #[doc = " \\return A NULL-terminated linked list of potential audio output devices."] + #[doc = " It must be freed with libvlc_audio_output_device_list_release()"] + #[doc = " \\version LibVLC 2.2.0 or later."] pub fn libvlc_audio_output_device_enum( mp: *mut libvlc_media_player_t, ) -> *mut libvlc_audio_output_device_t; } extern "C" { - pub fn libvlc_audio_output_device_list_get( - p_instance: *mut libvlc_instance_t, - aout: *const libc::c_char, - ) -> *mut libvlc_audio_output_device_t; -} -extern "C" { + #[doc = " Frees a list of available audio output devices."] + #[doc = ""] + #[doc = " \\param p_list list with audio outputs for release"] + #[doc = " \\version LibVLC 2.1.0 or later."] pub fn libvlc_audio_output_device_list_release(p_list: *mut libvlc_audio_output_device_t); } extern "C" { + #[doc = " Configures an explicit audio output device."] + #[doc = ""] + #[doc = " A list of adequate potential device strings can be obtained with"] + #[doc = " libvlc_audio_output_device_enum()."] + #[doc = ""] + #[doc = " \\note This function does not select the specified audio output plugin."] + #[doc = " libvlc_audio_output_set() is used for that purpose."] + #[doc = ""] + #[doc = " \\warning The syntax for the device parameter depends on the audio output."] + #[doc = ""] + #[doc = " Some audio output modules require further parameters (e.g. a channels map"] + #[doc = " in the case of ALSA)."] + #[doc = ""] + #[doc = " \\version This function originally expected three parameters."] + #[doc = " The middle parameter was removed from LibVLC 4.0 onward."] + #[doc = ""] + #[doc = " \\param mp media player"] + #[doc = " \\param device_id device identifier string"] + #[doc = " (see \\ref libvlc_audio_output_device_t::psz_device)"] + #[doc = ""] + #[doc = " \\return If the change of device was requested succesfully, zero is returned"] + #[doc = " (the actual change is asynchronous and not guaranteed to succeed)."] + #[doc = " On error, a non-zero value is returned."] pub fn libvlc_audio_output_device_set( mp: *mut libvlc_media_player_t, - module: *const libc::c_char, device_id: *const libc::c_char, - ); + ) -> libc::c_int; } extern "C" { + #[doc = " Get the current audio output device identifier."] + #[doc = ""] + #[doc = " This complements libvlc_audio_output_device_set()."] + #[doc = ""] + #[doc = " \\warning The initial value for the current audio output device identifier"] + #[doc = " may not be set or may be some unknown value. A LibVLC application should"] + #[doc = " compare this value against the known device identifiers (e.g. those that"] + #[doc = " were previously retrieved by a call to libvlc_audio_output_device_enum) to"] + #[doc = " find the current audio output device."] + #[doc = ""] + #[doc = " It is possible that the selected audio output device changes (an external"] + #[doc = " change) without a call to libvlc_audio_output_device_set. That may make this"] + #[doc = " method unsuitable to use if a LibVLC application is attempting to track"] + #[doc = " dynamic audio device changes as they happen."] + #[doc = ""] + #[doc = " \\param mp media player"] + #[doc = " \\return the current audio output device identifier"] + #[doc = " NULL if no device is selected or in case of error"] + #[doc = " (the result must be released with free())."] + #[doc = " \\version LibVLC 3.0.0 or later."] pub fn libvlc_audio_output_device_get(mp: *mut libvlc_media_player_t) -> *mut libc::c_char; } extern "C" { + #[doc = " Toggle mute status."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\warning Toggling mute atomically is not always possible: On some platforms,"] + #[doc = " other processes can mute the VLC audio playback stream asynchronously. Thus,"] + #[doc = " there is a small race condition where toggling will not work."] + #[doc = " See also the limitations of libvlc_audio_set_mute()."] pub fn libvlc_audio_toggle_mute(p_mi: *mut libvlc_media_player_t); } extern "C" { + #[doc = " Get current mute status."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the mute status (boolean) if defined, -1 if undefined/unapplicable"] pub fn libvlc_audio_get_mute(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set mute status."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param status If status is true then mute, otherwise unmute"] + #[doc = " \\warning This function does not always work. If there are no active audio"] + #[doc = " playback stream, the mute status might not be available. If digital"] + #[doc = " pass-through (S/PDIF, HDMI...) is in use, muting may be unapplicable. Also"] + #[doc = " some audio output plugins do not support muting at all."] + #[doc = " \\note To force silent playback, disable all audio tracks. This is more"] + #[doc = " efficient and reliable than mute."] pub fn libvlc_audio_set_mute(p_mi: *mut libvlc_media_player_t, status: libc::c_int); } extern "C" { + #[doc = " Get current software audio volume."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the software volume in percents"] + #[doc = " (0 = mute, 100 = nominal / 0dB)"] pub fn libvlc_audio_get_volume(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set current software audio volume."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param i_volume the volume in percents (0 = mute, 100 = 0dB)"] + #[doc = " \\return 0 if the volume was set, -1 if it was out of range"] pub fn libvlc_audio_set_volume( p_mi: *mut libvlc_media_player_t, i_volume: libc::c_int, ) -> libc::c_int; } extern "C" { - pub fn libvlc_audio_get_track_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_audio_get_track_description( - p_mi: *mut libvlc_media_player_t, - ) -> *mut libvlc_track_description_t; -} -extern "C" { - pub fn libvlc_audio_get_track(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_audio_set_track( - p_mi: *mut libvlc_media_player_t, - i_track: libc::c_int, - ) -> libc::c_int; -} -extern "C" { + #[doc = " Get current audio channel."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the audio channel \\see libvlc_audio_output_channel_t"] pub fn libvlc_audio_get_channel(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Set current audio channel."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param channel the audio channel, \\see libvlc_audio_output_channel_t"] + #[doc = " \\return 0 on success, -1 on error"] pub fn libvlc_audio_set_channel( p_mi: *mut libvlc_media_player_t, channel: libc::c_int, ) -> libc::c_int; } extern "C" { + #[doc = " Get current audio delay."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the audio delay (microseconds)"] + #[doc = " \\version LibVLC 1.1.1 or later"] pub fn libvlc_audio_get_delay(p_mi: *mut libvlc_media_player_t) -> i64; } extern "C" { + #[doc = " Set current audio delay. The audio delay will be reset to zero each time the media changes."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param i_delay the audio delay (microseconds)"] + #[doc = " \\return 0 on success, -1 on error"] + #[doc = " \\version LibVLC 1.1.1 or later"] pub fn libvlc_audio_set_delay(p_mi: *mut libvlc_media_player_t, i_delay: i64) -> libc::c_int; } extern "C" { + #[doc = " Get the number of equalizer presets."] + #[doc = ""] + #[doc = " \\return number of presets"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_preset_count() -> libc::c_uint; } extern "C" { + #[doc = " Get the name of a particular equalizer preset."] + #[doc = ""] + #[doc = " This name can be used, for example, to prepare a preset label or menu in a user"] + #[doc = " interface."] + #[doc = ""] + #[doc = " \\param u_index index of the preset, counting from zero"] + #[doc = " \\return preset name, or NULL if there is no such preset"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_preset_name(u_index: libc::c_uint) -> *const libc::c_char; } extern "C" { + #[doc = " Get the number of distinct frequency bands for an equalizer."] + #[doc = ""] + #[doc = " \\return number of frequency bands"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_band_count() -> libc::c_uint; } extern "C" { + #[doc = " Get a particular equalizer band frequency."] + #[doc = ""] + #[doc = " This value can be used, for example, to create a label for an equalizer band control"] + #[doc = " in a user interface."] + #[doc = ""] + #[doc = " \\param u_index index of the band, counting from zero"] + #[doc = " \\return equalizer band frequency (Hz), or -1 if there is no such band"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_band_frequency(u_index: libc::c_uint) -> f32; } extern "C" { + #[doc = " Create a new default equalizer, with all frequency values zeroed."] + #[doc = ""] + #[doc = " The new equalizer can subsequently be applied to a media player by invoking"] + #[doc = " libvlc_media_player_set_equalizer()."] + #[doc = ""] + #[doc = " The returned handle should be freed via libvlc_audio_equalizer_release() when"] + #[doc = " it is no longer needed."] + #[doc = ""] + #[doc = " \\return opaque equalizer handle, or NULL on error"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_new() -> *mut libvlc_equalizer_t; } extern "C" { + #[doc = " Create a new equalizer, with initial frequency values copied from an existing"] + #[doc = " preset."] + #[doc = ""] + #[doc = " The new equalizer can subsequently be applied to a media player by invoking"] + #[doc = " libvlc_media_player_set_equalizer()."] + #[doc = ""] + #[doc = " The returned handle should be freed via libvlc_audio_equalizer_release() when"] + #[doc = " it is no longer needed."] + #[doc = ""] + #[doc = " \\param u_index index of the preset, counting from zero"] + #[doc = " \\return opaque equalizer handle, or NULL on error"] + #[doc = " (it must be released with libvlc_audio_equalizer_release())"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_new_from_preset(u_index: libc::c_uint) -> *mut libvlc_equalizer_t; } extern "C" { + #[doc = " Release a previously created equalizer instance."] + #[doc = ""] + #[doc = " The equalizer was previously created by using libvlc_audio_equalizer_new() or"] + #[doc = " libvlc_audio_equalizer_new_from_preset()."] + #[doc = ""] + #[doc = " It is safe to invoke this method with a NULL p_equalizer parameter for no effect."] + #[doc = ""] + #[doc = " \\param p_equalizer opaque equalizer handle, or NULL"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_release(p_equalizer: *mut libvlc_equalizer_t); } extern "C" { + #[doc = " Set a new pre-amplification value for an equalizer."] + #[doc = ""] + #[doc = " The new equalizer settings are subsequently applied to a media player by invoking"] + #[doc = " libvlc_media_player_set_equalizer()."] + #[doc = ""] + #[doc = " The supplied amplification value will be clamped to the -20.0 to +20.0 range."] + #[doc = ""] + #[doc = " \\param p_equalizer valid equalizer handle, must not be NULL"] + #[doc = " \\param f_preamp preamp value (-20.0 to 20.0 Hz)"] + #[doc = " \\return zero on success, -1 on error"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_set_preamp( p_equalizer: *mut libvlc_equalizer_t, f_preamp: f32, ) -> libc::c_int; } extern "C" { + #[doc = " Get the current pre-amplification value from an equalizer."] + #[doc = ""] + #[doc = " \\param p_equalizer valid equalizer handle, must not be NULL"] + #[doc = " \\return preamp value (Hz)"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_preamp(p_equalizer: *mut libvlc_equalizer_t) -> f32; } extern "C" { + #[doc = " Set a new amplification value for a particular equalizer frequency band."] + #[doc = ""] + #[doc = " The new equalizer settings are subsequently applied to a media player by invoking"] + #[doc = " libvlc_media_player_set_equalizer()."] + #[doc = ""] + #[doc = " The supplied amplification value will be clamped to the -20.0 to +20.0 range."] + #[doc = ""] + #[doc = " \\param p_equalizer valid equalizer handle, must not be NULL"] + #[doc = " \\param f_amp amplification value (-20.0 to 20.0 Hz)"] + #[doc = " \\param u_band index, counting from zero, of the frequency band to set"] + #[doc = " \\return zero on success, -1 on error"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_set_amp_at_index( p_equalizer: *mut libvlc_equalizer_t, f_amp: f32, @@ -2986,60 +6131,157 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Get the amplification value for a particular equalizer frequency band."] + #[doc = ""] + #[doc = " \\param p_equalizer valid equalizer handle, must not be NULL"] + #[doc = " \\param u_band index, counting from zero, of the frequency band to get"] + #[doc = " \\return amplification value (Hz); NaN if there is no such frequency band"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_audio_equalizer_get_amp_at_index( p_equalizer: *mut libvlc_equalizer_t, u_band: libc::c_uint, ) -> f32; } extern "C" { + #[doc = " Apply new equalizer settings to a media player."] + #[doc = ""] + #[doc = " The equalizer is first created by invoking libvlc_audio_equalizer_new() or"] + #[doc = " libvlc_audio_equalizer_new_from_preset()."] + #[doc = ""] + #[doc = " It is possible to apply new equalizer settings to a media player whether the media"] + #[doc = " player is currently playing media or not."] + #[doc = ""] + #[doc = " Invoking this method will immediately apply the new equalizer settings to the audio"] + #[doc = " output of the currently playing media if there is any."] + #[doc = ""] + #[doc = " If there is no currently playing media, the new equalizer settings will be applied"] + #[doc = " later if and when new media is played."] + #[doc = ""] + #[doc = " Equalizer settings will automatically be applied to subsequently played media."] + #[doc = ""] + #[doc = " To disable the equalizer for a media player invoke this method passing NULL for the"] + #[doc = " p_equalizer parameter."] + #[doc = ""] + #[doc = " The media player does not keep a reference to the supplied equalizer so it is safe"] + #[doc = " for an application to release the equalizer reference any time after this method"] + #[doc = " returns."] + #[doc = ""] + #[doc = " \\param p_mi opaque media player handle"] + #[doc = " \\param p_equalizer opaque equalizer handle, or NULL to disable the equalizer for this media player"] + #[doc = " \\return zero on success, -1 on error"] + #[doc = " \\version LibVLC 2.2.0 or later"] pub fn libvlc_media_player_set_equalizer( p_mi: *mut libvlc_media_player_t, p_equalizer: *mut libvlc_equalizer_t, ) -> libc::c_int; } +#[doc = "< Don't use a media player role"] pub const libvlc_media_player_role_libvlc_role_None: libvlc_media_player_role = 0; +#[doc = "< Music (or radio) playback"] pub const libvlc_media_player_role_libvlc_role_Music: libvlc_media_player_role = 1; +#[doc = "< Video playback"] pub const libvlc_media_player_role_libvlc_role_Video: libvlc_media_player_role = 2; +#[doc = "< Speech, real-time communication"] pub const libvlc_media_player_role_libvlc_role_Communication: libvlc_media_player_role = 3; +#[doc = "< Video game"] pub const libvlc_media_player_role_libvlc_role_Game: libvlc_media_player_role = 4; +#[doc = "< User interaction feedback"] pub const libvlc_media_player_role_libvlc_role_Notification: libvlc_media_player_role = 5; +#[doc = "< Embedded animation (e.g. in web page)"] pub const libvlc_media_player_role_libvlc_role_Animation: libvlc_media_player_role = 6; +#[doc = "< Audio editing/production"] pub const libvlc_media_player_role_libvlc_role_Production: libvlc_media_player_role = 7; +#[doc = "< Accessibility"] pub const libvlc_media_player_role_libvlc_role_Accessibility: libvlc_media_player_role = 8; pub const libvlc_media_player_role_libvlc_role_Test: libvlc_media_player_role = 9; +#[doc = " Media player roles."] +#[doc = ""] +#[doc = " \\version LibVLC 3.0.0 and later."] +#[doc = ""] +#[doc = " See \\ref libvlc_media_player_set_role()"] pub type libvlc_media_player_role = libc::c_uint; +#[doc = " Media player roles."] +#[doc = ""] +#[doc = " \\version LibVLC 3.0.0 and later."] +#[doc = ""] +#[doc = " See \\ref libvlc_media_player_set_role()"] pub use self::libvlc_media_player_role as libvlc_media_player_role_t; extern "C" { + #[doc = " Gets the media role."] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the media player role (\\ref libvlc_media_player_role_t)"] pub fn libvlc_media_player_get_role(p_mi: *mut libvlc_media_player_t) -> libc::c_int; } extern "C" { + #[doc = " Sets the media role."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param role the media player role (\\ref libvlc_media_player_role_t)"] + #[doc = " \\return 0 on success, -1 on error"] pub fn libvlc_media_player_set_role( p_mi: *mut libvlc_media_player_t, role: libc::c_uint, ) -> libc::c_int; } extern "C" { - pub fn libvlc_media_list_new(p_instance: *mut libvlc_instance_t) -> *mut libvlc_media_list_t; + #[doc = " Create an empty media list."] + #[doc = ""] + #[doc = " \\return empty media list, or NULL on error"] + pub fn libvlc_media_list_new() -> *mut libvlc_media_list_t; } extern "C" { + #[doc = " Release media list created with libvlc_media_list_new()."] + #[doc = ""] + #[doc = " \\param p_ml a media list created with libvlc_media_list_new()"] pub fn libvlc_media_list_release(p_ml: *mut libvlc_media_list_t); } extern "C" { + #[doc = " Retain reference to a media list"] + #[doc = ""] + #[doc = " \\param p_ml a media list created with libvlc_media_list_new()"] pub fn libvlc_media_list_retain(p_ml: *mut libvlc_media_list_t); } extern "C" { + #[doc = " Associate media instance with this media list instance."] + #[doc = " If another media instance was present it will be released."] + #[doc = " The libvlc_media_list_lock should NOT be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param p_md media instance to add"] pub fn libvlc_media_list_set_media(p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Get media instance from this media list instance. This action will increase"] + #[doc = " the refcount on the media instance."] + #[doc = " The libvlc_media_list_lock should NOT be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\return media instance"] pub fn libvlc_media_list_media(p_ml: *mut libvlc_media_list_t) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Add media instance to media list"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param p_md a media instance"] + #[doc = " \\return 0 on success, -1 if the media list is read-only"] pub fn libvlc_media_list_add_media( p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t, ) -> libc::c_int; } extern "C" { + #[doc = " Insert media instance in media list on a position"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param p_md a media instance"] + #[doc = " \\param i_pos position in array where to insert"] + #[doc = " \\return 0 on success, -1 if the media list is read-only"] pub fn libvlc_media_list_insert_media( p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t, @@ -3047,36 +6289,79 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Remove media instance from media list on a position"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param i_pos position in array where to insert"] + #[doc = " \\return 0 on success, -1 if the list is read-only or the item was not found"] pub fn libvlc_media_list_remove_index( p_ml: *mut libvlc_media_list_t, i_pos: libc::c_int, ) -> libc::c_int; } extern "C" { + #[doc = " Get count on media list items"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\return number of items in media list"] pub fn libvlc_media_list_count(p_ml: *mut libvlc_media_list_t) -> libc::c_int; } extern "C" { + #[doc = " List media instance in media list at a position"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param i_pos position in array where to insert"] + #[doc = " \\return media instance at position i_pos, or NULL if not found."] + #[doc = " In case of success, libvlc_media_retain() is called to increase the refcount"] + #[doc = " on the media."] pub fn libvlc_media_list_item_at_index( p_ml: *mut libvlc_media_list_t, i_pos: libc::c_int, ) -> *mut libvlc_media_t; } extern "C" { + #[doc = " Find index position of List media instance in media list."] + #[doc = " Warning: the function will return the first matched position."] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\param p_md media instance"] + #[doc = " \\return position of media instance or -1 if media not found"] pub fn libvlc_media_list_index_of_item( p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t, ) -> libc::c_int; } extern "C" { - pub fn libvlc_media_list_is_readonly(p_ml: *mut libvlc_media_list_t) -> libc::c_int; + #[doc = " This indicates if this media list is read-only from a user point of view"] + #[doc = ""] + #[doc = " \\param p_ml media list instance"] + #[doc = " \\retval true read-only"] + #[doc = " \\retval false read/write"] + pub fn libvlc_media_list_is_readonly(p_ml: *mut libvlc_media_list_t) -> bool; } extern "C" { + #[doc = " Get lock on media list items"] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] pub fn libvlc_media_list_lock(p_ml: *mut libvlc_media_list_t); } extern "C" { + #[doc = " Release lock on media list items"] + #[doc = " The libvlc_media_list_lock should be held upon entering this function."] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] pub fn libvlc_media_list_unlock(p_ml: *mut libvlc_media_list_t); } extern "C" { + #[doc = " Get libvlc_event_manager from this media list instance."] + #[doc = " The p_event_manager is immutable, so you don't have to hold the lock"] + #[doc = ""] + #[doc = " \\param p_ml a media list instance"] + #[doc = " \\return libvlc_event_manager"] pub fn libvlc_media_list_event_manager( p_ml: *mut libvlc_media_list_t, ) -> *mut libvlc_event_manager_t; @@ -3089,123 +6374,186 @@ pub struct libvlc_media_list_player_t { pub const libvlc_playback_mode_t_libvlc_playback_mode_default: libvlc_playback_mode_t = 0; pub const libvlc_playback_mode_t_libvlc_playback_mode_loop: libvlc_playback_mode_t = 1; pub const libvlc_playback_mode_t_libvlc_playback_mode_repeat: libvlc_playback_mode_t = 2; +#[doc = " Defines playback modes for playlist."] pub type libvlc_playback_mode_t = libc::c_uint; extern "C" { + #[doc = " Create new media_list_player."] + #[doc = ""] + #[doc = " \\param p_instance libvlc instance"] + #[doc = " \\return media list player instance or NULL on error"] + #[doc = " (it must be released by libvlc_media_list_player_release())"] pub fn libvlc_media_list_player_new( p_instance: *mut libvlc_instance_t, ) -> *mut libvlc_media_list_player_t; } extern "C" { + #[doc = " Release a media_list_player after use"] + #[doc = " Decrement the reference count of a media player object. If the"] + #[doc = " reference count is 0, then libvlc_media_list_player_release() will"] + #[doc = " release the media player object. If the media player object"] + #[doc = " has been released, then it should not be used again."] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] pub fn libvlc_media_list_player_release(p_mlp: *mut libvlc_media_list_player_t); } extern "C" { + #[doc = " Retain a reference to a media player list object. Use"] + #[doc = " libvlc_media_list_player_release() to decrement reference count."] + #[doc = ""] + #[doc = " \\param p_mlp media player list object"] pub fn libvlc_media_list_player_retain(p_mlp: *mut libvlc_media_list_player_t); } extern "C" { + #[doc = " Return the event manager of this media_list_player."] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\return the event manager"] pub fn libvlc_media_list_player_event_manager( p_mlp: *mut libvlc_media_list_player_t, ) -> *mut libvlc_event_manager_t; } extern "C" { + #[doc = " Replace media player in media_list_player with this instance."] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param p_mi media player instance"] pub fn libvlc_media_list_player_set_media_player( p_mlp: *mut libvlc_media_list_player_t, p_mi: *mut libvlc_media_player_t, ); } extern "C" { + #[doc = " Get media player of the media_list_player instance."] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\return media player instance"] + #[doc = " \\note the caller is responsible for releasing the returned instance"] + #[doc = "with libvlc_media_list_player_set_media_player()."] pub fn libvlc_media_list_player_get_media_player( p_mlp: *mut libvlc_media_list_player_t, ) -> *mut libvlc_media_player_t; } extern "C" { + #[doc = " Set the media list associated with the player"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param p_mlist list of media"] pub fn libvlc_media_list_player_set_media_list( p_mlp: *mut libvlc_media_list_player_t, p_mlist: *mut libvlc_media_list_t, ); } extern "C" { + #[doc = " Play media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] pub fn libvlc_media_list_player_play(p_mlp: *mut libvlc_media_list_player_t); } extern "C" { + #[doc = " Toggle pause (or resume) media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] pub fn libvlc_media_list_player_pause(p_mlp: *mut libvlc_media_list_player_t); } extern "C" { + #[doc = " Pause or resume media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param do_pause play/resume if zero, pause if non-zero"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_list_player_set_pause( p_mlp: *mut libvlc_media_list_player_t, do_pause: libc::c_int, ); } extern "C" { - pub fn libvlc_media_list_player_is_playing( - p_mlp: *mut libvlc_media_list_player_t, - ) -> libc::c_int; + #[doc = " Is media list playing?"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = ""] + #[doc = " \\retval true playing"] + #[doc = " \\retval false not playing"] + pub fn libvlc_media_list_player_is_playing(p_mlp: *mut libvlc_media_list_player_t) -> bool; } extern "C" { + #[doc = " Get current libvlc_state of media list player"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\return libvlc_state_t for media list player"] pub fn libvlc_media_list_player_get_state( p_mlp: *mut libvlc_media_list_player_t, ) -> libvlc_state_t; } extern "C" { + #[doc = " Play media list item at position index"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param i_index index in media list to play"] + #[doc = " \\return 0 upon success -1 if the item wasn't found"] pub fn libvlc_media_list_player_play_item_at_index( p_mlp: *mut libvlc_media_list_player_t, i_index: libc::c_int, ) -> libc::c_int; } extern "C" { + #[doc = " Play the given media item"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param p_md the media instance"] + #[doc = " \\return 0 upon success, -1 if the media is not part of the media list"] pub fn libvlc_media_list_player_play_item( p_mlp: *mut libvlc_media_list_player_t, p_md: *mut libvlc_media_t, ) -> libc::c_int; } extern "C" { - pub fn libvlc_media_list_player_stop(p_mlp: *mut libvlc_media_list_player_t); + #[doc = " Stop playing media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + pub fn libvlc_media_list_player_stop_async(p_mlp: *mut libvlc_media_list_player_t); } extern "C" { + #[doc = " Play next item from media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\return 0 upon success -1 if there is no next item"] pub fn libvlc_media_list_player_next(p_mlp: *mut libvlc_media_list_player_t) -> libc::c_int; } extern "C" { + #[doc = " Play previous item from media list"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\return 0 upon success -1 if there is no previous item"] pub fn libvlc_media_list_player_previous(p_mlp: *mut libvlc_media_list_player_t) -> libc::c_int; } extern "C" { + #[doc = " Sets the playback mode for the playlist"] + #[doc = ""] + #[doc = " \\param p_mlp media list player instance"] + #[doc = " \\param e_mode playback mode specification"] pub fn libvlc_media_list_player_set_playback_mode( p_mlp: *mut libvlc_media_list_player_t, e_mode: libvlc_playback_mode_t, ); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_media_library_t { - _unused: [u8; 0], -} -extern "C" { - pub fn libvlc_media_library_new( - p_instance: *mut libvlc_instance_t, - ) -> *mut libvlc_media_library_t; -} -extern "C" { - pub fn libvlc_media_library_release(p_mlib: *mut libvlc_media_library_t); -} -extern "C" { - pub fn libvlc_media_library_retain(p_mlib: *mut libvlc_media_library_t); -} -extern "C" { - pub fn libvlc_media_library_load(p_mlib: *mut libvlc_media_library_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_media_library_media_list( - p_mlib: *mut libvlc_media_library_t, - ) -> *mut libvlc_media_list_t; -} +#[doc = " devices, like portable music player"] pub const libvlc_media_discoverer_category_t_libvlc_media_discoverer_devices: libvlc_media_discoverer_category_t = 0; +#[doc = " LAN/WAN services, like Upnp, SMB, or SAP"] pub const libvlc_media_discoverer_category_t_libvlc_media_discoverer_lan: libvlc_media_discoverer_category_t = 1; +#[doc = " Podcasts"] pub const libvlc_media_discoverer_category_t_libvlc_media_discoverer_podcasts: libvlc_media_discoverer_category_t = 2; +#[doc = " Local directories, like Video, Music or Pictures directories"] pub const libvlc_media_discoverer_category_t_libvlc_media_discoverer_localdirs: libvlc_media_discoverer_category_t = 3; +#[doc = " Category of a media discoverer"] +#[doc = " \\see libvlc_media_discoverer_list_get()"] pub type libvlc_media_discoverer_category_t = libc::c_uint; +#[doc = " Media discoverer description"] +#[doc = " \\see libvlc_media_discoverer_list_get()"] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_media_discoverer_description_t { @@ -3277,31 +6625,86 @@ pub struct libvlc_media_discoverer_t { _unused: [u8; 0], } extern "C" { + #[doc = " Create a media discoverer object by name."] + #[doc = ""] + #[doc = " After this object is created, you should attach to media_list events in"] + #[doc = " order to be notified of new items discovered."] + #[doc = ""] + #[doc = " You need to call libvlc_media_discoverer_start() in order to start the"] + #[doc = " discovery."] + #[doc = ""] + #[doc = " \\see libvlc_media_discoverer_media_list"] + #[doc = " \\see libvlc_media_discoverer_start"] + #[doc = ""] + #[doc = " \\param p_inst libvlc instance"] + #[doc = " \\param psz_name service name; use libvlc_media_discoverer_list_get() to get"] + #[doc = " a list of the discoverer names available in this libVLC instance"] + #[doc = " \\return media discover object or NULL in case of error"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_discoverer_new( p_inst: *mut libvlc_instance_t, psz_name: *const libc::c_char, ) -> *mut libvlc_media_discoverer_t; } extern "C" { + #[doc = " Start media discovery."] + #[doc = ""] + #[doc = " To stop it, call libvlc_media_discoverer_stop() or"] + #[doc = " libvlc_media_discoverer_list_release() directly."] + #[doc = ""] + #[doc = " \\see libvlc_media_discoverer_stop"] + #[doc = ""] + #[doc = " \\param p_mdis media discover object"] + #[doc = " \\return -1 in case of error, 0 otherwise"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_discoverer_start(p_mdis: *mut libvlc_media_discoverer_t) -> libc::c_int; } extern "C" { + #[doc = " Stop media discovery."] + #[doc = ""] + #[doc = " \\see libvlc_media_discoverer_start"] + #[doc = ""] + #[doc = " \\param p_mdis media discover object"] + #[doc = " \\version LibVLC 3.0.0 or later"] pub fn libvlc_media_discoverer_stop(p_mdis: *mut libvlc_media_discoverer_t); } extern "C" { + #[doc = " Release media discover object. If the reference count reaches 0, then"] + #[doc = " the object will be released."] + #[doc = ""] + #[doc = " \\param p_mdis media service discover object"] pub fn libvlc_media_discoverer_release(p_mdis: *mut libvlc_media_discoverer_t); } extern "C" { + #[doc = " Get media service discover media list."] + #[doc = ""] + #[doc = " \\param p_mdis media service discover object"] + #[doc = " \\return list of media items"] pub fn libvlc_media_discoverer_media_list( p_mdis: *mut libvlc_media_discoverer_t, ) -> *mut libvlc_media_list_t; } extern "C" { - pub fn libvlc_media_discoverer_is_running( - p_mdis: *mut libvlc_media_discoverer_t, - ) -> libc::c_int; + #[doc = " Query if media service discover object is running."] + #[doc = ""] + #[doc = " \\param p_mdis media service discover object"] + #[doc = ""] + #[doc = " \\retval true running"] + #[doc = " \\retval false not running"] + pub fn libvlc_media_discoverer_is_running(p_mdis: *mut libvlc_media_discoverer_t) -> bool; } extern "C" { + #[doc = " Get media discoverer services by category"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\param p_inst libvlc instance"] + #[doc = " \\param i_cat category of services to fetch"] + #[doc = " \\param ppp_services address to store an allocated array of media discoverer"] + #[doc = " services (must be freed with libvlc_media_discoverer_list_release() by"] + #[doc = " the caller) [OUT]"] + #[doc = ""] + #[doc = " \\return the number of media discoverer services (0 on error)"] pub fn libvlc_media_discoverer_list_get( p_inst: *mut libvlc_instance_t, i_cat: libvlc_media_discoverer_category_t, @@ -3309,81 +6712,230 @@ extern "C" { ) -> size_t; } extern "C" { + #[doc = " Release an array of media discoverer services"] + #[doc = ""] + #[doc = " \\version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " \\see libvlc_media_discoverer_list_get()"] + #[doc = ""] + #[doc = " \\param pp_services array to release"] + #[doc = " \\param i_count number of elements in the array"] pub fn libvlc_media_discoverer_list_release( pp_services: *mut *mut libvlc_media_discoverer_description_t, i_count: size_t, ); } +#[doc = " Metadata of a \\link #libvlc_media_t media item\\endlink changed"] pub const libvlc_event_e_libvlc_MediaMetaChanged: libvlc_event_e = 0; +#[doc = " Subitem was added to a \\link #libvlc_media_t media item\\endlink"] +#[doc = " \\see libvlc_media_subitems()"] pub const libvlc_event_e_libvlc_MediaSubItemAdded: libvlc_event_e = 1; +#[doc = " Duration of a \\link #libvlc_media_t media item\\endlink changed"] +#[doc = " \\see libvlc_media_get_duration()"] pub const libvlc_event_e_libvlc_MediaDurationChanged: libvlc_event_e = 2; +#[doc = " Parsing state of a \\link #libvlc_media_t media item\\endlink changed"] +#[doc = " \\see libvlc_media_parse_with_options(),"] +#[doc = " libvlc_media_get_parsed_status(),"] +#[doc = " libvlc_media_parse_stop()"] pub const libvlc_event_e_libvlc_MediaParsedChanged: libvlc_event_e = 3; -pub const libvlc_event_e_libvlc_MediaFreed: libvlc_event_e = 4; -pub const libvlc_event_e_libvlc_MediaStateChanged: libvlc_event_e = 5; +#[doc = " Subitem tree was added to a \\link #libvlc_media_t media item\\endlink"] pub const libvlc_event_e_libvlc_MediaSubItemTreeAdded: libvlc_event_e = 6; +#[doc = " A thumbnail generation for this \\link #libvlc_media_t media \\endlink completed."] +#[doc = " \\see libvlc_media_thumbnail_request_by_time()"] +#[doc = " \\see libvlc_media_thumbnail_request_by_pos()"] +pub const libvlc_event_e_libvlc_MediaThumbnailGenerated: libvlc_event_e = 7; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] +pub const libvlc_event_e_libvlc_MediaAttachedThumbnailsFound: libvlc_event_e = 8; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerMediaChanged: libvlc_event_e = 256; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerNothingSpecial: libvlc_event_e = 257; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerOpening: libvlc_event_e = 258; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerBuffering: libvlc_event_e = 259; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerPlaying: libvlc_event_e = 260; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerPaused: libvlc_event_e = 261; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerStopped: libvlc_event_e = 262; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerForward: libvlc_event_e = 263; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerBackward: libvlc_event_e = 264; -pub const libvlc_event_e_libvlc_MediaPlayerEndReached: libvlc_event_e = 265; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] +pub const libvlc_event_e_libvlc_MediaPlayerStopping: libvlc_event_e = 265; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerEncounteredError: libvlc_event_e = 266; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerTimeChanged: libvlc_event_e = 267; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerPositionChanged: libvlc_event_e = 268; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerSeekableChanged: libvlc_event_e = 269; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerPausableChanged: libvlc_event_e = 270; -pub const libvlc_event_e_libvlc_MediaPlayerTitleChanged: libvlc_event_e = 271; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerSnapshotTaken: libvlc_event_e = 272; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerLengthChanged: libvlc_event_e = 273; +#[doc = " One or more embedded thumbnails were found during the media preparsing"] +#[doc = " The user can hold these picture(s) using libvlc_picture_retain if they"] +#[doc = " wish to use them"] pub const libvlc_event_e_libvlc_MediaPlayerVout: libvlc_event_e = 274; -pub const libvlc_event_e_libvlc_MediaPlayerScrambledChanged: libvlc_event_e = 275; +#[doc = " A track was added, cf. media_player_es_changed in \\ref libvlc_event_t.u"] +#[doc = " to get the id of the new track."] pub const libvlc_event_e_libvlc_MediaPlayerESAdded: libvlc_event_e = 276; +#[doc = " A track was removed, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the removed track."] pub const libvlc_event_e_libvlc_MediaPlayerESDeleted: libvlc_event_e = 277; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerESSelected: libvlc_event_e = 278; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerCorked: libvlc_event_e = 279; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerUncorked: libvlc_event_e = 280; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerMuted: libvlc_event_e = 281; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerUnmuted: libvlc_event_e = 282; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerAudioVolume: libvlc_event_e = 283; +#[doc = " Tracks were selected or unselected, cf."] +#[doc = " media_player_es_selection_changed in \\ref libvlc_event_t.u to get the"] +#[doc = " unselected and/or the selected track ids."] pub const libvlc_event_e_libvlc_MediaPlayerAudioDevice: libvlc_event_e = 284; -pub const libvlc_event_e_libvlc_MediaPlayerChapterChanged: libvlc_event_e = 285; +#[doc = " A track was updated, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the updated track."] +pub const libvlc_event_e_libvlc_MediaPlayerESUpdated: libvlc_event_e = 285; +#[doc = " A track was updated, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the updated track."] +pub const libvlc_event_e_libvlc_MediaPlayerProgramAdded: libvlc_event_e = 286; +#[doc = " A track was updated, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the updated track."] +pub const libvlc_event_e_libvlc_MediaPlayerProgramDeleted: libvlc_event_e = 287; +#[doc = " A track was updated, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the updated track."] +pub const libvlc_event_e_libvlc_MediaPlayerProgramSelected: libvlc_event_e = 288; +#[doc = " A track was updated, cf. media_player_es_changed in \\ref"] +#[doc = " libvlc_event_t.u to get the id of the updated track."] +pub const libvlc_event_e_libvlc_MediaPlayerProgramUpdated: libvlc_event_e = 289; +#[doc = " The title list changed, call"] +#[doc = " libvlc_media_player_get_full_title_descriptions() to get the new list."] +pub const libvlc_event_e_libvlc_MediaPlayerTitleListChanged: libvlc_event_e = 290; +#[doc = " The title selection changed, cf media_player_title_selection_changed in"] +#[doc = " \\ref libvlc_event_t.u"] +pub const libvlc_event_e_libvlc_MediaPlayerTitleSelectionChanged: libvlc_event_e = 291; +#[doc = " The title selection changed, cf media_player_title_selection_changed in"] +#[doc = " \\ref libvlc_event_t.u"] +pub const libvlc_event_e_libvlc_MediaPlayerChapterChanged: libvlc_event_e = 292; +#[doc = " A \\link #libvlc_media_t media item\\endlink was added to a"] +#[doc = " \\link #libvlc_media_list_t media list\\endlink."] pub const libvlc_event_e_libvlc_MediaListItemAdded: libvlc_event_e = 512; +#[doc = " A \\link #libvlc_media_t media item\\endlink is about to get"] +#[doc = " added to a \\link #libvlc_media_list_t media list\\endlink."] pub const libvlc_event_e_libvlc_MediaListWillAddItem: libvlc_event_e = 513; +#[doc = " A \\link #libvlc_media_t media item\\endlink was deleted from"] +#[doc = " a \\link #libvlc_media_list_t media list\\endlink."] pub const libvlc_event_e_libvlc_MediaListItemDeleted: libvlc_event_e = 514; +#[doc = " A \\link #libvlc_media_t media item\\endlink is about to get"] +#[doc = " deleted from a \\link #libvlc_media_list_t media list\\endlink."] pub const libvlc_event_e_libvlc_MediaListWillDeleteItem: libvlc_event_e = 515; +#[doc = " A \\link #libvlc_media_list_t media list\\endlink has reached the"] +#[doc = " end."] +#[doc = " All \\link #libvlc_media_t items\\endlink were either added (in"] +#[doc = " case of a \\ref libvlc_media_discoverer_t) or parsed (preparser)."] pub const libvlc_event_e_libvlc_MediaListEndReached: libvlc_event_e = 516; +#[doc = " \\deprecated No longer used."] +#[doc = " This belonged to the removed libvlc_media_list_view_t"] pub const libvlc_event_e_libvlc_MediaListViewItemAdded: libvlc_event_e = 768; +#[doc = " \\deprecated No longer used."] +#[doc = " This belonged to the removed libvlc_media_list_view_t"] pub const libvlc_event_e_libvlc_MediaListViewWillAddItem: libvlc_event_e = 769; +#[doc = " \\deprecated No longer used."] +#[doc = " This belonged to the removed libvlc_media_list_view_t"] pub const libvlc_event_e_libvlc_MediaListViewItemDeleted: libvlc_event_e = 770; +#[doc = " \\deprecated No longer used."] +#[doc = " This belonged to the removed libvlc_media_list_view_t"] pub const libvlc_event_e_libvlc_MediaListViewWillDeleteItem: libvlc_event_e = 771; +#[doc = " Playback of a \\link #libvlc_media_list_player_t media list"] +#[doc = " player\\endlink has started."] pub const libvlc_event_e_libvlc_MediaListPlayerPlayed: libvlc_event_e = 1024; +#[doc = " The current \\link #libvlc_media_t item\\endlink of a"] +#[doc = " \\link #libvlc_media_list_player_t media list player\\endlink"] +#[doc = " has changed to a different item."] pub const libvlc_event_e_libvlc_MediaListPlayerNextItemSet: libvlc_event_e = 1025; +#[doc = " Playback of a \\link #libvlc_media_list_player_t media list"] +#[doc = " player\\endlink has stopped."] pub const libvlc_event_e_libvlc_MediaListPlayerStopped: libvlc_event_e = 1026; -pub const libvlc_event_e_libvlc_MediaDiscovererStarted: libvlc_event_e = 1280; -pub const libvlc_event_e_libvlc_MediaDiscovererEnded: libvlc_event_e = 1281; +#[doc = " A new \\link #libvlc_renderer_item_t renderer item\\endlink was found by a"] +#[doc = " \\link #libvlc_renderer_discoverer_t renderer discoverer\\endlink."] +#[doc = " The renderer item is valid until deleted."] pub const libvlc_event_e_libvlc_RendererDiscovererItemAdded: libvlc_event_e = 1282; +#[doc = " A previously discovered \\link #libvlc_renderer_item_t renderer item\\endlink"] +#[doc = " was deleted by a \\link #libvlc_renderer_discoverer_t renderer discoverer\\endlink."] +#[doc = " The renderer item is no longer valid."] pub const libvlc_event_e_libvlc_RendererDiscovererItemDeleted: libvlc_event_e = 1283; -pub const libvlc_event_e_libvlc_VlmMediaAdded: libvlc_event_e = 1536; -pub const libvlc_event_e_libvlc_VlmMediaRemoved: libvlc_event_e = 1537; -pub const libvlc_event_e_libvlc_VlmMediaChanged: libvlc_event_e = 1538; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStarted: libvlc_event_e = 1539; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStopped: libvlc_event_e = 1540; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusInit: libvlc_event_e = 1541; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusOpening: libvlc_event_e = 1542; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusPlaying: libvlc_event_e = 1543; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusPause: libvlc_event_e = 1544; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusEnd: libvlc_event_e = 1545; -pub const libvlc_event_e_libvlc_VlmMediaInstanceStatusError: libvlc_event_e = 1546; +#[doc = " Event types"] pub type libvlc_event_e = libc::c_uint; +#[doc = " A LibVLC event"] #[repr(C)] #[derive(Copy, Clone)] pub struct libvlc_event_t { + #[doc = "< Event type (see @ref libvlc_event_e)"] pub type_: libc::c_int, + #[doc = "< Object emitting the event"] pub p_obj: *mut libc::c_void, + #[doc = "< Type-dependent event description"] pub u: libvlc_event_t__bindgen_ty_1, } #[repr(C)] @@ -3393,32 +6945,35 @@ pub union libvlc_event_t__bindgen_ty_1 { pub media_subitem_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_2, pub media_duration_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_3, pub media_parsed_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_4, - pub media_freed: libvlc_event_t__bindgen_ty_1__bindgen_ty_5, - pub media_state_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_6, + pub media_state_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_5, + pub media_thumbnail_generated: libvlc_event_t__bindgen_ty_1__bindgen_ty_6, pub media_subitemtree_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_7, - pub media_player_buffering: libvlc_event_t__bindgen_ty_1__bindgen_ty_8, - pub media_player_chapter_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_9, - pub media_player_position_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_10, - pub media_player_time_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_11, - pub media_player_title_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_12, - pub media_player_seekable_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_13, - pub media_player_pausable_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_14, - pub media_player_scrambled_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_15, - pub media_player_vout: libvlc_event_t__bindgen_ty_1__bindgen_ty_16, - pub media_list_item_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_17, - pub media_list_will_add_item: libvlc_event_t__bindgen_ty_1__bindgen_ty_18, - pub media_list_item_deleted: libvlc_event_t__bindgen_ty_1__bindgen_ty_19, - pub media_list_will_delete_item: libvlc_event_t__bindgen_ty_1__bindgen_ty_20, - pub media_list_player_next_item_set: libvlc_event_t__bindgen_ty_1__bindgen_ty_21, - pub media_player_snapshot_taken: libvlc_event_t__bindgen_ty_1__bindgen_ty_22, - pub media_player_length_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_23, - pub vlm_media_event: libvlc_event_t__bindgen_ty_1__bindgen_ty_24, + pub media_attached_thumbnails_found: libvlc_event_t__bindgen_ty_1__bindgen_ty_8, + pub media_player_buffering: libvlc_event_t__bindgen_ty_1__bindgen_ty_9, + pub media_player_chapter_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_10, + pub media_player_position_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_11, + pub media_player_time_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_12, + pub media_player_title_selection_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_13, + pub media_player_seekable_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_14, + pub media_player_pausable_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_15, + pub media_player_scrambled_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_16, + pub media_player_vout: libvlc_event_t__bindgen_ty_1__bindgen_ty_17, + pub media_list_item_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_18, + pub media_list_will_add_item: libvlc_event_t__bindgen_ty_1__bindgen_ty_19, + pub media_list_item_deleted: libvlc_event_t__bindgen_ty_1__bindgen_ty_20, + pub media_list_will_delete_item: libvlc_event_t__bindgen_ty_1__bindgen_ty_21, + pub media_list_player_next_item_set: libvlc_event_t__bindgen_ty_1__bindgen_ty_22, + pub media_player_snapshot_taken: libvlc_event_t__bindgen_ty_1__bindgen_ty_23, + pub media_player_length_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_24, pub media_player_media_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_25, pub media_player_es_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_26, - pub media_player_audio_volume: libvlc_event_t__bindgen_ty_1__bindgen_ty_27, - pub media_player_audio_device: libvlc_event_t__bindgen_ty_1__bindgen_ty_28, - pub renderer_discoverer_item_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_29, - pub renderer_discoverer_item_deleted: libvlc_event_t__bindgen_ty_1__bindgen_ty_30, + pub media_player_es_selection_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_27, + pub media_player_program_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_28, + pub media_player_program_selection_changed: libvlc_event_t__bindgen_ty_1__bindgen_ty_29, + pub media_player_audio_volume: libvlc_event_t__bindgen_ty_1__bindgen_ty_30, + pub media_player_audio_device: libvlc_event_t__bindgen_ty_1__bindgen_ty_31, + pub renderer_discoverer_item_added: libvlc_event_t__bindgen_ty_1__bindgen_ty_32, + pub renderer_discoverer_item_deleted: libvlc_event_t__bindgen_ty_1__bindgen_ty_33, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3534,6 +7089,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_3() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_4 { + #[doc = "< see @ref libvlc_media_parsed_status_t"] pub new_status: libc::c_int, } #[test] @@ -3571,13 +7127,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_4() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_5 { - pub md: *mut libvlc_media_t, + #[doc = "< see @ref libvlc_state_t"] + pub new_state: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_5() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_5>(), - 8usize, + 4usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_5) @@ -3585,7 +7142,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_5() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_5>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_5) @@ -3593,28 +7150,28 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_5() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_5>())).md as *const _ - as usize + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_5>())).new_state + as *const _ as usize }, 0usize, concat!( "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_5), "::", - stringify!(md) + stringify!(new_state) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_6 { - pub new_state: libc::c_int, + pub p_thumbnail: *mut libvlc_picture_t, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_6() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_6>(), - 4usize, + 8usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_6) @@ -3622,7 +7179,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_6() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_6>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_6) @@ -3630,7 +7187,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_6() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_6>())).new_state + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_6>())).p_thumbnail as *const _ as usize }, 0usize, @@ -3638,7 +7195,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_6() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_6), "::", - stringify!(new_state) + stringify!(p_thumbnail) ) ); } @@ -3682,13 +7239,13 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_7() { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_8 { - pub new_cache: f32, + pub thumbnails: *mut libvlc_picture_list_t, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_8() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_8>(), - 4usize, + 8usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_8) @@ -3696,7 +7253,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_8() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_8>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_8) @@ -3704,7 +7261,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_8() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_8>())).new_cache + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_8>())).thumbnails as *const _ as usize }, 0usize, @@ -3712,14 +7269,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_8() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_8), "::", - stringify!(new_cache) + stringify!(thumbnails) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_9 { - pub new_chapter: libc::c_int, + pub new_cache: f32, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_9() { @@ -3741,7 +7298,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_9() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_9>())).new_chapter + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_9>())).new_cache as *const _ as usize }, 0usize, @@ -3749,14 +7306,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_9() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_9), "::", - stringify!(new_chapter) + stringify!(new_cache) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_10 { - pub new_position: f32, + pub new_chapter: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_10() { @@ -3778,7 +7335,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_10() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_10>())).new_position + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_10>())).new_chapter as *const _ as usize }, 0usize, @@ -3786,20 +7343,20 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_10() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_10), "::", - stringify!(new_position) + stringify!(new_chapter) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_11 { - pub new_time: libvlc_time_t, + pub new_position: f32, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_11() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_11>(), - 8usize, + 4usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_11) @@ -3807,7 +7364,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_11() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_11>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_11) @@ -3815,7 +7372,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_11() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_11>())).new_time + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_11>())).new_position as *const _ as usize }, 0usize, @@ -3823,20 +7380,20 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_11() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_11), "::", - stringify!(new_time) + stringify!(new_position) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_12 { - pub new_title: libc::c_int, + pub new_time: libvlc_time_t, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_12() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_12>(), - 4usize, + 8usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_12) @@ -3844,7 +7401,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_12() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_12>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_12) @@ -3852,7 +7409,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_12() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_12>())).new_title + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_12>())).new_time as *const _ as usize }, 0usize, @@ -3860,20 +7417,21 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_12() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_12), "::", - stringify!(new_title) + stringify!(new_time) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_13 { - pub new_seekable: libc::c_int, + pub title: *const libvlc_title_description_t, + pub index: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_13() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_13>(), - 4usize, + 16usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_13) @@ -3881,7 +7439,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_13() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_13>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_13) @@ -3889,7 +7447,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_13() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_13>())).new_seekable + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_13>())).title as *const _ as usize }, 0usize, @@ -3897,14 +7455,27 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_13() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_13), "::", - stringify!(new_seekable) + stringify!(title) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_13>())).index + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_13), + "::", + stringify!(index) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_14 { - pub new_pausable: libc::c_int, + pub new_seekable: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_14() { @@ -3926,7 +7497,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_14() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_14>())).new_pausable + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_14>())).new_seekable as *const _ as usize }, 0usize, @@ -3934,14 +7505,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_14() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_14), "::", - stringify!(new_pausable) + stringify!(new_seekable) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_15 { - pub new_scrambled: libc::c_int, + pub new_pausable: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_15() { @@ -3963,7 +7534,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_15() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_15>())).new_scrambled + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_15>())).new_pausable as *const _ as usize }, 0usize, @@ -3971,14 +7542,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_15() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_15), "::", - stringify!(new_scrambled) + stringify!(new_pausable) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_16 { - pub new_count: libc::c_int, + pub new_scrambled: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_16() { @@ -4000,7 +7571,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_16() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_16>())).new_count + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_16>())).new_scrambled as *const _ as usize }, 0usize, @@ -4008,21 +7579,20 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_16() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_16), "::", - stringify!(new_count) + stringify!(new_scrambled) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_17 { - pub item: *mut libvlc_media_t, - pub index: libc::c_int, + pub new_count: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_17() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_17>(), - 16usize, + 4usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_17) @@ -4030,7 +7600,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_17() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_17>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_17) @@ -4038,7 +7608,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_17() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_17>())).item + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_17>())).new_count as *const _ as usize }, 0usize, @@ -4046,20 +7616,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_17() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_17), "::", - stringify!(item) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_17>())).index - as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_17), - "::", - stringify!(index) + stringify!(new_count) ) ); } @@ -4220,12 +7777,13 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_20() { #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_21 { pub item: *mut libvlc_media_t, + pub index: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_21() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_21>(), - 8usize, + 16usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_21) @@ -4252,11 +7810,24 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_21() { stringify!(item) ) ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_21>())).index + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_21), + "::", + stringify!(index) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_22 { - pub psz_filename: *mut libc::c_char, + pub item: *mut libvlc_media_t, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_22() { @@ -4278,7 +7849,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_22() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_22>())).psz_filename + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_22>())).item as *const _ as usize }, 0usize, @@ -4286,14 +7857,14 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_22() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_22), "::", - stringify!(psz_filename) + stringify!(item) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_23 { - pub new_length: libvlc_time_t, + pub psz_filename: *mut libc::c_char, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_23() { @@ -4315,7 +7886,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_23() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_23>())).new_length + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_23>())).psz_filename as *const _ as usize }, 0usize, @@ -4323,21 +7894,20 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_23() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_23), "::", - stringify!(new_length) + stringify!(psz_filename) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_24 { - pub psz_media_name: *const libc::c_char, - pub psz_instance_name: *const libc::c_char, + pub new_length: libvlc_time_t, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_24() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_24>(), - 16usize, + 8usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_24) @@ -4353,7 +7923,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_24() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_24>())).psz_media_name + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_24>())).new_length as *const _ as usize }, 0usize, @@ -4361,20 +7931,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_24() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_24), "::", - stringify!(psz_media_name) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_24>())) - .psz_instance_name as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_24), - "::", - stringify!(psz_instance_name) + stringify!(new_length) ) ); } @@ -4419,13 +7976,17 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_25() { #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_26 { pub i_type: libvlc_track_type_t, + #[doc = "< Deprecated, use psz_id"] pub i_id: libc::c_int, + #[doc = " Call libvlc_media_player_get_track_from_id() to get the track"] + #[doc = " description."] + pub psz_id: *const libc::c_char, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_26() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_26>(), - 8usize, + 16usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_26) @@ -4433,7 +7994,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_26() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_26>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_26) @@ -4465,17 +8026,32 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_26() { stringify!(i_id) ) ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_26>())).psz_id + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_26), + "::", + stringify!(psz_id) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_27 { - pub volume: f32, + pub i_type: libvlc_track_type_t, + pub psz_unselected_id: *const libc::c_char, + pub psz_selected_id: *const libc::c_char, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_27() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>(), - 4usize, + 24usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_27) @@ -4483,7 +8059,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_27() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>(), - 4usize, + 8usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_27) @@ -4491,7 +8067,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_27() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>())).volume + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>())).i_type as *const _ as usize }, 0usize, @@ -4499,20 +8075,46 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_27() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_27), "::", - stringify!(volume) + stringify!(i_type) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>())) + .psz_unselected_id as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_27), + "::", + stringify!(psz_unselected_id) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_27>())).psz_selected_id + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_27), + "::", + stringify!(psz_selected_id) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_28 { - pub device: *const libc::c_char, + pub i_id: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_28() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_28>(), - 8usize, + 4usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_28) @@ -4520,7 +8122,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_28() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_28>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_28) @@ -4528,7 +8130,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_28() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_28>())).device + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_28>())).i_id as *const _ as usize }, 0usize, @@ -4536,14 +8138,15 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_28() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_28), "::", - stringify!(device) + stringify!(i_id) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_29 { - pub item: *mut libvlc_renderer_item_t, + pub i_unselected_id: libc::c_int, + pub i_selected_id: libc::c_int, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_29() { @@ -4557,7 +8160,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_29() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_29>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_29) @@ -4565,7 +8168,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_29() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_29>())).item + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_29>())).i_unselected_id as *const _ as usize }, 0usize, @@ -4573,20 +8176,33 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_29() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_29), "::", - stringify!(item) + stringify!(i_unselected_id) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_29>())).i_selected_id + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_29), + "::", + stringify!(i_selected_id) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_30 { - pub item: *mut libvlc_renderer_item_t, + pub volume: f32, } #[test] fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_30() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_30>(), - 8usize, + 4usize, concat!( "Size of: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_30) @@ -4594,7 +8210,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_30() { ); assert_eq!( ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_30>(), - 8usize, + 4usize, concat!( "Alignment of ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_30) @@ -4602,7 +8218,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_30() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_30>())).item + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_30>())).volume as *const _ as usize }, 0usize, @@ -4610,6 +8226,117 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_30() { "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_30), "::", + stringify!(volume) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_31 { + pub device: *const libc::c_char, +} +#[test] +fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_31() { + assert_eq!( + ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_31>(), + 8usize, + concat!( + "Size of: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_31) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_31>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_31) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_31>())).device + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_31), + "::", + stringify!(device) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_32 { + pub item: *mut libvlc_renderer_item_t, +} +#[test] +fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_32() { + assert_eq!( + ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_32>(), + 8usize, + concat!( + "Size of: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_32) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_32>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_32) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_32>())).item + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_32), + "::", + stringify!(item) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct libvlc_event_t__bindgen_ty_1__bindgen_ty_33 { + pub item: *mut libvlc_renderer_item_t, +} +#[test] +fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_33() { + assert_eq!( + ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_33>(), + 8usize, + concat!( + "Size of: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_33) + ) + ); + assert_eq!( + ::core::mem::align_of::<libvlc_event_t__bindgen_ty_1__bindgen_ty_33>(), + 8usize, + concat!( + "Alignment of ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_33) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1__bindgen_ty_33>())).item + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1__bindgen_ty_33), + "::", stringify!(item) ) ); @@ -4618,7 +8345,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1__bindgen_ty_30() { fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { assert_eq!( ::core::mem::size_of::<libvlc_event_t__bindgen_ty_1>(), - 16usize, + 24usize, concat!("Size of: ", stringify!(libvlc_event_t__bindgen_ty_1)) ); assert_eq!( @@ -4678,19 +8405,6 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { stringify!(media_parsed_changed) ) ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_freed as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_event_t__bindgen_ty_1), - "::", - stringify!(media_freed) - ) - ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_state_changed @@ -4704,6 +8418,19 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { stringify!(media_state_changed) ) ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_thumbnail_generated + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1), + "::", + stringify!(media_thumbnail_generated) + ) + ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_subitemtree_added @@ -4717,6 +8444,19 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { stringify!(media_subitemtree_added) ) ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())) + .media_attached_thumbnails_found as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1), + "::", + stringify!(media_attached_thumbnails_found) + ) + ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_player_buffering @@ -4771,15 +8511,15 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_player_title_changed - as *const _ as usize + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())) + .media_player_title_selection_changed as *const _ as usize }, 0usize, concat!( "Offset of field: ", stringify!(libvlc_event_t__bindgen_ty_1), "::", - stringify!(media_player_title_changed) + stringify!(media_player_title_selection_changed) ) ); assert_eq!( @@ -4925,19 +8665,6 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { stringify!(media_player_length_changed) ) ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).vlm_media_event as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_event_t__bindgen_ty_1), - "::", - stringify!(vlm_media_event) - ) - ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_player_media_changed @@ -4964,6 +8691,45 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { stringify!(media_player_es_changed) ) ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())) + .media_player_es_selection_changed as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1), + "::", + stringify!(media_player_es_selection_changed) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_player_program_changed + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1), + "::", + stringify!(media_player_program_changed) + ) + ); + assert_eq!( + unsafe { + &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())) + .media_player_program_selection_changed as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(libvlc_event_t__bindgen_ty_1), + "::", + stringify!(media_player_program_selection_changed) + ) + ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_event_t__bindgen_ty_1>())).media_player_audio_volume @@ -5021,7 +8787,7 @@ fn bindgen_test_layout_libvlc_event_t__bindgen_ty_1() { fn bindgen_test_layout_libvlc_event_t() { assert_eq!( ::core::mem::size_of::<libvlc_event_t>(), - 32usize, + 40usize, concat!("Size of: ", stringify!(libvlc_event_t)) ); assert_eq!( @@ -5071,17 +8837,37 @@ pub const libvlc_dialog_question_type_LIBVLC_DIALOG_QUESTION_WARNING: libvlc_dia 1; pub const libvlc_dialog_question_type_LIBVLC_DIALOG_QUESTION_CRITICAL: libvlc_dialog_question_type = 2; +#[doc = " @defgroup libvlc_dialog LibVLC dialog"] +#[doc = " @ingroup libvlc"] +#[doc = " @{"] +#[doc = " @file"] +#[doc = " LibVLC dialog external API"] pub type libvlc_dialog_question_type = libc::c_uint; +#[doc = " Dialog callbacks to be implemented"] +#[doc = ""] +#[doc = " @attention starting with vlc 4.0.0 the error callback (pf_display_error) is"] +#[doc = " no longer part of this struct and need to be registered separately"] +#[doc = " using @a libvlc_dialog_set_error_callback"] +#[doc = ""] +#[doc = " @see libvlc_dialog_set_error_callback"] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct libvlc_dialog_cbs { - pub pf_display_error: ::core::option::Option< - unsafe extern "C" fn( - p_data: *mut libc::c_void, - psz_title: *const libc::c_char, - psz_text: *const libc::c_char, - ), - >, + #[doc = " Called when a login dialog needs to be displayed"] + #[doc = ""] + #[doc = " You can interact with this dialog by calling libvlc_dialog_post_login()"] + #[doc = " to post an answer or libvlc_dialog_dismiss() to cancel this dialog."] + #[doc = ""] + #[doc = " @note to receive this callback, libvlc_dialog_cbs.pf_cancel should not be"] + #[doc = " NULL."] + #[doc = ""] + #[doc = " @param p_data opaque pointer for the callback"] + #[doc = " @param p_id id used to interact with the dialog"] + #[doc = " @param psz_title title of the dialog"] + #[doc = " @param psz_text text of the dialog"] + #[doc = " @param psz_default_username user name that should be set on the user form"] + #[doc = " @param b_ask_store if true, ask the user if he wants to save the"] + #[doc = " credentials"] pub pf_display_login: ::core::option::Option< unsafe extern "C" fn( p_data: *mut libc::c_void, @@ -5092,6 +8878,24 @@ pub struct libvlc_dialog_cbs { b_ask_store: bool, ), >, + #[doc = " Called when a question dialog needs to be displayed"] + #[doc = ""] + #[doc = " You can interact with this dialog by calling libvlc_dialog_post_action()"] + #[doc = " to post an answer or libvlc_dialog_dismiss() to cancel this dialog."] + #[doc = ""] + #[doc = " @note to receive this callback, libvlc_dialog_cbs.pf_cancel should not be"] + #[doc = " NULL."] + #[doc = ""] + #[doc = " @param p_data opaque pointer for the callback"] + #[doc = " @param p_id id used to interact with the dialog"] + #[doc = " @param psz_title title of the dialog"] + #[doc = " @param psz_text text of the dialog"] + #[doc = " @param i_type question type (or severity) of the dialog"] + #[doc = " @param psz_cancel text of the cancel button"] + #[doc = " @param psz_action1 text of the first button, if NULL, don't display this"] + #[doc = " button"] + #[doc = " @param psz_action2 text of the second button, if NULL, don't display"] + #[doc = " this button"] pub pf_display_question: ::core::option::Option< unsafe extern "C" fn( p_data: *mut libc::c_void, @@ -5104,6 +8908,23 @@ pub struct libvlc_dialog_cbs { psz_action2: *const libc::c_char, ), >, + #[doc = " Called when a progress dialog needs to be displayed"] + #[doc = ""] + #[doc = " If cancellable (psz_cancel != NULL), you can cancel this dialog by"] + #[doc = " calling libvlc_dialog_dismiss()"] + #[doc = ""] + #[doc = " @note to receive this callback, libvlc_dialog_cbs.pf_cancel and"] + #[doc = " libvlc_dialog_cbs.pf_update_progress should not be NULL."] + #[doc = ""] + #[doc = " @param p_data opaque pointer for the callback"] + #[doc = " @param p_id id used to interact with the dialog"] + #[doc = " @param psz_title title of the dialog"] + #[doc = " @param psz_text text of the dialog"] + #[doc = " @param b_indeterminate true if the progress dialog is indeterminate"] + #[doc = " @param f_position initial position of the progress bar (between 0.0 and"] + #[doc = " 1.0)"] + #[doc = " @param psz_cancel text of the cancel button, if NULL the dialog is not"] + #[doc = " cancellable"] pub pf_display_progress: ::core::option::Option< unsafe extern "C" fn( p_data: *mut libc::c_void, @@ -5115,9 +8936,22 @@ pub struct libvlc_dialog_cbs { psz_cancel: *const libc::c_char, ), >, + #[doc = " Called when a displayed dialog needs to be cancelled"] + #[doc = ""] + #[doc = " The implementation must call libvlc_dialog_dismiss() to really release"] + #[doc = " the dialog."] + #[doc = ""] + #[doc = " @param p_data opaque pointer for the callback"] + #[doc = " @param p_id id of the dialog"] pub pf_cancel: ::core::option::Option< unsafe extern "C" fn(p_data: *mut libc::c_void, p_id: *mut libvlc_dialog_id), >, + #[doc = " Called when a progress dialog needs to be updated"] + #[doc = ""] + #[doc = " @param p_data opaque pointer for the callback"] + #[doc = " @param p_id id of the dialog"] + #[doc = " @param f_position osition of the progress bar (between 0.0 and 1.0)"] + #[doc = " @param psz_text new text of the progress dialog"] pub pf_update_progress: ::core::option::Option< unsafe extern "C" fn( p_data: *mut libc::c_void, @@ -5131,7 +8965,7 @@ pub struct libvlc_dialog_cbs { fn bindgen_test_layout_libvlc_dialog_cbs() { assert_eq!( ::core::mem::size_of::<libvlc_dialog_cbs>(), - 48usize, + 40usize, concat!("Size of: ", stringify!(libvlc_dialog_cbs)) ); assert_eq!( @@ -5139,23 +8973,11 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { 8usize, concat!("Alignment of ", stringify!(libvlc_dialog_cbs)) ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_display_error as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(libvlc_dialog_cbs), - "::", - stringify!(pf_display_error) - ) - ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_display_login as *const _ as usize }, - 8usize, + 0usize, concat!( "Offset of field: ", stringify!(libvlc_dialog_cbs), @@ -5167,7 +8989,7 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { unsafe { &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_display_question as *const _ as usize }, - 16usize, + 8usize, concat!( "Offset of field: ", stringify!(libvlc_dialog_cbs), @@ -5179,7 +9001,7 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { unsafe { &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_display_progress as *const _ as usize }, - 24usize, + 16usize, concat!( "Offset of field: ", stringify!(libvlc_dialog_cbs), @@ -5189,7 +9011,7 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { ); assert_eq!( unsafe { &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_cancel as *const _ as usize }, - 32usize, + 24usize, concat!( "Offset of field: ", stringify!(libvlc_dialog_cbs), @@ -5201,7 +9023,7 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { unsafe { &(*(::core::ptr::null::<libvlc_dialog_cbs>())).pf_update_progress as *const _ as usize }, - 40usize, + 32usize, concat!( "Offset of field: ", stringify!(libvlc_dialog_cbs), @@ -5210,7 +9032,25 @@ fn bindgen_test_layout_libvlc_dialog_cbs() { ) ); } +#[doc = " Called when an error message needs to be displayed"] +#[doc = ""] +#[doc = " @param p_data opaque pointer for the callback"] +#[doc = " @param psz_title title of the dialog"] +#[doc = " @param psz_text text of the dialog"] +pub type libvlc_dialog_error_cbs = ::core::option::Option< + unsafe extern "C" fn( + p_data: *mut libc::c_void, + psz_title: *const libc::c_char, + psz_text: *const libc::c_char, + ), +>; extern "C" { + #[doc = " Register callbacks in order to handle VLC dialogs"] + #[doc = ""] + #[doc = " @version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " @param p_cbs a pointer to callbacks, or NULL to unregister callbacks."] + #[doc = " @param p_data opaque pointer for the callback"] pub fn libvlc_dialog_set_callbacks( p_instance: *mut libvlc_instance_t, p_cbs: *const libvlc_dialog_cbs, @@ -5218,12 +9058,38 @@ extern "C" { ); } extern "C" { + pub fn libvlc_dialog_set_error_callback( + p_instance: *mut libvlc_instance_t, + p_cbs: libvlc_dialog_error_cbs, + p_data: *mut libc::c_void, + ); +} +extern "C" { + #[doc = " Associate an opaque pointer with the dialog id"] + #[doc = ""] + #[doc = " @version LibVLC 3.0.0 and later."] pub fn libvlc_dialog_set_context(p_id: *mut libvlc_dialog_id, p_context: *mut libc::c_void); } extern "C" { + #[doc = " Return the opaque pointer associated with the dialog id"] + #[doc = " \\see libvlc_dialog_set_context"] + #[doc = " @version LibVLC 3.0.0 and later."] pub fn libvlc_dialog_get_context(p_id: *mut libvlc_dialog_id) -> *mut libc::c_void; } extern "C" { + #[doc = " Post a login answer"] + #[doc = ""] + #[doc = " After this call, p_id won't be valid anymore"] + #[doc = ""] + #[doc = " @see libvlc_dialog_cbs.pf_display_login"] + #[doc = ""] + #[doc = " @version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " @param p_id id of the dialog"] + #[doc = " @param psz_username valid and non empty string"] + #[doc = " @param psz_password valid string (can be empty)"] + #[doc = " @param b_store if true, store the credentials"] + #[doc = " @return 0 on success, or -1 on error"] pub fn libvlc_dialog_post_login( p_id: *mut libvlc_dialog_id, psz_username: *const libc::c_char, @@ -5232,395 +9098,297 @@ extern "C" { ) -> libc::c_int; } extern "C" { + #[doc = " Post a question answer"] + #[doc = ""] + #[doc = " After this call, p_id won't be valid anymore"] + #[doc = ""] + #[doc = " @see libvlc_dialog_cbs.pf_display_question"] + #[doc = ""] + #[doc = " @version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " @param p_id id of the dialog"] + #[doc = " @param i_action 1 for action1, 2 for action2"] + #[doc = " @return 0 on success, or -1 on error"] pub fn libvlc_dialog_post_action( p_id: *mut libvlc_dialog_id, i_action: libc::c_int, ) -> libc::c_int; } extern "C" { + #[doc = " Dismiss a dialog"] + #[doc = ""] + #[doc = " After this call, p_id won't be valid anymore"] + #[doc = ""] + #[doc = " @see libvlc_dialog_cbs.pf_cancel"] + #[doc = ""] + #[doc = " @version LibVLC 3.0.0 and later."] + #[doc = ""] + #[doc = " @param p_id id of the dialog"] + #[doc = " @return 0 on success, or -1 on error"] pub fn libvlc_dialog_dismiss(p_id: *mut libvlc_dialog_id) -> libc::c_int; } extern "C" { - pub fn libvlc_vlm_release(p_instance: *mut libvlc_instance_t); -} -extern "C" { - pub fn libvlc_vlm_add_broadcast( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_input: *const libc::c_char, - psz_output: *const libc::c_char, - i_options: libc::c_int, - ppsz_options: *const *const libc::c_char, - b_enabled: libc::c_int, - b_loop: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_add_vod( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_input: *const libc::c_char, - i_options: libc::c_int, - ppsz_options: *const *const libc::c_char, - b_enabled: libc::c_int, - psz_mux: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_del_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_set_enabled( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - b_enabled: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_set_output( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_output: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_set_input( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_input: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_add_input( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_input: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_set_loop( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - b_loop: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_set_mux( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_mux: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_change_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - psz_input: *const libc::c_char, - psz_output: *const libc::c_char, - i_options: libc::c_int, - ppsz_options: *const *const libc::c_char, - b_enabled: libc::c_int, - b_loop: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_play_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_stop_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_pause_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_seek_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - f_percentage: f32, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_show_media( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> *const libc::c_char; -} -extern "C" { - pub fn libvlc_vlm_get_media_instance_position( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - i_instance: libc::c_int, - ) -> f32; -} -extern "C" { - pub fn libvlc_vlm_get_media_instance_time( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - i_instance: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_get_media_instance_length( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - i_instance: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_get_media_instance_rate( - p_instance: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - i_instance: libc::c_int, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_vlm_get_event_manager( - p_instance: *mut libvlc_instance_t, - ) -> *mut libvlc_event_manager_t; -} -extern "C" { - pub fn libvlc_media_player_get_fps(p_mi: *mut libvlc_media_player_t) -> f32; -} -extern "C" { - pub fn libvlc_media_player_set_agl(p_mi: *mut libvlc_media_player_t, drawable: u32); -} -extern "C" { - pub fn libvlc_media_player_get_agl(p_mi: *mut libvlc_media_player_t) -> u32; -} -extern "C" { - pub fn libvlc_track_description_release(p_track_description: *mut libvlc_track_description_t); -} -extern "C" { - pub fn libvlc_video_get_height(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_get_width(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_video_get_title_description( - p_mi: *mut libvlc_media_player_t, - ) -> *mut libvlc_track_description_t; -} -extern "C" { - pub fn libvlc_video_get_chapter_description( - p_mi: *mut libvlc_media_player_t, - i_title: libc::c_int, - ) -> *mut libvlc_track_description_t; -} -extern "C" { - pub fn libvlc_video_set_subtitle_file( - p_mi: *mut libvlc_media_player_t, - psz_subtitle: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_toggle_teletext(p_mi: *mut libvlc_media_player_t); -} -extern "C" { - pub fn libvlc_audio_output_device_count( - p_instance: *mut libvlc_instance_t, - psz_audio_output: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_audio_output_device_longname( - p_instance: *mut libvlc_instance_t, - psz_output: *const libc::c_char, - i_device: libc::c_int, - ) -> *mut libc::c_char; -} -extern "C" { - pub fn libvlc_audio_output_device_id( - p_instance: *mut libvlc_instance_t, - psz_audio_output: *const libc::c_char, - i_device: libc::c_int, - ) -> *mut libc::c_char; -} -extern "C" { - pub fn libvlc_audio_output_get_device_type(p_mi: *mut libvlc_media_player_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_audio_output_set_device_type( - p_mp: *mut libvlc_media_player_t, - device_type: libc::c_int, - ); -} -extern "C" { + #[doc = " Parse a media."] + #[doc = ""] + #[doc = " This fetches (local) art, meta data and tracks information."] + #[doc = " The method is synchronous."] + #[doc = ""] + #[doc = " \\deprecated This function could block indefinitely."] + #[doc = " Use libvlc_media_parse_with_options() instead"] + #[doc = ""] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = " \\see libvlc_media_get_meta"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] pub fn libvlc_media_parse(p_md: *mut libvlc_media_t); } extern "C" { + #[doc = " Parse a media."] + #[doc = ""] + #[doc = " This fetches (local) art, meta data and tracks information."] + #[doc = " The method is the asynchronous of libvlc_media_parse()."] + #[doc = ""] + #[doc = " To track when this is over you can listen to libvlc_MediaParsedChanged"] + #[doc = " event. However if the media was already parsed you will not receive this"] + #[doc = " event."] + #[doc = ""] + #[doc = " \\deprecated You can't be sure to receive the libvlc_MediaParsedChanged"] + #[doc = " event (you can wait indefinitely for this event)."] + #[doc = " Use libvlc_media_parse_with_options() instead"] + #[doc = ""] + #[doc = " \\see libvlc_media_parse"] + #[doc = " \\see libvlc_MediaParsedChanged"] + #[doc = " \\see libvlc_media_get_meta"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] pub fn libvlc_media_parse_async(p_md: *mut libvlc_media_t); } extern "C" { - pub fn libvlc_media_is_parsed(p_md: *mut libvlc_media_t) -> libc::c_int; + #[doc = " Return true is the media descriptor object is parsed"] + #[doc = ""] + #[doc = " \\deprecated This can return true in case of failure."] + #[doc = " Use libvlc_media_get_parsed_status() instead"] + #[doc = ""] + #[doc = " \\see libvlc_MediaParsedChanged"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\retval true media object has been parsed"] + #[doc = " \\retval false otherwise"] + pub fn libvlc_media_is_parsed(p_md: *mut libvlc_media_t) -> bool; } extern "C" { - pub fn libvlc_media_get_tracks_info( + #[doc = " Get media descriptor's elementary streams description"] + #[doc = ""] + #[doc = " Note, you need to call libvlc_media_parse_with_options() or play the media"] + #[doc = " at least once before calling this function."] + #[doc = " Not doing this will result in an empty array."] + #[doc = ""] + #[doc = " \\version LibVLC 2.1.0 and later."] + #[doc = " \\see libvlc_media_parse_with_options"] + #[doc = ""] + #[doc = " \\param p_md media descriptor object"] + #[doc = " \\param tracks address to store an allocated array of Elementary Streams"] + #[doc = " descriptions (must be freed with libvlc_media_tracks_release"] + #[doc = "by the caller) [OUT]"] + #[doc = ""] + #[doc = " \\return the number of Elementary Streams (zero on error)"] + pub fn libvlc_media_tracks_get( p_md: *mut libvlc_media_t, - tracks: *mut *mut libvlc_media_track_info_t, - ) -> libc::c_int; + tracks: *mut *mut *mut libvlc_media_track_t, + ) -> libc::c_uint; } extern "C" { - pub fn libvlc_media_list_add_file_content( - p_ml: *mut libvlc_media_list_t, - psz_uri: *const libc::c_char, - ) -> libc::c_int; -} -extern "C" { - pub fn libvlc_media_discoverer_new_from_name( - p_inst: *mut libvlc_instance_t, - psz_name: *const libc::c_char, - ) -> *mut libvlc_media_discoverer_t; -} -extern "C" { - pub fn libvlc_media_discoverer_localized_name( - p_mdis: *mut libvlc_media_discoverer_t, - ) -> *mut libc::c_char; -} -extern "C" { - pub fn libvlc_media_discoverer_event_manager( - p_mdis: *mut libvlc_media_discoverer_t, - ) -> *mut libvlc_event_manager_t; -} -extern "C" { - pub fn libvlc_wait(p_instance: *mut libvlc_instance_t); + #[doc = " Release media descriptor's elementary streams description array"] + #[doc = ""] + #[doc = " \\version LibVLC 2.1.0 and later."] + #[doc = ""] + #[doc = " \\param p_tracks tracks info array to release"] + #[doc = " \\param i_count number of elements in the array"] + pub fn libvlc_media_tracks_release( + p_tracks: *mut *mut libvlc_media_track_t, + i_count: libc::c_uint, + ); } +#[doc = " Description for video, audio tracks and subtitles. It contains"] +#[doc = " id, name (description string) and pointer to next record."] #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct libvlc_log_iterator_t { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct libvlc_log_message_t { - pub i_severity: libc::c_int, - pub psz_type: *const libc::c_char, - pub psz_name: *const libc::c_char, - pub psz_header: *const libc::c_char, - pub psz_message: *const libc::c_char, +pub struct libvlc_track_description_t { + pub i_id: libc::c_int, + pub psz_name: *mut libc::c_char, + pub p_next: *mut libvlc_track_description_t, } #[test] -fn bindgen_test_layout_libvlc_log_message_t() { +fn bindgen_test_layout_libvlc_track_description_t() { assert_eq!( - ::core::mem::size_of::<libvlc_log_message_t>(), - 40usize, - concat!("Size of: ", stringify!(libvlc_log_message_t)) + ::core::mem::size_of::<libvlc_track_description_t>(), + 24usize, + concat!("Size of: ", stringify!(libvlc_track_description_t)) ); assert_eq!( - ::core::mem::align_of::<libvlc_log_message_t>(), + ::core::mem::align_of::<libvlc_track_description_t>(), 8usize, - concat!("Alignment of ", stringify!(libvlc_log_message_t)) + concat!("Alignment of ", stringify!(libvlc_track_description_t)) ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_log_message_t>())).i_severity as *const _ as usize + &(*(::core::ptr::null::<libvlc_track_description_t>())).i_id as *const _ as usize }, 0usize, concat!( "Offset of field: ", - stringify!(libvlc_log_message_t), + stringify!(libvlc_track_description_t), "::", - stringify!(i_severity) + stringify!(i_id) ) ); assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_log_message_t>())).psz_type as *const _ as usize }, + unsafe { + &(*(::core::ptr::null::<libvlc_track_description_t>())).psz_name as *const _ as usize + }, 8usize, concat!( "Offset of field: ", - stringify!(libvlc_log_message_t), - "::", - stringify!(psz_type) - ) - ); - assert_eq!( - unsafe { &(*(::core::ptr::null::<libvlc_log_message_t>())).psz_name as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(libvlc_log_message_t), + stringify!(libvlc_track_description_t), "::", stringify!(psz_name) ) ); assert_eq!( unsafe { - &(*(::core::ptr::null::<libvlc_log_message_t>())).psz_header as *const _ as usize + &(*(::core::ptr::null::<libvlc_track_description_t>())).p_next as *const _ as usize }, - 24usize, + 16usize, concat!( "Offset of field: ", - stringify!(libvlc_log_message_t), + stringify!(libvlc_track_description_t), "::", - stringify!(psz_header) - ) - ); - assert_eq!( - unsafe { - &(*(::core::ptr::null::<libvlc_log_message_t>())).psz_message as *const _ as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(libvlc_log_message_t), - "::", - stringify!(psz_message) + stringify!(p_next) ) ); } extern "C" { - pub fn libvlc_get_log_verbosity(p_instance: *const libvlc_instance_t) -> libc::c_uint; -} -extern "C" { - pub fn libvlc_set_log_verbosity(p_instance: *mut libvlc_instance_t, level: libc::c_uint); -} -extern "C" { - pub fn libvlc_log_open(p_instance: *mut libvlc_instance_t) -> *mut libvlc_log_t; -} -extern "C" { - pub fn libvlc_log_close(p_log: *mut libvlc_log_t); -} -extern "C" { - pub fn libvlc_log_count(p_log: *const libvlc_log_t) -> libc::c_uint; -} -extern "C" { - pub fn libvlc_log_clear(p_log: *mut libvlc_log_t); -} -extern "C" { - pub fn libvlc_log_get_iterator(p_log: *const libvlc_log_t) -> *mut libvlc_log_iterator_t; -} -extern "C" { - pub fn libvlc_log_iterator_free(p_iter: *mut libvlc_log_iterator_t); -} -extern "C" { - pub fn libvlc_log_iterator_has_next(p_iter: *const libvlc_log_iterator_t) -> libc::c_int; -} -extern "C" { - pub fn libvlc_log_iterator_next( - p_iter: *mut libvlc_log_iterator_t, - p_buf: *mut libvlc_log_message_t, - ) -> *mut libvlc_log_message_t; -} -extern "C" { - pub fn libvlc_playlist_play( - p_instance: *mut libvlc_instance_t, - i_id: libc::c_int, - i_options: libc::c_int, - ppsz_options: *mut *mut libc::c_char, + #[doc = " Release (free) libvlc_track_description_t"] + #[doc = ""] + #[doc = " \\param p_track_description the structure to release"] + pub fn libvlc_track_description_list_release( + p_track_description: *mut libvlc_track_description_t, ); } +extern "C" { + #[doc = " Get number of available video tracks."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the number of available video tracks (int)"] + pub fn libvlc_video_get_track_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Get the description of available video tracks."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return list with description of available video tracks, or NULL on error."] + #[doc = " It must be freed with libvlc_track_description_list_release()"] + pub fn libvlc_video_get_track_description( + p_mi: *mut libvlc_media_player_t, + ) -> *mut libvlc_track_description_t; +} +extern "C" { + #[doc = " Get current video track."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the video track ID (int) or -1 if no active input"] + pub fn libvlc_video_get_track(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Set video track."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param i_track the track ID (i_id field from track description)"] + #[doc = " \\return 0 on success, -1 if out of range"] + pub fn libvlc_video_set_track( + p_mi: *mut libvlc_media_player_t, + i_track: libc::c_int, + ) -> libc::c_int; +} +extern "C" { + #[doc = " Get current video subtitle."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the video subtitle selected, or -1 if none"] + pub fn libvlc_video_get_spu(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Get the number of available video subtitles."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return the number of available video subtitles"] + pub fn libvlc_video_get_spu_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Get the description of available video subtitles."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\return list containing description of available video subtitles."] + #[doc = " It must be freed with libvlc_track_description_list_release()"] + pub fn libvlc_video_get_spu_description( + p_mi: *mut libvlc_media_player_t, + ) -> *mut libvlc_track_description_t; +} +extern "C" { + #[doc = " Set new video subtitle."] + #[doc = ""] + #[doc = " \\param p_mi the media player"] + #[doc = " \\param i_spu video subtitle track to select (i_id from track description)"] + #[doc = " \\return 0 on success, -1 if out of range"] + pub fn libvlc_video_set_spu( + p_mi: *mut libvlc_media_player_t, + i_spu: libc::c_int, + ) -> libc::c_int; +} +extern "C" { + #[doc = " Get number of available audio tracks."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the number of available audio tracks (int), or -1 if unavailable"] + pub fn libvlc_audio_get_track_count(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Get the description of available audio tracks."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return list with description of available audio tracks, or NULL."] + #[doc = " It must be freed with libvlc_track_description_list_release()"] + pub fn libvlc_audio_get_track_description( + p_mi: *mut libvlc_media_player_t, + ) -> *mut libvlc_track_description_t; +} +extern "C" { + #[doc = " Get current audio track."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\return the audio track ID or -1 if no active input."] + pub fn libvlc_audio_get_track(p_mi: *mut libvlc_media_player_t) -> libc::c_int; +} +extern "C" { + #[doc = " Set current audio track."] + #[doc = ""] + #[doc = " \\param p_mi media player"] + #[doc = " \\param i_track the track ID (i_id field from track description)"] + #[doc = " \\return 0 on success, -1 on error"] + pub fn libvlc_audio_set_track( + p_mi: *mut libvlc_media_player_t, + i_track: libc::c_int, + ) -> libc::c_int; +} +extern "C" { + #[doc = " Start playing (if there is any item in the playlist)."] + #[doc = ""] + #[doc = " Additional playlist item options can be specified for addition to the"] + #[doc = " item before it is played."] + #[doc = ""] + #[doc = " \\param p_instance the playlist instance"] + pub fn libvlc_playlist_play(p_instance: *mut libvlc_instance_t); +} pub type __builtin_va_list = [__va_list_tag; 1usize]; #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/src/core.rs b/src/core.rs index 1b4094b..ab7c763 100644 --- a/src/core.rs +++ b/src/core.rs @@ -91,11 +91,6 @@ impl Instance { } } - /// Waits until an interface causes the instance to exit. - pub fn wait(&self) { - unsafe{ sys::libvlc_wait(self.ptr) }; - } - /// Sets some meta-information about the application. pub fn set_app_id(&self, id: &str, version: &str, icon: &str) { unsafe{ @@ -122,15 +117,6 @@ impl Instance { } } - /// Returns the VLM event manager - pub fn vlm_event_manager<'a>(&'a self) -> EventManager<'a> { - unsafe{ - let p = sys::libvlc_vlm_get_event_manager(self.ptr); - assert!(!p.is_null()); - EventManager{ptr: p, _phantomdata: ::std::marker::PhantomData} - } - } - /// Set logging callback pub fn set_log<F: Fn(LogLevel, Log, Cow<str>) + Send + 'static>(&self, f: F) { let cb: Box<Box<dyn Fn(LogLevel, Log, Cow<str>) + Send + 'static>> = Box::new(Box::new(f)); @@ -385,15 +371,6 @@ fn conv_event(pe: *const sys::libvlc_event_t) -> Event { Event::MediaParsedChanged((*pe).u.media_parsed_changed.new_status) } }, - EventType::MediaFreed => { - Event::MediaFreed - }, - EventType::MediaStateChanged => { - unsafe{ - let new_state: sys::libvlc_state_t = (*pe).u.media_state_changed.new_state.try_into().unwrap(); - Event::MediaStateChanged(new_state.into()) - } - }, EventType::MediaSubItemTreeAdded => { Event::MediaSubItemTreeAdded }, @@ -426,9 +403,6 @@ fn conv_event(pe: *const sys::libvlc_event_t) -> Event { EventType::MediaPlayerBackward => { Event::MediaPlayerBackward }, - EventType::MediaPlayerEndReached => { - Event::MediaPlayerEndReached - }, EventType::MediaPlayerEncounteredError => { Event::MediaPlayerEncounteredError }, @@ -446,9 +420,6 @@ fn conv_event(pe: *const sys::libvlc_event_t) -> Event { EventType::MediaPlayerPausableChanged => { Event::MediaPlayerPausableChanged }, - EventType::MediaPlayerTitleChanged => { - Event::MediaPlayerTitleChanged - }, EventType::MediaPlayerSnapshotTaken => { Event::MediaPlayerSnapshotTaken }, @@ -458,9 +429,6 @@ fn conv_event(pe: *const sys::libvlc_event_t) -> Event { EventType::MediaPlayerVout => { Event::MediaPlayerVout }, - EventType::MediaPlayerScrambledChanged => { - Event::MediaPlayerScrambledChanged - }, EventType::MediaListItemAdded => { Event::MediaListItemAdded }, @@ -494,67 +462,6 @@ fn conv_event(pe: *const sys::libvlc_event_t) -> Event { EventType::MediaListPlayerStopped => { Event::MediaListPlayerStopped }, - EventType::MediaDiscovererStarted => { - Event::MediaDiscovererStarted - }, - EventType::MediaDiscovererEnded => { - Event::MediaDiscovererEnded - }, - EventType::VlmMediaAdded => { - unsafe { - Event::VlmMediaAdded(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaRemoved => { - unsafe { - Event::VlmMediaRemoved(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaChanged => { - unsafe { - Event::VlmMediaChanged(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStarted => { - unsafe { - Event::VlmMediaInstanceStarted(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStopped => { - unsafe { - Event::VlmMediaInstanceStopped(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusInit => { - unsafe { - Event::VlmMediaInstanceStatusInit(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusOpening => { - unsafe { - Event::VlmMediaInstanceStatusOpening(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusPlaying => { - unsafe { - Event::VlmMediaInstanceStatusPlaying(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusPause => { - unsafe { - Event::VlmMediaInstanceStatusPause(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusEnd => { - unsafe { - Event::VlmMediaInstanceStatusEnd(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, - EventType::VlmMediaInstanceStatusError => { - unsafe { - Event::VlmMediaInstanceStatusError(from_cstr((*pe).u.vlm_media_event.psz_instance_name), from_cstr((*pe).u.vlm_media_event.psz_media_name)) - } - }, } } diff --git a/src/enums.rs b/src/enums.rs index 2b90e38..01f53bb 100644 --- a/src/enums.rs +++ b/src/enums.rs @@ -70,7 +70,6 @@ define_enum!( Playing = libvlc_state_t_libvlc_Playing, Paused = libvlc_state_t_libvlc_Paused, Stopped = libvlc_state_t_libvlc_Stopped, - Ended = libvlc_state_t_libvlc_Ended, Error = libvlc_state_t_libvlc_Error, ); @@ -122,8 +121,6 @@ define_enum!( MediaSubItemAdded = libvlc_event_e_libvlc_MediaSubItemAdded, MediaDurationChanged = libvlc_event_e_libvlc_MediaDurationChanged, MediaParsedChanged = libvlc_event_e_libvlc_MediaParsedChanged, - MediaFreed = libvlc_event_e_libvlc_MediaFreed, - MediaStateChanged = libvlc_event_e_libvlc_MediaStateChanged, MediaSubItemTreeAdded = libvlc_event_e_libvlc_MediaSubItemTreeAdded, MediaPlayerMediaChanged = libvlc_event_e_libvlc_MediaPlayerMediaChanged, MediaPlayerNothingSpecial = libvlc_event_e_libvlc_MediaPlayerNothingSpecial, @@ -134,17 +131,14 @@ define_enum!( MediaPlayerStopped = libvlc_event_e_libvlc_MediaPlayerStopped, MediaPlayerForward = libvlc_event_e_libvlc_MediaPlayerForward, MediaPlayerBackward = libvlc_event_e_libvlc_MediaPlayerBackward, - MediaPlayerEndReached = libvlc_event_e_libvlc_MediaPlayerEndReached, MediaPlayerEncounteredError = libvlc_event_e_libvlc_MediaPlayerEncounteredError, MediaPlayerTimeChanged = libvlc_event_e_libvlc_MediaPlayerTimeChanged, MediaPlayerPositionChanged = libvlc_event_e_libvlc_MediaPlayerPositionChanged, MediaPlayerSeekableChanged = libvlc_event_e_libvlc_MediaPlayerSeekableChanged, MediaPlayerPausableChanged = libvlc_event_e_libvlc_MediaPlayerPausableChanged, - MediaPlayerTitleChanged = libvlc_event_e_libvlc_MediaPlayerTitleChanged, MediaPlayerSnapshotTaken = libvlc_event_e_libvlc_MediaPlayerSnapshotTaken, MediaPlayerLengthChanged = libvlc_event_e_libvlc_MediaPlayerLengthChanged, MediaPlayerVout = libvlc_event_e_libvlc_MediaPlayerVout, - MediaPlayerScrambledChanged = libvlc_event_e_libvlc_MediaPlayerScrambledChanged, MediaListItemAdded = libvlc_event_e_libvlc_MediaListItemAdded, MediaListWillAddItem = libvlc_event_e_libvlc_MediaListWillAddItem, MediaListItemDeleted = libvlc_event_e_libvlc_MediaListItemDeleted, @@ -156,17 +150,4 @@ define_enum!( MediaListPlayerPlayed = libvlc_event_e_libvlc_MediaListPlayerPlayed, MediaListPlayerNextItemSet = libvlc_event_e_libvlc_MediaListPlayerNextItemSet, MediaListPlayerStopped = libvlc_event_e_libvlc_MediaListPlayerStopped, - MediaDiscovererStarted = libvlc_event_e_libvlc_MediaDiscovererStarted, - MediaDiscovererEnded = libvlc_event_e_libvlc_MediaDiscovererEnded, - VlmMediaAdded = libvlc_event_e_libvlc_VlmMediaAdded, - VlmMediaRemoved = libvlc_event_e_libvlc_VlmMediaRemoved, - VlmMediaChanged = libvlc_event_e_libvlc_VlmMediaChanged, - VlmMediaInstanceStarted = libvlc_event_e_libvlc_VlmMediaInstanceStarted, - VlmMediaInstanceStopped = libvlc_event_e_libvlc_VlmMediaInstanceStopped, - VlmMediaInstanceStatusInit = libvlc_event_e_libvlc_VlmMediaInstanceStatusInit, - VlmMediaInstanceStatusOpening = libvlc_event_e_libvlc_VlmMediaInstanceStatusOpening, - VlmMediaInstanceStatusPlaying = libvlc_event_e_libvlc_VlmMediaInstanceStatusPlaying, - VlmMediaInstanceStatusPause = libvlc_event_e_libvlc_VlmMediaInstanceStatusPause, - VlmMediaInstanceStatusEnd = libvlc_event_e_libvlc_VlmMediaInstanceStatusEnd, - VlmMediaInstanceStatusError = libvlc_event_e_libvlc_VlmMediaInstanceStatusError, ); diff --git a/src/lib.rs b/src/lib.rs index 5fdb4f8..f26403c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,18 +9,14 @@ mod core; mod media; mod media_player; mod media_list; -mod media_library; mod enums; mod video; mod audio; -mod vlm; pub use crate::enums::*; pub use crate::core::*; pub use crate::media::*; pub use crate::media_player::*; pub use crate::media_list::*; -pub use crate::media_library::*; pub use crate::video::*; pub use crate::audio::*; -pub use crate::vlm::*; diff --git a/src/media.rs b/src/media.rs index eaa5d17..7533bef 100644 --- a/src/media.rs +++ b/src/media.rs @@ -4,7 +4,7 @@ use vlc_sys as sys; use crate::{Instance, EventManager}; -use crate::enums::{State, Meta, TrackType}; +use crate::enums::{Meta, TrackType}; use crate::tools::{to_cstr, from_cstr, path_to_cstr}; use std::path::Path; @@ -98,11 +98,6 @@ impl Media { if unsafe{ sys::libvlc_media_save_meta(self.ptr) } == 0 { false }else{ true } } - /// Get current state of media descriptor object. - pub fn state(&self) -> State { - unsafe{ sys::libvlc_media_get_state(self.ptr).into() } - } - /// Get duration (in ms) of media descriptor object item. pub fn duration(&self) -> Option<i64> { let time = unsafe{ @@ -123,7 +118,7 @@ impl Media { /// Get Parsed status for media descriptor object. pub fn is_parsed(&self) -> bool { - if unsafe{ sys::libvlc_media_is_parsed(self.ptr) } == 0 { false }else{ true } + unsafe{ sys::libvlc_media_is_parsed(self.ptr) } } pub fn tracks(&self) -> Option<Vec<MediaTrack>> { diff --git a/src/media_library.rs b/src/media_library.rs deleted file mode 100644 index 3abf357..0000000 --- a/src/media_library.rs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2015 T. Okubo -// This file is part of vlc-rs. -// Licensed under the MIT license, see the LICENSE file. - -use vlc_sys as sys; -use crate::{Instance, MediaList}; - -pub struct MediaLibrary { - pub(crate) ptr: *mut sys::libvlc_media_library_t, -} - -impl MediaLibrary { - /// Create an new Media Library object. - pub fn new(instance: &Instance) -> Option<MediaLibrary> { - unsafe{ - let p = sys::libvlc_media_library_new(instance.ptr); - if p.is_null() { None }else{ Some(MediaLibrary{ptr: p}) } - } - } - - /// Load media library. - pub fn load(&self) -> Result<(), ()> { - unsafe{ - if sys::libvlc_media_library_load(self.ptr) == 0 { Ok(()) }else{ Err(()) } - } - } - - /// Get media library subitems. - pub fn media_list(&self) -> Option<MediaList> { - unsafe{ - let p = sys::libvlc_media_library_media_list(self.ptr); - if p.is_null() { None }else{ Some(MediaList{ptr: p}) } - } - } - - /// Returns raw pointer - pub fn raw(&self) -> *mut sys::libvlc_media_library_t { - self.ptr - } -} - -impl Drop for MediaLibrary { - fn drop(&mut self) { - unsafe{ sys::libvlc_media_library_release(self.ptr) }; - } -} diff --git a/src/media_list.rs b/src/media_list.rs index 048d821..e1fc3d7 100644 --- a/src/media_list.rs +++ b/src/media_list.rs @@ -3,7 +3,7 @@ // Licensed under the MIT license, see the LICENSE file. use vlc_sys as sys; -use crate::{Instance, Media, EventManager}; +use crate::{Media, EventManager}; pub struct MediaList { pub(crate) ptr: *mut sys::libvlc_media_list_t, @@ -11,9 +11,9 @@ pub struct MediaList { impl MediaList { /// Create an empty media list. - pub fn new(instance: &Instance) -> Option<MediaList> { + pub fn new() -> Option<MediaList> { unsafe{ - let p = sys::libvlc_media_list_new(instance.ptr); + let p = sys::libvlc_media_list_new(); if p.is_null() { None }else{ Some(MediaList{ptr: p}) } } } @@ -82,7 +82,7 @@ impl MediaList { /// This indicates if this media list is read-only from a user point of view. pub fn is_readonly(&self) -> bool { - unsafe{ if sys::libvlc_media_list_is_readonly(self.ptr) == 0 { false }else{ true } } + unsafe{ sys::libvlc_media_list_is_readonly(self.ptr) } } /// Get lock on media list items diff --git a/src/media_player.rs b/src/media_player.rs index ee38b4c..8815495 100644 --- a/src/media_player.rs +++ b/src/media_player.rs @@ -56,11 +56,7 @@ impl MediaPlayer { /// is_playing pub fn is_playing(&self) -> bool { - if unsafe{ sys::libvlc_media_player_is_playing(self.ptr) } == 0 { - false - }else{ - true - } + unsafe{ sys::libvlc_media_player_is_playing(self.ptr) } } /// Play @@ -84,7 +80,7 @@ impl MediaPlayer { /// Stop (no effect if there is no media) pub fn stop(&self) { - unsafe{ sys::libvlc_media_player_stop(self.ptr) }; + unsafe{ sys::libvlc_media_player_stop_async(self.ptr) }; } pub fn set_callbacks<F>( @@ -163,8 +159,8 @@ impl MediaPlayer { /// Set the movie time (in ms). /// This has no effect if no media is being played. Not all formats and protocols support this. - pub fn set_time(&self, time: i64) { - unsafe{ sys::libvlc_media_player_set_time(self.ptr, time); } + pub fn set_time(&self, time: i64, fast: bool) { + unsafe{ sys::libvlc_media_player_set_time(self.ptr, time, fast); } } /// Get movie position as percentage between 0.0 and 1.0. @@ -177,8 +173,8 @@ impl MediaPlayer { /// Set movie position as percentage between 0.0 and 1.0. /// This has no effect if playback is not enabled. This might not work depending on the underlying input format and protocol. - pub fn set_position(&self, pos: f32) { - unsafe{ sys::libvlc_media_player_set_position(self.ptr, pos); } + pub fn set_position(&self, pos: f32, fast: bool) { + unsafe{ sys::libvlc_media_player_set_position(self.ptr, pos, fast); } } /// Set movie chapter (if applicable). @@ -204,10 +200,7 @@ impl MediaPlayer { /// Is the player able to play. pub fn will_play(&self) -> bool { - unsafe{ - let b = sys::libvlc_media_player_will_play(self.ptr); - if b == 0 { false }else{ true } - } + false } /// Get title chapter count. @@ -277,26 +270,17 @@ impl MediaPlayer { /// Is this media player seekable? pub fn is_seekable(&self) -> bool { - unsafe{ - let b = sys::libvlc_media_player_is_seekable(self.ptr); - if b == 0 { false }else{ true } - } + unsafe{ sys::libvlc_media_player_is_seekable(self.ptr) } } /// Can this media player be paused? pub fn can_pause(&self) -> bool { - unsafe{ - let b = sys::libvlc_media_player_can_pause(self.ptr); - if b == 0 { false }else{ true } - } + unsafe{ sys::libvlc_media_player_can_pause(self.ptr) } } /// Check if the current program is scrambled. pub fn program_scrambled(&self) -> bool { - unsafe{ - let b = sys::libvlc_media_player_program_scrambled(self.ptr); - if b == 0 { false }else{ true } - } + unsafe{ sys::libvlc_media_player_program_scrambled(self.ptr) } } /// Display the next frame (if supported) diff --git a/src/video.rs b/src/video.rs index e9ca4fc..c841c9e 100644 --- a/src/video.rs +++ b/src/video.rs @@ -35,10 +35,10 @@ impl MediaPlayerVideoEx for MediaPlayer { unsafe{ sys::libvlc_toggle_fullscreen(self.ptr); } } fn set_fullscreen(&self, fullscreen: bool) { - unsafe{ sys::libvlc_set_fullscreen(self.ptr, if fullscreen { 1 }else{ 0 }); } + unsafe{ sys::libvlc_set_fullscreen(self.ptr, fullscreen); } } fn get_fullscreen(&self) -> bool { - unsafe{ if sys::libvlc_get_fullscreen(self.ptr) == 0 { false }else{ true } } + unsafe{ sys::libvlc_get_fullscreen(self.ptr) } } fn set_key_input(&self, on: bool) { unsafe{ sys::libvlc_video_set_key_input(self.ptr, if on { 1 }else{ 0 }); } diff --git a/src/vlm.rs b/src/vlm.rs deleted file mode 100644 index 0f03cab..0000000 --- a/src/vlm.rs +++ /dev/null @@ -1,148 +0,0 @@ -use std::ffi::CString; -use std::os::raw::c_char; -use std::ptr; - -use vlc_sys as sys; -use crate::Instance; -use crate::tools::{from_cstr, to_cstr}; - -pub trait Vlm { - fn add_broadcast(&self, name: &str, input: &str, output: &str, options: Option<Vec<String>>, enabled: bool, loop_broadcast: bool, ) -> Result<(), ()>; - - fn add_vod(&self, name: &str, input: &str, mux: &str, options: Option<Vec<String>>, enabled: bool) -> Result<(), ()>; - - fn play_media(&self, name: &str) -> Result<(), ()>; - - fn pause_media(&self, name: &str) -> Result<(), ()>; - - fn stop_media(&self, name: &str) -> Result<(), ()>; - - fn get_media_instance_position(&self, name: &str, instance: i32) -> Result<f32, ()>; - - fn get_media_instance_length(&self, name: &str, instance: i32) -> Result<i32, ()>; - - fn get_media_instance_time(&self, name: &str, instance: i32) -> Result<i32, ()>; - - fn get_media_instance_rate(&self, name: &str, instance: i32) -> Result<i32, ()>; - - fn show_media(&self, name: &str) -> Result<String, ()>; -} - -impl Vlm for Instance { - fn add_broadcast(&self, name: &str, input: &str, output: &str, options: Option<Vec<String>>, enabled: bool, loop_broadcast: bool, ) -> Result<(), ()> { - let name = to_cstr(name); - let input = to_cstr(input); - let output = to_cstr(output); - let opts_c_ptr: Vec<*const c_char>; - let opts_c: Vec<CString>; - let enabled = if enabled { 1 } else { 0 }; - let loop_broadcast = if loop_broadcast { 1 } else { 0 }; - if let Some(vec) = options { - opts_c = vec.into_iter() - .map(|x| CString::new(x).expect("Error: Unexpected null byte")).collect(); - opts_c_ptr = opts_c.iter().map(|x| x.as_ptr()).collect(); - } else { - opts_c_ptr = Vec::new(); - } - let result = unsafe { - if opts_c_ptr.is_empty() { - sys::libvlc_vlm_add_broadcast(self.ptr, name.as_ptr(), input.as_ptr(), output.as_ptr(), 0, ptr::null(), enabled, loop_broadcast) - } else { - sys::libvlc_vlm_add_broadcast(self.ptr, name.as_ptr(), input.as_ptr(), output.as_ptr(), opts_c_ptr.len() as i32, opts_c_ptr.as_ptr(), enabled, loop_broadcast) - } - }; - if result == 0 { Ok(()) } else { Err(()) } - } - - fn add_vod(&self, name: &str, input: &str, mux: &str, options: Option<Vec<String>>, enabled: bool) -> Result<(), ()> { - let name = to_cstr(name); - let input = to_cstr(input); - let mux = to_cstr(mux); - let opts_c_ptr: Vec<*const c_char>; - let opts_c: Vec<CString>; - let enabled = if enabled { 1 } else { 0 }; - if let Some(vec) = options { - opts_c = vec.into_iter() - .map(|x| CString::new(x).expect("Error: Unexpected null byte")).collect(); - opts_c_ptr = opts_c.iter().map(|x| x.as_ptr()).collect(); - } else { - opts_c_ptr = Vec::new(); - } - let result = unsafe { - if opts_c_ptr.is_empty() { - sys::libvlc_vlm_add_vod(self.ptr, name.as_ptr(), input.as_ptr(), 0, ptr::null(), enabled, mux.as_ptr()) - } else { - sys::libvlc_vlm_add_vod(self.ptr, name.as_ptr(), input.as_ptr(), opts_c_ptr.len() as i32, opts_c_ptr.as_ptr(), enabled, mux.as_ptr()) - } - }; - if result == 0 { Ok(()) } else { Err(()) } - } - - fn play_media(&self, name: &str) -> Result<(), ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_play_media(self.ptr, name.as_ptr()) - }; - if result == 0 { Ok(()) } else { Err(()) } - } - - fn pause_media(&self, name: &str) -> Result<(), ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_pause_media(self.ptr, name.as_ptr()) - }; - if result == 0 { Ok(()) } else { Err(()) } - } - - fn stop_media(&self, name: &str) -> Result<(), ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_stop_media(self.ptr, name.as_ptr()) - }; - if result == 0 { Ok(()) } else { Err(()) } - } - - fn get_media_instance_position(&self, name: &str, instance: i32) -> Result<f32, ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_get_media_instance_position(self.ptr, name.as_ptr(), instance) - }; - if result != -1f32 { Ok(result) } else { Err(()) } - } - - fn get_media_instance_length(&self, name: &str, instance: i32) -> Result<i32, ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_get_media_instance_length(self.ptr, name.as_ptr(), instance) - }; - if result != -1 { Ok(result) } else { Err(()) } - } - - fn get_media_instance_time(&self, name: &str, instance: i32) -> Result<i32, ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_get_media_instance_time(self.ptr, name.as_ptr(), instance) - }; - if result != -1 { Ok(result) } else { Err(()) } - } - - fn get_media_instance_rate(&self, name: &str, instance: i32) -> Result<i32, ()> { - let name = to_cstr(name); - let result = unsafe { - sys::libvlc_vlm_get_media_instance_rate(self.ptr, name.as_ptr(), instance) - }; - if result != -1 { Ok(result) } else { Err(()) } - } - - fn show_media(&self, name: &str) -> Result<String, ()> { - let name = to_cstr(name); - let result = unsafe { - from_cstr(sys::libvlc_vlm_show_media(self.ptr, name.as_ptr())) - }; - if let Some(data) = result { - Ok(data.to_string()) - } else { - Err(()) - } - } -}