[vlc-commits] [Git][videolan/vlc][master] 4 commits: vout: d3d11: use video_transform_t to express the texture orientation

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Sat Mar 5 12:51:01 UTC 2022



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
c28d1e02 by Steve Lhomme at 2022-03-05T12:23:02+00:00
vout: d3d11: use video_transform_t to express the texture orientation

- - - - -
553f6091 by Steve Lhomme at 2022-03-05T12:23:02+00:00
libvlc: add the possibility to flip the rendered textures

Only supported by the D3D11 renderer for now.

- - - - -
c3d874c9 by Steve Lhomme at 2022-03-05T12:23:02+00:00
doc: libvlc: rename callbacks to clarify what they do

- - - - -
6fa58261 by Steve Lhomme at 2022-03-05T12:23:02+00:00
libvlc: add a callback for the type of the resize callback

This will avoid lengthy variable declarations.

- - - - -


13 changed files:

- doc/libvlc/QtGL/qtvlcwidget.cpp
- doc/libvlc/d3d11_player.cpp
- doc/libvlc/d3d9_player.c
- doc/libvlc/sdl_opengl_player.cpp
- include/vlc/libvlc_media_player.h
- modules/video_output/vgl.c
- modules/video_output/win32/d3d11_quad.cpp
- modules/video_output/win32/d3d11_quad.h
- modules/video_output/win32/d3d_shaders.c
- modules/video_output/win32/d3d_shaders.h
- modules/video_output/win32/direct3d11.cpp
- modules/video_output/win32/direct3d9.c
- modules/video_output/win32/dxgi_swapchain.cpp


Changes:

=====================================
doc/libvlc/QtGL/qtvlcwidget.cpp
=====================================
@@ -82,6 +82,7 @@ public:
         render_cfg->colorspace = libvlc_video_colorspace_BT709;
         render_cfg->primaries  = libvlc_video_primaries_BT709;
         render_cfg->transfer   = libvlc_video_transfer_func_SRGB;
+        render_cfg->orientation = libvlc_video_orient_top_left;
 
         return true;
     }


=====================================
doc/libvlc/d3d11_player.cpp
=====================================
@@ -74,13 +74,13 @@ struct render_context
 
     ID3D11SamplerState *samplerState;
 
-    SRWLOCK sizeLock; // the ReportSize callback cannot be called during/after the Cleanup_cb is called
+    SRWLOCK sizeLock; // the ReportSize callback cannot be called during/after the CleanupDevice_cb is called
     SRWLOCK swapchainLock; // protect the swapchain access when the UI needs to resize it
     unsigned width, height;
     struct {
         unsigned width, height;
     } client_area;
-    void (*ReportSize)(void *ReportOpaque, unsigned width, unsigned height);
+    libvlc_video_output_resize_cb ReportSize;
     void *ReportOpaque;
 };
 
@@ -426,6 +426,7 @@ static bool UpdateOutput_cb( void *opaque, const libvlc_video_render_cfg_t *cfg,
     out->colorspace     = libvlc_video_colorspace_BT709;
     out->primaries      = libvlc_video_primaries_BT709;
     out->transfer       = libvlc_video_transfer_func_SRGB;
+    out->orientation    = libvlc_video_orient_top_left;
 
     return true;
 }
@@ -473,7 +474,7 @@ static bool SelectPlane_cb( void *opaque, size_t plane, void *out )
     return true;
 }
 
-static bool Setup_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg, libvlc_video_setup_device_info_t *out )
+static bool SetupDevice_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg, libvlc_video_setup_device_info_t *out )
 {
     struct render_context *ctx = static_cast<struct render_context *>(*opaque);
 
@@ -482,7 +483,7 @@ static bool Setup_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg,
     return true;
 }
 
-static void Cleanup_cb( void *opaque )
+static void CleanupDevice_cb( void *opaque )
 {
     // here we can release all things Direct3D11 for good (if playing only one file)
     struct render_context *ctx = static_cast<struct render_context *>( opaque );
@@ -490,9 +491,9 @@ static void Cleanup_cb( void *opaque )
 }
 
 // receive the libvlc callback to call when we want to change the libvlc output size
-static void Resize_cb( void *opaque,
-                       void (*report_size_change)(void *report_opaque, unsigned width, unsigned height),
-                       void *report_opaque )
+static void SetResize_cb( void *opaque,
+                          libvlc_video_output_resize_cb report_size_change,
+                          void *report_opaque )
 {
     struct render_context *ctx = static_cast<struct render_context *>( opaque );
     AcquireSRWLockExclusive(&ctx->sizeLock);
@@ -673,7 +674,8 @@ int WINAPI WinMain(HINSTANCE hInstance,
 
     /* Tell VLC to render into our D3D11 environment */
     libvlc_video_set_output_callbacks( Context.p_mp, libvlc_video_engine_d3d11,
-                                       Setup_cb, Cleanup_cb, Resize_cb, UpdateOutput_cb, Swap_cb, StartRendering_cb,
+                                       SetupDevice_cb, CleanupDevice_cb, SetResize_cb,
+                                       UpdateOutput_cb, Swap_cb, StartRendering_cb,
                                        nullptr, nullptr, SelectPlane_cb,
                                        &Context );
 


=====================================
doc/libvlc/d3d9_player.c
=====================================
@@ -37,9 +37,9 @@ struct render_context
 
     IDirect3DVertexBuffer9 *rectangleFVFVertexBuf;
 
-    CRITICAL_SECTION sizeLock; // the ReportSize callback cannot be called during/after the Cleanup_cb is called
+    CRITICAL_SECTION sizeLock; // the ReportSize callback cannot be called during/after the CleanupDevice_cb is called
     unsigned width, height;
-    void (*ReportSize)(void *ReportOpaque, unsigned width, unsigned height);
+    libvlc_video_output_resize_cb ReportSize;
     void *ReportOpaque;
 };
 
@@ -141,6 +141,7 @@ static bool Resize(struct render_context *ctx, unsigned width, unsigned height,
     out->colorspace     = libvlc_video_colorspace_BT709;
     out->primaries      = libvlc_video_primaries_BT709;
     out->transfer       = libvlc_video_transfer_func_SRGB;
+    out->orientation    = libvlc_video_orient_top_left;
 
     return true;
 }
@@ -202,7 +203,7 @@ static void release_direct3d(struct render_context *ctx)
     IDirect3D9_Release(ctx->d3d);
 }
 
-static bool Setup_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg, libvlc_video_setup_device_info_t *out )
+static bool SetupDevice_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg, libvlc_video_setup_device_info_t *out )
 {
     struct render_context *ctx = *opaque;
     out->d3d9.device = ctx->d3d;
@@ -210,7 +211,7 @@ static bool Setup_cb( void **opaque, const libvlc_video_setup_device_cfg_t *cfg,
     return true;
 }
 
-static void Cleanup_cb( void *opaque )
+static void CleanupDevice_cb( void *opaque )
 {
     /* here we can release all things Direct3D9 for good  (if playing only one file) */
     struct render_context *ctx = opaque;
@@ -221,9 +222,9 @@ static void Cleanup_cb( void *opaque )
     }
 }
 
-static void Resize_cb( void *opaque,
-                       void (*report_size_change)(void *report_opaque, unsigned width, unsigned height),
-                       void *report_opaque )
+static void SetResize_cb( void *opaque,
+                          libvlc_video_output_resize_cb report_size_change,
+                          void *report_opaque )
 {
     struct render_context *ctx = opaque;
     EnterCriticalSection(&ctx->sizeLock);
@@ -415,7 +416,8 @@ int WINAPI WinMain(HINSTANCE hInstance,
 
     /* Tell VLC to render into our D3D9 environment */
     libvlc_video_set_output_callbacks( Context.p_mp, libvlc_video_engine_d3d9,
-                                       Setup_cb, Cleanup_cb, Resize_cb, UpdateOutput_cb, Swap_cb, StartRendering_cb,
+                                       SetupDevice_cb, CleanupDevice_cb, SetResize_cb,
+                                       UpdateOutput_cb, Swap_cb, StartRendering_cb,
                                        NULL, NULL, NULL,
                                        &Context );
 


=====================================
doc/libvlc/sdl_opengl_player.cpp
=====================================
@@ -155,6 +155,7 @@ public:
         render_cfg->colorspace = libvlc_video_colorspace_BT709;
         render_cfg->primaries  = libvlc_video_primaries_BT709;
         render_cfg->transfer   = libvlc_video_transfer_func_SRGB;
+        render_cfg->orientation = libvlc_video_orient_top_left;
 
         return true;
     }


=====================================
include/vlc/libvlc_media_player.h
=====================================
@@ -600,6 +600,8 @@ typedef struct libvlc_video_output_cfg_t
     libvlc_video_color_primaries_t primaries;
     /** video transfer function */
     libvlc_video_transfer_func_t transfer;
+    /** video surface orientation */
+    libvlc_video_orient_t orientation;
 } libvlc_video_output_cfg_t;
 
 /**
@@ -712,6 +714,18 @@ typedef enum libvlc_video_engine_t {
     libvlc_video_engine_d3d9,
 } libvlc_video_engine_t;
 
+
+/** Callback type that can be called to request a render size changes.
+ * 
+ * libvlc will provide a callback of this type when calling \ref libvlc_video_output_set_resize_cb.
+ * 
+ * \param report_opaque parameter passed to \ref libvlc_video_output_set_resize_cb. [IN]
+ * \param width new rendering width requested. [IN]
+ * \param height new rendering height requested. [IN]
+ */
+typedef void( *libvlc_video_output_resize_cb )( void *report_opaque, unsigned width, unsigned height );
+
+
 /** Set the callback to call when the host app resizes the rendering area.
  *
  * This allows text rendering and aspect ratio to be handled properly when the host
@@ -726,7 +740,7 @@ typedef enum libvlc_video_engine_t {
  * \param report_opaque private pointer to pass to the \ref report_size_change callback. [IN]
  */
 typedef void( *libvlc_video_output_set_resize_cb )( void *opaque,
-                                                    void (*report_size_change)(void *report_opaque, unsigned width, unsigned height),
+                                                    libvlc_video_output_resize_cb report_size_change,
                                                     void *report_opaque );
 
 /** Tell the host the rendering for the given plane is about to start


=====================================
modules/video_output/vgl.c
=====================================
@@ -98,6 +98,7 @@ static void Resize(vlc_gl_t * gl, unsigned w, unsigned h)
     assert(render_cfg.colorspace == libvlc_video_colorspace_BT709);
     assert(render_cfg.primaries  == libvlc_video_primaries_BT709);
     assert(render_cfg.transfer   == libvlc_video_transfer_func_SRGB);
+    assert(render_cfg.orientation == libvlc_video_orient_top_left);
     sys->width = w;
     sys->height = h;
 }


=====================================
modules/video_output/win32/d3d11_quad.cpp
=====================================
@@ -140,7 +140,7 @@ void d3d11_quad_t::Reset()
 
 #undef D3D11_UpdateQuadPosition
 bool D3D11_UpdateQuadPosition( vlc_object_t *o, d3d11_device_t *d3d_dev, d3d11_quad_t *quad,
-                                const RECT *output, video_orientation_t orientation )
+                                const RECT *output, video_transform_t orientation )
 {
     bool result = true;
     HRESULT hr;


=====================================
modules/video_output/win32/d3d11_quad.h
=====================================
@@ -43,7 +43,7 @@ int D3D11_SetupQuad(vlc_object_t *, d3d11_device_t *, const video_format_t *, d3
 #define D3D11_SetupQuad(a,b,c,d,e)  D3D11_SetupQuad(VLC_OBJECT(a),b,c,d,e)
 
 bool D3D11_UpdateQuadPosition( vlc_object_t *, d3d11_device_t *, d3d11_quad_t *,
-                               const RECT *output, video_orientation_t );
+                               const RECT *output, video_transform_t );
 #define D3D11_UpdateQuadPosition(a,b,c,d,e)  D3D11_UpdateQuadPosition(VLC_OBJECT(a),b,c,d,e)
 
 void D3D11_UpdateQuadOpacity(vlc_object_t *, d3d11_device_t *, d3d11_quad_t *, float opacity);


=====================================
modules/video_output/win32/d3d_shaders.c
=====================================
@@ -470,46 +470,46 @@ void D3D_SetupQuad(vlc_object_t *o, const video_format_t *fmt, d3d_quad_t *quad,
  * Vertex 0 should be assigned coordinates at index 2 from the
  * unrotated order and so on, thus yielding order: 2 3 0 1.
  */
