xtra Vlc -- v0.4 (c) 2018 Valentin Schmidt new object me, *configPropList vlc_open_file object me, string filename vlc_open_url object me, string url vlc_play object me vlc_pause object me vlc_stop object me vlc_next_frame object me vlc_get_fps object me vlc_get_length object me vlc_get_state object me vlc_get_last_error object me vlc_get_rate object me vlc_set_rate object me, float rate vlc_get_time object me vlc_set_time object me, integer ms -- AUDIO vlc_audio_get_channel object me vlc_audio_set_channel object me, integer channel vlc_audio_get_mute object me vlc_audio_set_mute object me, integer flag vlc_audio_get_track_count object me vlc_audio_get_track object me vlc_audio_set_track object me, integer track vlc_audio_get_volume object me vlc_audio_set_volume object me, integer volume -- VIDEO vlc_video_get_height object me vlc_video_get_width object me vlc_video_get_track_count object me vlc_video_get_track object me vlc_video_set_track object me, integer track vlc_video_get_aspect_ratio object me vlc_video_set_aspect_ratio object me, string ratio vlc_video_get_scale object me vlc_video_set_scale object me, float scale vlc_video_get_crop_geometry object me vlc_video_set_crop_geometry object me, string geometry vlc_video_set_subtitle_file object me, string filename vlc_video_get_spu_count object me vlc_video_get_spu object me vlc_video_set_spu object me, integer track vlc_video_take_snapshot object me, string filename, integer width, integer height -- WINDOW vlc_window_get_rect object me vlc_window_set_rect object me, object rect vlc_window_set_visible object me, integer flag vlc_window_set_auto_resize object me, integer flag vlc_window_get_fullscreen object me vlc_window_set_fullscreen object me, integer flag, *screen -- EVENTS -- attaches an event to the event callback vlc_event_attach object me, integer event -- detaches an event from event callback vlc_event_detach object me, integer event -- FILE -- returns [width, height] for video file, without loading it into the player vlc_file_get_dimensions object me, string filename Available properties (as strings) for (optional) 'configPropList' ================================================================= "render_mode" (symbol, default = #movie): A symbol that specifies the render mode to be used. It can be one of the following 5 symbols: #movie (=default): The VLC video will be rendered into a Director window, specified by its index in _player.windowList. #hwnd: The VLC video will be rendered into an external window, specified by its HWND. #texture: The VLC video will be rendered into an OpenGL texture, specified by its texture ID. #bitmap: The VLC video will be rendered into a bitmap member. #image: The VLC video will be rendered into a Lingo image object. "callback" (symbol): A symbol that specifies the callback handler that will be notified when VLC events occur. You can then "attach" to individual VLC events (specified by integers) by calling vlc_event_attach(). If you don't attach to any events, there is also no need to specify such callback handler. "target" (instance, default = _movie): If you specify a callback, you can optionally also specify a target object (script instance) that will receive the event notifications. If you don't specify such target, the callback is assumed to be a global handler in a movie script. "args" (list): An optional list of argument strings that will be passed to the VLC instance. Those are exactly the same arguments that the command line version of VLC supports. For instance, to turn off all audio output you can pass ["--no-audio"]. Depending on "render_mode", the following additional properties can/must be specified: ====================================================================================== "movienum" (integer, default = 1): An integer that specifies the index of a Director window in _player.windowList - so 1 for the stage window. This window will then be used as container for the VLC video. Only available for render mode #movie. "rect" (rect, optional): Specifies the rect of the VLC video, relative to its container window. Only available for render mode #movie. "hwnd" (integer): An integer that specifies the HWND of an (external) window into which the VLC video will be "injected" Only available for render mode #hwnd. "texture_id" (integer): An integer that specifies the OpenGL texture ID that will receive the VLC video. Only available for render mode #texture. "member" (member): The memberRef of a bitmap member that will receive the VLC video. Only available for render mode #bitmap. NOTES ===== - The receiving bitmap member MUST have exactly the same dimensions as all videos you want to load. If you want to load videos with different dimensions in #bitmap render mode, you have to create a new VLC xtra instance whenever the dimensions change. - The passed bitmap member then "belongs" to VLC xtra, so don't try to do anything with it by Lingo means (especially not assigning a new image to it). But you can do whatever you like with sprites based on this bitmap member. "image" (image): A Lingo image object that will receive the VLC video. Only available for render mode #image. NOTES ===== - The receiving image object MUST have exactly the same dimensions as all videos you want to load. If you want to load videos with different dimensions in #image render mode, you have to create a new VLC xtra instance whenever the dimensions change. - In contrast to #bitmap render mode, Director will not know when VLC updated the image, so you have to force visual updates manually, e.g. in an enterFrame handler. - The passed image object then "belongs" to VLC xtra, so don't try to do anything with it by Lingo means. GENERAL NOTES ============= - If you use a render mode other than #movie, but pass incorrect or insufficient additional parameters, the render mode will default to #movie, so the video will be rendered into the stage window instead. - VLC xtra is currently not fully secured against wrong usage yet, so such wrong usage therefor might cause crashes. Check out the included demos (Lingo scripts that are called *.lsw) to learn about the intended usage.