]> git.sesse.net Git - vlc/blobdiff - modules/video_output/msw/direct3d.c
Factorized Direct3DLockSurface/DirectXLock.
[vlc] / modules / video_output / msw / direct3d.c
index 14f2bc950ce110fb6caa374aa3f1fa02ac5baeef..161693748e347c6cddb1782fd186f365bccb89de 100644 (file)
@@ -761,29 +761,7 @@ static int Direct3DLockSurface(picture_t *picture)
         return VLC_EGENERIC;
     }
 
-    /* fill in buffer info in first plane */
-    picture->p->p_pixels = d3drect.pBits;
-    picture->p->i_pitch  = d3drect.Pitch;
-
-    /*  Fill chroma planes for planar YUV */
-    if (picture->format.i_chroma == VLC_CODEC_I420 ||
-        picture->format.i_chroma == VLC_CODEC_J420 ||
-        picture->format.i_chroma == VLC_CODEC_YV12) {
-
-        for (int n = 1; n < picture->i_planes; n++) {
-            const plane_t *o = &picture->p[n-1];
-            plane_t *p = &picture->p[n];
-
-            p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch;
-            p->i_pitch  = d3drect.Pitch / 2;
-        }
-        /* The d3d buffer is always allocated as YV12 */
-        if (vlc_fourcc_AreUVPlanesSwapped(picture->format.i_chroma, VLC_CODEC_YV12)) {
-            uint8_t *p_tmp = picture->p[1].p_pixels;
-            picture->p[1].p_pixels = picture->p[2].p_pixels;
-            picture->p[2].p_pixels = p_tmp;
-        }
-    }
+    CommonUpdatePicture(picture, d3drect.pBits, d3drect.Pitch);
     return VLC_SUCCESS;
 }
 /**