vlc | branch: master | Steve Lhomme <[email protected]> | Tue Feb 4 13:38:17 2020 +0100| [abd53b120226b77ef6e0393c993771d54022acd0] | committer: Steve Lhomme
libvlc: merge libvlc_video_render_cfg_t and libvlc_video_direct3d_cfg_t The OpenGL callbacks can now tell the bitdepth request, the full/studio range, the color space/primary/transfer. For now we only support 8-bits full range BT.709 rendering. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=abd53b120226b77ef6e0393c993771d54022acd0 --- doc/libvlc/d3d11_player.cpp | 2 +- doc/libvlc/d3d9_player.c | 2 +- include/vlc/libvlc_media_player.h | 20 +++++++------------- modules/video_output/vgl.c | 4 +++- modules/video_output/win32/d3d11_swapchain.c | 6 +++--- modules/video_output/win32/d3d11_swapchain.h | 2 +- modules/video_output/win32/direct3d11.c | 2 +- modules/video_output/win32/direct3d9.c | 4 ++-- 8 files changed, 19 insertions(+), 23 deletions(-) diff --git a/doc/libvlc/d3d11_player.cpp b/doc/libvlc/d3d11_player.cpp index 78f06f22c3..85c2899dc6 100644 --- a/doc/libvlc/d3d11_player.cpp +++ b/doc/libvlc/d3d11_player.cpp @@ -346,7 +346,7 @@ static void release_direct3d(struct render_context *ctx) list_dxgi_leaks(); } -static bool UpdateOutput_cb( void *opaque, const libvlc_video_direct3d_cfg_t *cfg, libvlc_video_output_cfg_t *out ) +static bool UpdateOutput_cb( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out ) { struct render_context *ctx = static_cast<struct render_context *>( opaque ); diff --git a/doc/libvlc/d3d9_player.c b/doc/libvlc/d3d9_player.c index 99cabe8907..d2960d386b 100644 --- a/doc/libvlc/d3d9_player.c +++ b/doc/libvlc/d3d9_player.c @@ -236,7 +236,7 @@ static void Resize_cb( void *opaque, LeaveCriticalSection(&ctx->sizeLock); } -static bool UpdateOutput_cb( void *opaque, const libvlc_video_direct3d_cfg_t *cfg, libvlc_video_output_cfg_t *out ) +static bool UpdateOutput_cb( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out ) { struct render_context *ctx = opaque; return Resize(ctx, cfg->width, cfg->height, (IDirect3DDevice9*)cfg->device, out); diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h index 172cd963fd..975779c5ca 100644 --- a/include/vlc/libvlc_media_player.h +++ b/include/vlc/libvlc_media_player.h @@ -525,6 +525,12 @@ typedef struct { unsigned width; /** rendering video width in pixel */ unsigned height; /** rendering video height in pixel */ + unsigned bitdepth; /** rendering video bit depth in bits per channel */ + bool full_range; /** video is full range or studio/limited range */ + libvlc_video_color_space_t colorspace; /** video color space */ + libvlc_video_color_primaries_t primaries; /** video color primaries */ + libvlc_video_transfer_func_t transfer; /** video transfer function */ + void *device; /** device used for rendering, IDirect3DDevice9* for D3D9 */ } libvlc_video_render_cfg_t; typedef struct @@ -734,18 +740,6 @@ typedef void( *libvlc_video_direct3d_set_resize_cb )( void *opaque, void (*report_size_change)(void *report_opaque, unsigned width, unsigned height), void *report_opaque ); -typedef struct -{ - unsigned width; /** rendering video width in pixel */ - unsigned height; /** rendering video height in pixel */ - unsigned bitdepth; /** rendering video bit depth in bits per channel */ - bool full_range; /** video is full range or studio/limited range */ - libvlc_video_color_space_t colorspace; /** video color space */ - libvlc_video_color_primaries_t primaries; /** video color primaries */ - libvlc_video_transfer_func_t transfer; /** video transfer function */ - void *device; /** device used for rendering, IDirect3DDevice9* for D3D9 */ -} libvlc_video_direct3d_cfg_t; - /** Update the rendering output setup. * * \param opaque private pointer set on the opaque parameter of @a libvlc_video_direct3d_device_setup_cb() [IN] @@ -762,7 +756,7 @@ typedef struct * set in the output structure. */ typedef bool( *libvlc_video_direct3d_update_output_cb )( void *opaque, - const libvlc_video_direct3d_cfg_t *cfg, + const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *output ); /** Tell the host the rendering for the given plane is about to start diff --git a/modules/video_output/vgl.c b/modules/video_output/vgl.c index 3d2d08735a..c2e41c6d87 100644 --- a/modules/video_output/vgl.c +++ b/modules/video_output/vgl.c @@ -83,7 +83,9 @@ static void Resize(vlc_gl_t * gl, unsigned w, unsigned h) MakeCurrent(gl); libvlc_video_render_cfg_t output_cfg = { - w, h, + w, h, 8, true, + libvlc_video_colorspace_BT709, libvlc_video_primaries_BT709, + libvlc_video_transfer_func_SRGB, NULL, }; libvlc_video_output_cfg_t render_cfg; sys->resizeCb(sys->opaque, &output_cfg, &render_cfg); diff --git a/modules/video_output/win32/d3d11_swapchain.c b/modules/video_output/win32/d3d11_swapchain.c index ec333c3854..7799b8cde0 100644 --- a/modules/video_output/win32/d3d11_swapchain.c +++ b/modules/video_output/win32/d3d11_swapchain.c @@ -141,7 +141,7 @@ static bool canHandleConversion(const dxgi_color_space *src, const dxgi_color_sp } #endif -static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, const libvlc_video_direct3d_cfg_t *cfg) +static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, const libvlc_video_render_cfg_t *cfg) { HRESULT hr; int best = 0; @@ -314,7 +314,7 @@ static void CreateSwapchain(struct d3d11_local_swapchain *display, UINT width, U } #endif /* !VLC_WINSTORE_APP */ -static bool UpdateSwapchain( struct d3d11_local_swapchain *display, const libvlc_video_direct3d_cfg_t *cfg ) +static bool UpdateSwapchain( struct d3d11_local_swapchain *display, const libvlc_video_render_cfg_t *cfg ) { ID3D11Texture2D* pBackBuffer; HRESULT hr; @@ -470,7 +470,7 @@ void LocalSwapchainSwap( void *opaque ) } } -bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_direct3d_cfg_t *cfg, libvlc_video_output_cfg_t *out ) +bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out ) { struct d3d11_local_swapchain *display = opaque; if ( !UpdateSwapchain( display, cfg ) ) diff --git a/modules/video_output/win32/d3d11_swapchain.h b/modules/video_output/win32/d3d11_swapchain.h index 0469bef233..c754f10ec8 100644 --- a/modules/video_output/win32/d3d11_swapchain.h +++ b/modules/video_output/win32/d3d11_swapchain.h @@ -32,7 +32,7 @@ void *CreateLocalSwapchainHandle(vlc_object_t *, HWND, d3d11_device_t *d3d_dev); void LocalSwapchainCleanupDevice( void *opaque ); void LocalSwapchainSwap( void *opaque ); -bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_direct3d_cfg_t *cfg, libvlc_video_output_cfg_t *out ); +bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out ); bool LocalSwapchainStartEndRendering( void *opaque, bool enter ); void LocalSwapchainSetMetadata( void *opaque, libvlc_video_metadata_type_t, const void * ); bool LocalSwapchainSelectPlane( void *opaque, size_t plane ); diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c index 0e83b844b5..c5a8acc1bd 100644 --- a/modules/video_output/win32/direct3d11.c +++ b/modules/video_output/win32/direct3d11.c @@ -213,7 +213,7 @@ static int UpdateDisplayFormat(vout_display_t *vd, libvlc_video_output_cfg_t *ou static int QueryDisplayFormat(vout_display_t *vd, const video_format_t *fmt) { vout_display_sys_t *sys = vd->sys; - libvlc_video_direct3d_cfg_t cfg; + libvlc_video_render_cfg_t cfg; cfg.width = sys->area.vdcfg.display.width; cfg.height = sys->area.vdcfg.display.height; diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c index 552e7dcef1..14445f8cd2 100644 --- a/modules/video_output/win32/direct3d9.c +++ b/modules/video_output/win32/direct3d9.c @@ -472,7 +472,7 @@ static void Direct3D9DestroyResources(vout_display_t *vd) static int UpdateOutput(vout_display_t *vd, const video_format_t *fmt) { vout_display_sys_t *sys = vd->sys; - libvlc_video_direct3d_cfg_t cfg; + libvlc_video_render_cfg_t cfg; cfg.width = sys->area.vdcfg.display.width; cfg.height = sys->area.vdcfg.display.height; @@ -1505,7 +1505,7 @@ static int FindShadersCallback(const char *name, char ***values, char ***descs) VLC_CONFIG_STRING_ENUM(FindShadersCallback) -static bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_direct3d_cfg_t *cfg, libvlc_video_output_cfg_t *out ) +static bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out ) { vout_display_t *vd = opaque; out->surface_format = vd->sys->d3d9_device->d3ddev.BufferFormat; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
