<html><head></head><body>Sure there is. Video callbacks support it fully. X11 and HWND automatically use a separate window if there is more than one track.<br><br><div class="gmail_quote">Le 7 mai 2019 09:34:43 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On 2019-05-06 17:06, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Le maanantaina 6. toukokuuta 2019, 16.01.30 EEST Steve Lhomme a écrit :<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> The callbacks will be used by D3D but could also be used by other rendering<br> engines.<hr> include/vlc_vout_display.h | 27 +++++++++++++++++++++++++++<br> 1 file changed, 27 insertions(+)<br><br> diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h<br> index bdae03881c..7b2c9cf0d3 100644<br> --- a/include/vlc_vout_display.h<br> +++ b/include/vlc_vout_display.h<br> @@ -455,5 +455,32 @@ VLC_API void<br> vout_display_PlacePicture(vout_display_place_t *place, const video_ void<br> vout_display_TranslateMouseState(vout_display_t *vd, vlc_mouse_t *video,<br> const vlc_mouse_t *window);<br><br> +/*** rendering to external surfaces ***/<br> +typedef struct<br> +{<br> + bool hardware_decoding; /** set if D3D11_CREATE_DEVICE_VIDEO_SUPPORT is<br> needed */ +} vlc_video_surface_device_cfg_t;<br> +<br> +typedef struct<br> +{<br> + void *device_context; /** ID3D11DeviceContext* for D3D11,<br> IDirect3DDevice9* for D3D9 */ +} vlc_video_surface_device_setup_t;<br> +<br> +typedef struct<br> +{<br> + unsigned width, height;<br> +} vlc_video_surface_cfg_t;<br> +<br> +typedef struct<br> +{<br> + intptr_t surface_format; /* DXGI_FORMAT for D3D11, D3DFORMAT<br> for D3D9 */ +} video_surface_output_cfg_t;<br> +<br> +typedef bool( *vlc_video_surface_device_setup_cb )( void *opaque, const<br> vlc_video_surface_device_cfg_t *cfg, vlc_video_surface_device_setup_t *out<br> ); +typedef void( *vlc_video_surface_device_cleanup_cb )( void *opaque );<br> +typedef bool( *vlc_video_surface_update_output_cb )( void *opaque, const<br> vlc_video_surface_cfg_t *cfg, video_surface_output_cfg_t *output );<br> +typedef void( *vlc_video_swap_cb )( void* opaque );<br> +typedef bool( *vlc_video_surface_start_rendering_cb )( void *opaque, bool<br> enter );<br></blockquote>How does the application track per-surface private data here?<br></blockquote><br>There's currently no support for rendering multiple tracks in a target, <br>be it OpenGL, Direct3D, HWND, NSView. That would be another topic/task.<br><br>><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">+<br> /** @} */<br> #endif /* VLC_VOUT_DISPLAY_H */<br></blockquote> -- <br> レミ・デニ-クールモン<br> <a href="http://www.remlab.net/">http://www.remlab.net/</a><hr> vlc-devel mailing list<br> To unsubscribe or modify your subscription options:<br> <a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>