Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
2e29fe87
Commit
2e29fe87
authored
Feb 03, 2004
by
Eric Petit
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
macosx/vout* : OpenGL VRAM texturing finaly works correctly now.
parent
9c08885d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
50 additions
and
63 deletions
+50
-63
AUTHORS
AUTHORS
+2
-1
modules/gui/macosx/vout.h
modules/gui/macosx/vout.h
+4
-3
modules/gui/macosx/vout.m
modules/gui/macosx/vout.m
+44
-59
No files found.
AUTHORS
View file @
2e29fe87
# $Id: AUTHORS,v 1.10
1 2004/01/05 12:37:52 jlj
Exp $
# $Id: AUTHORS,v 1.10
2 2004/02/03 13:00:27 titer
Exp $
#
# The format of this file was inspired by the Linux kernel CREDITS file.
# Authors are listed alphabetically.
...
...
@@ -255,6 +255,7 @@ E: titer@videolan.org
C: titer
D: BeOS module fixes and enhancements
D: Stream output
D: Mac OS X OpenGL video output
S: France
N: Jean-Paul Saman
...
...
modules/gui/macosx/vout.h
View file @
2e29fe87
...
...
@@ -2,11 +2,12 @@
* vout.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
* $Id: vout.h,v 1.2
1 2004/02/02 08:50:41
titer Exp $
* $Id: vout.h,v 1.2
2 2004/02/03 13:00:27
titer Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Eric Petit <titer@m0k.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -60,14 +61,14 @@
{
vout_thread_t
*
p_vout
;
int
b_init_done
;
unsigned
long
i_
cur_
texture
;
unsigned
long
i_texture
;
float
f_x
;
float
f_y
;
}
-
(
id
)
initWithFrame
:
(
NSRect
)
frame
vout
:
(
vout_thread_t
*
)
p_vout
;
-
(
void
)
initTextures
;
-
(
void
)
reloadTexture
:
(
picture_t
*
)
p_pic
;
-
(
void
)
reloadTexture
;
@end
...
...
modules/gui/macosx/vout.m
View file @
2e29fe87
...
...
@@ -2,12 +2,13 @@
* vout.m: MacOS X video output module
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
* $Id: vout.m,v 1.7
6 2004/02/02 08:50:41
titer Exp $
* $Id: vout.m,v 1.7
7 2004/02/03 13:00:27
titer Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Derk-Jan Hartman <thedj@users.sourceforge.net>
* Eric Petit <titer@m0k.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -291,7 +292,8 @@ static int vout_Init( vout_thread_t *p_vout )
}
/* Try to initialize up to QT_MAX_DIRECTBUFFERS direct buffers */
while
(
I_OUTPUTPICTURES
<
QT_MAX_DIRECTBUFFERS
)
while
(
I_OUTPUTPICTURES
<
p_vout
->
p_sys
->
i_opengl
?
1
:
QT_MAX_DIRECTBUFFERS
)
{
p_pic
=
NULL
;
...
...
@@ -478,9 +480,11 @@ static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
{
if
(
[
p_vout
->
p_sys
->
o_glview
lockFocusIfCanDraw
]
)
{
[
p_vout
->
p_sys
->
o_glview
reloadTexture
:
p_pic
];
/* Texture gotta be reload before the buffer is filled
(thanks to gcc from arstechnica forums) */
[
p_vout
->
p_sys
->
o_glview
drawRect
:
[
p_vout
->
p_sys
->
o_glview
bounds
]];
[
p_vout
->
p_sys
->
o_glview
reloadTexture
];
[
p_vout
->
p_sys
->
o_glview
unlockFocus
];
}
}
...
...
@@ -1330,70 +1334,51 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
-
(
void
)
initTextures
{
int
i
;
GLuint
pi_textures
[
QT_MAX_DIRECTBUFFERS
];
[[
self
openGLContext
]
makeCurrentContext
];
/* Create textures */
glGenTextures
(
QT_MAX_DIRECTBUFFERS
,
pi_textures
);
for
(
i
=
0
;
i
<
I_OUTPUTPICTURES
;
i
++
)
{
glEnable
(
GL_TEXTURE_RECTANGLE_EXT
);
glEnable
(
GL_UNPACK_CLIENT_STORAGE_APPLE
);
glEnable
(
GL_APPLE_texture_range
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
pi_textures
[
i
]
);
#if 0
FIXME: the lines below are supposed to avoid a memcpy and get
a noticeable performance boost, but they are annoying side
effects at the moment -- titer
/* Use AGP texturing */
glTextureRangeAPPLE( GL_TEXTURE_RECTANGLE_EXT, 0, NULL );
glTexParameteri( GL_TEXTURE_RECTANGLE_EXT,
GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_SHARED_APPLE );
#endif
/* Tell the driver not to make a copy of the texture but to use
our buffer */
glPixelStorei
(
GL_UNPACK_CLIENT_STORAGE_APPLE
,
GL_TRUE
);
/* Linear interpolation */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
);
/* I have no idea what this exactly does, but it seems to be
necessary for scaling */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_S
,
GL_CLAMP_TO_EDGE
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_T
,
GL_CLAMP_TO_EDGE
);
glPixelStorei
(
GL_UNPACK_ROW_LENGTH
,
0
);
glTexImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
GL_RGBA
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
0
,
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
PP_OUTPUTPICTURE
[
i
]
->
p_data
);
PP_OUTPUTPICTURE
[
i
]
->
p_sys
=
malloc
(
sizeof
(
GLuint
)
);
*
((
GLuint
*
)
PP_OUTPUTPICTURE
[
i
]
->
p_sys
)
=
pi_textures
[
i
];
}
glGenTextures
(
1
,
&
i_texture
);
glEnable
(
GL_TEXTURE_RECTANGLE_EXT
);
glEnable
(
GL_UNPACK_CLIENT_STORAGE_APPLE
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_texture
);
/* Use VRAM texturing */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_STORAGE_HINT_APPLE
,
GL_STORAGE_CACHED_APPLE
);
/* Tell the driver not to make a copy of the texture but to use
our buffer */
glPixelStorei
(
GL_UNPACK_CLIENT_STORAGE_APPLE
,
GL_TRUE
);
/* Linear interpolation */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
);
/* I have no idea what this exactly does, but it seems to be
necessary for scaling */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_S
,
GL_CLAMP_TO_EDGE
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_T
,
GL_CLAMP_TO_EDGE
);
glPixelStorei
(
GL_UNPACK_ROW_LENGTH
,
0
);
glTexImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
GL_RGBA
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
0
,
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
PP_OUTPUTPICTURE
[
0
]
->
p_data
);
b_init_done
=
1
;
}
-
(
void
)
reloadTexture
:
(
picture_t
*
)
p_pic
-
(
void
)
reloadTexture
{
i_cur_texture
=
*
((
GLuint
*
)
p_pic
->
p_sys
);
[[
self
openGLContext
]
makeCurrentContext
];
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_
cur_
texture
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_texture
);
/* glTexSubImage2D is faster than glTexImage2D
http://developer.apple.com/samplecode/Sample_Code/Graphics_3D/
...
...
@@ -1401,7 +1386,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
glTexSubImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
0
,
0
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
p_pic
->
p_data
);
PP_OUTPUTPICTURE
[
0
]
->
p_data
);
}
-
(
void
)
drawRect
:
(
NSRect
)
rect
...
...
@@ -1425,7 +1410,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
}
/* Draw a quad with our texture on it */
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_
cur_
texture
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_texture
);
glBegin
(
GL_QUADS
);
/* Top left */
glTexCoord2f
(
0
.
0
,
0
.
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment