[vlc-commits] Fixed rendering of subpictures with non 0 offset in direct3d.
Laurent Aimar
git at videolan.org
Thu Jan 5 23:02:55 CET 2012
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Thu Jan 5 22:55:42 2012 +0100| [1772a146c2a2b9a76af44e1226765aa8368f3b0e] | committer: Laurent Aimar
Fixed rendering of subpictures with non 0 offset in direct3d.
It is needed for DVD menu support.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1772a146c2a2b9a76af44e1226765aa8368f3b0e
---
modules/video_output/msw/direct3d.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/modules/video_output/msw/direct3d.c b/modules/video_output/msw/direct3d.c
index e55de0c..a16ab22 100644
--- a/modules/video_output/msw/direct3d.c
+++ b/modules/video_output/msw/direct3d.c
@@ -1254,10 +1254,12 @@ static void Direct3DImportSubpicture(vout_display_t *vd,
D3DLOCKED_RECT lock;
hr = IDirect3DTexture9_LockRect(d3dr->texture, 0, &lock, NULL, 0);
if (SUCCEEDED(hr)) {
- uint8_t *dst_data = lock.pBits;
- int dst_pitch = lock.Pitch;
- uint8_t *src_data = r->p_picture->p->p_pixels;
- int src_pitch = r->p_picture->p->i_pitch;
+ uint8_t *dst_data = lock.pBits;
+ int dst_pitch = lock.Pitch;
+ const int src_offset = r->fmt.i_y_offset * r->p_picture->p->i_pitch +
+ r->fmt.i_x_offset * r->p_picture->p->i_pixel_pitch;
+ uint8_t *src_data = &r->p_picture->p->p_pixels[src_offset];
+ int src_pitch = r->p_picture->p->i_pitch;
for (unsigned y = 0; y < r->fmt.i_visible_height; y++) {
int copy_pitch = __MIN(dst_pitch, r->p_picture->p->i_visible_pitch);
if (d3dr->format == D3DFMT_A8B8G8R8) {
More information about the vlc-commits
mailing list