-static void orientationVertexOrder(video_orientation_t orientation, int vertex_order[static 4])
+static void orientationVertexOrder(video_transform_t orientation, int vertex_order[static 4])
 {
     switch (orientation) {
-        case ORIENT_ROTATED_90:
+        case TRANSFORM_R90:
             vertex_order[0] = 3;
             vertex_order[1] = 0;
             vertex_order[2] = 1;
             vertex_order[3] = 2;
             break;
-        case ORIENT_ROTATED_270:
+        case TRANSFORM_R270:
             vertex_order[0] = 1;
             vertex_order[1] = 2;
             vertex_order[2] = 3;
             vertex_order[3] = 0;
             break;
-        case ORIENT_ROTATED_180:
+        case TRANSFORM_R180:
             vertex_order[0] = 2;
             vertex_order[1] = 3;
             vertex_order[2] = 0;
             vertex_order[3] = 1;
             break;
-        case ORIENT_TRANSPOSED:
+        case TRANSFORM_TRANSPOSE:
             vertex_order[0] = 2;
             vertex_order[1] = 1;
             vertex_order[2] = 0;
             vertex_order[3] = 3;
             break;
-        case ORIENT_HFLIPPED:
+        case TRANSFORM_HFLIP:
             vertex_order[0] = 1;
             vertex_order[1] = 0;
             vertex_order[2] = 3;
             vertex_order[3] = 2;
             break;
-        case ORIENT_VFLIPPED:
+        case TRANSFORM_VFLIP:
             vertex_order[0] = 3;
             vertex_order[1] = 2;
             vertex_order[2] = 1;
             vertex_order[3] = 0;
             break;
-        case ORIENT_ANTI_TRANSPOSED: /* transpose + vflip */
+        case TRANSFORM_ANTI_TRANSPOSE: /* transpose + vflip */
             vertex_order[0] = 0;
             vertex_order[1] = 3;
             vertex_order[2] = 2;
@@ -526,7 +526,7 @@ static void orientationVertexOrder(video_orientation_t orientation, int vertex_o
 
 static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
                           const d3d_quad_t *quad,
-                          WORD *triangle_pos, video_orientation_t orientation)
+                          WORD *triangle_pos, video_transform_t orientation)
 {
     unsigned int src_width = quad->i_width;
     unsigned int src_height = quad->i_height;
@@ -537,7 +537,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
      * the rest of the visible area must correspond to -1,1 */
     switch (orientation)
     {
-    case ORIENT_ROTATED_90: /* 90° anti clockwise */
+    case TRANSFORM_R90: /* 90° anti clockwise */
         /* right/top aligned */
         MidY = (output->left + output->right) / 2.f;
         MidX = (output->top + output->bottom) / 2.f;
@@ -546,7 +546,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   =  (MidX - src_height) / (MidX - output->left);
         right  =                 MidX / (MidX - (src_width - output->right));
         break;
-    case ORIENT_ROTATED_180: /* 180° */
+    case TRANSFORM_R180: /* 180° */
         /* right/top aligned */
         MidY = (output->top + output->bottom) / 2.f;
         MidX = (output->left + output->right) / 2.f;
@@ -555,7 +555,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -MidX / (MidX - output->left);
         right  =  (src_width  - MidX) / (output->right - MidX);
         break;
-    case ORIENT_ROTATED_270: /* 90° clockwise */
+    case TRANSFORM_R270: /* 90° clockwise */
         /* right/top aligned */
         MidY = (output->left + output->right) / 2.f;
         MidX = (output->top + output->bottom) / 2.f;
@@ -564,7 +564,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -MidX / (MidX - output->left);
         right  =  (src_height - MidY) / (output->bottom - MidY);
         break;
-    case ORIENT_ANTI_TRANSPOSED:
+    case TRANSFORM_ANTI_TRANSPOSE:
         MidY = (output->left + output->right) / 2.f;
         MidX = (output->top + output->bottom) / 2.f;
         top    =  (src_width  - MidX) / (output->right - MidX);
@@ -572,7 +572,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -(src_height - MidY) / (output->bottom - MidY);
         right  =  MidX / (MidX - output->left);
         break;
-    case ORIENT_TRANSPOSED:
+    case TRANSFORM_TRANSPOSE:
         MidY = (output->left + output->right) / 2.f;
         MidX = (output->top + output->bottom) / 2.f;
         top    =  (src_width  - MidX) / (output->right - MidX);
@@ -580,7 +580,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -MidX / (MidX - output->left);
         right  =  (src_height - MidY) / (output->bottom - MidY);
         break;
-    case ORIENT_VFLIPPED:
+    case TRANSFORM_VFLIP:
         MidY = (output->top + output->bottom) / 2.f;
         MidX = (output->left + output->right) / 2.f;
         top    =  (src_height - MidY) / (output->bottom - MidY);
@@ -588,7 +588,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -MidX / (MidX - output->left);
         right  =  (src_width  - MidX) / (output->right - MidX);
         break;
-    case ORIENT_HFLIPPED:
+    case TRANSFORM_HFLIP:
         MidY = (output->top + output->bottom) / 2.f;
         MidX = (output->left + output->right) / 2.f;
         top    =  MidY / (MidY - output->top);
@@ -596,7 +596,7 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
         left   = -(src_width  - MidX) / (output->right - MidX);
         right  =  MidX / (MidX - output->left);
         break;
-    case ORIENT_NORMAL:
+    case TRANSFORM_IDENTITY:
     default:
         /* left/top aligned */
         MidY = (output->top + output->bottom) / 2.f;
@@ -645,8 +645,8 @@ static void SetupQuadFlat(d3d_vertex_t *dst_data, const RECT *output,
     dst_data[3].texture.uv[1] = 0.0f;
 
     /* Make sure surfaces are facing the right way */
-    if( orientation == ORIENT_TOP_RIGHT || orientation == ORIENT_BOTTOM_LEFT
-     || orientation == ORIENT_LEFT_TOP  || orientation == ORIENT_RIGHT_BOTTOM )
+    if( orientation == TRANSFORM_HFLIP || orientation == TRANSFORM_VFLIP
+     || orientation == TRANSFORM_TRANSPOSE  || orientation == TRANSFORM_ANTI_TRANSPOSE )
     {
         triangle_pos[0] = 0;
         triangle_pos[1] = 1;
@@ -912,7 +912,7 @@ bool D3D_QuadSetupBuffers(vlc_object_t *o, d3d_quad_t *quad, video_projection_mo
 }
 
 bool D3D_SetupQuadData(vlc_object_t *o, d3d_quad_t *quad, const RECT *output, d3d_vertex_t*dst_data,
-                       void *pData, video_orientation_t orientation)
+                       void *pData, video_transform_t orientation)
 {
     switch (quad->projection)
     {


=====================================
modules/video_output/win32/d3d_shaders.h
=====================================
@@ -43,6 +43,7 @@ typedef struct {
     bool                     b_full_range;
     unsigned                 luminance_peak;
     const d3d_format_t       *pixelFormat;
+    video_orientation_t      orientation;
 } display_info_t;
 
 /* structures passed to the pixel shader */
@@ -116,7 +117,7 @@ void D3D_SetupQuad(vlc_object_t *, const video_format_t *, d3d_quad_t *,
                    const display_info_t *);
 
 bool D3D_QuadSetupBuffers(vlc_object_t *, d3d_quad_t *, video_projection_mode_t);
-bool D3D_SetupQuadData(vlc_object_t *, d3d_quad_t *, const RECT *, d3d_vertex_t*, void *, video_orientation_t);
+bool D3D_SetupQuadData(vlc_object_t *, d3d_quad_t *, const RECT *, d3d_vertex_t*, void *, video_transform_t);
 
 void D3D_UpdateViewpoint(d3d_quad_t *, const vlc_viewpoint_t *, float f_sar);
 


=====================================
modules/video_output/win32/direct3d11.cpp
=====================================
@@ -216,6 +216,7 @@ static int UpdateDisplayFormat(vout_display_t *vd, const video_format_t *fmt)
     new_display.transfer  = (video_transfer_func_t)   out.transfer;
     new_display.primaries = (video_color_primaries_t) out.primaries;
     new_display.b_full_range = out.full_range;
+    new_display.orientation = (video_orientation_t) out.orientation;
 
     /* guestimate the display peak luminance */
     switch (new_display.transfer)
@@ -238,7 +239,8 @@ static int UpdateDisplayFormat(vout_display_t *vd, const video_format_t *fmt)
            sys->display.color          != new_display.color ||
            sys->display.transfer       != new_display.transfer ||
            sys->display.primaries      != new_display.primaries ||
-           sys->display.b_full_range   != new_display.b_full_range ))
+           sys->display.b_full_range   != new_display.b_full_range ||
+           sys->display.orientation    != new_display.orientation ))
     {
         sys->display = new_display;
         /* TODO release the pixel shaders if the format changed */
@@ -275,7 +277,7 @@ static void UpdateSize(vout_display_t *vd)
     d3d11_device_lock( sys->d3d_dev );
 
     D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect,
-                             vd->source->orientation);
+                             video_format_GetTransform(vd->source->orientation, sys->display.orientation));
 
     D3D11_UpdateViewpoint( vd, sys->d3d_dev, &sys->picQuad, &vd->cfg->viewpoint,
                           (float) vd->cfg->display.width / vd->cfg->display.height );
@@ -1067,7 +1069,8 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
     source_rect.right  = fmt->i_x_offset + fmt->i_visible_width;
     source_rect.top    = fmt->i_y_offset;
     source_rect.bottom = fmt->i_y_offset + fmt->i_visible_height;
-    if (!D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect, vd->source->orientation))
+    if (!D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect,
+                                  video_format_GetTransform(vd->source->orientation, sys->display.orientation)))
     {
         msg_Err(vd, "Could not set quad picture position.");
         return VLC_EGENERIC;
@@ -1409,7 +1412,8 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
         output.top    = r->fmt.i_y_offset;
         output.bottom = r->fmt.i_y_offset + r->fmt.i_visible_height;
 
-        D3D11_UpdateQuadPosition(vd, sys->d3d_dev, quad, &output, ORIENT_NORMAL);
+        D3D11_UpdateQuadPosition(vd, sys->d3d_dev, quad, &output,
+            video_format_GetTransform(ORIENT_NORMAL, sys->display.orientation));
 
         RECT spuViewport;
         spuViewport.left   = (FLOAT) r->i_x * sys->area.place.width  / subpicture->i_original_picture_width;


=====================================
modules/video_output/win32/direct3d9.c
=====================================
@@ -1753,6 +1753,7 @@ static bool LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_render_
     out->colorspace  = libvlc_video_colorspace_BT709;
     out->primaries   = libvlc_video_primaries_BT709;
     out->transfer    = libvlc_video_transfer_func_SRGB;
+    out->orientation = libvlc_video_orient_top_left;
 
     return true;
 }


=====================================
modules/video_output/win32/dxgi_swapchain.cpp
=====================================
@@ -449,6 +449,7 @@ void DXGI_SwapchainUpdateOutput( dxgi_swapchain *display, libvlc_video_output_cf
     out->colorspace     = (libvlc_video_color_space_t)     display->colorspace->color;
     out->primaries      = (libvlc_video_color_primaries_t) display->colorspace->primaries;
     out->transfer       = (libvlc_video_transfer_func_t)   display->colorspace->transfer;
+    out->orientation    = libvlc_video_orient_top_left;
 }
 
 bool DXGI_UpdateSwapChain( dxgi_swapchain *display, IDXGIAdapter *dxgiadapter,



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f0c6da69cc02051112d2fc60f30a886b1f2aecc4...6fa58261ff3268ce82739b10809a02d827a11a77

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f0c6da69cc02051112d2fc60f30a886b1f2aecc4...6fa58261ff3268ce82739b10809a02d827a11a77
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list