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.
# The format of this file was inspired by the Linux kernel CREDITS file.
# Authors are listed alphabetically.
# Authors are listed alphabetically.
...
@@ -255,6 +255,7 @@ E: titer@videolan.org
...
@@ -255,6 +255,7 @@ E: titer@videolan.org
C: titer
C: titer
D: BeOS module fixes and enhancements
D: BeOS module fixes and enhancements
D: Stream output
D: Stream output
D: Mac OS X OpenGL video output
S: France
S: France
N: Jean-Paul Saman
N: Jean-Paul Saman
...
...
modules/gui/macosx/vout.h
View file @
2e29fe87
...
@@ -2,11 +2,12 @@
...
@@ -2,11 +2,12 @@
* vout.h: MacOS X interface module
* vout.h: MacOS X interface module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
* 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>
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
* Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Eric Petit <titer@m0k.org>
*
*
* This program is free software; you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
...
@@ -60,14 +61,14 @@
...
@@ -60,14 +61,14 @@
{
{
vout_thread_t
*
p_vout
;
vout_thread_t
*
p_vout
;
int
b_init_done
;
int
b_init_done
;
unsigned
long
i_
cur_
texture
;
unsigned
long
i_texture
;
float
f_x
;
float
f_x
;
float
f_y
;
float
f_y
;
}
}
-
(
id
)
initWithFrame
:
(
NSRect
)
frame
vout
:
(
vout_thread_t
*
)
p_vout
;
-
(
id
)
initWithFrame
:
(
NSRect
)
frame
vout
:
(
vout_thread_t
*
)
p_vout
;
-
(
void
)
initTextures
;
-
(
void
)
initTextures
;
-
(
void
)
reloadTexture
:
(
picture_t
*
)
p_pic
;
-
(
void
)
reloadTexture
;
@end
@end
...
...
modules/gui/macosx/vout.m
View file @
2e29fe87
...
@@ -2,12 +2,13 @@
...
@@ -2,12 +2,13 @@
* vout.m: MacOS X video output module
* vout.m: MacOS X video output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
* 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>
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
* Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Jon Lech Johansen <jon-vl@nanocrew.net>
* Derk-Jan Hartman <thedj@users.sourceforge.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
* 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
* 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 )
...
@@ -291,7 +292,8 @@ static int vout_Init( vout_thread_t *p_vout )
}
}
/* Try to initialize up to QT_MAX_DIRECTBUFFERS direct buffers */
/* 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
;
p_pic
=
NULL
;
...
@@ -478,9 +480,11 @@ static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -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
]
)
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
drawRect
:
[
p_vout
->
p_sys
->
o_glview
bounds
]];
[
p_vout
->
p_sys
->
o_glview
bounds
]];
[
p_vout
->
p_sys
->
o_glview
reloadTexture
];
[
p_vout
->
p_sys
->
o_glview
unlockFocus
];
[
p_vout
->
p_sys
->
o_glview
unlockFocus
];
}
}
}
}
...
@@ -1330,70 +1334,51 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -1330,70 +1334,51 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
-
(
void
)
initTextures
-
(
void
)
initTextures
{
{
int
i
;
GLuint
pi_textures
[
QT_MAX_DIRECTBUFFERS
];
[[
self
openGLContext
]
makeCurrentContext
];
[[
self
openGLContext
]
makeCurrentContext
];
/* Create textures */
/* Create textures */
glGenTextures
(
QT_MAX_DIRECTBUFFERS
,
pi_textures
);
glGenTextures
(
1
,
&
i_texture
);
for
(
i
=
0
;
i
<
I_OUTPUTPICTURES
;
i
++
)
glEnable
(
GL_TEXTURE_RECTANGLE_EXT
);
{
glEnable
(
GL_UNPACK_CLIENT_STORAGE_APPLE
);
glEnable
(
GL_TEXTURE_RECTANGLE_EXT
);
glEnable
(
GL_UNPACK_CLIENT_STORAGE_APPLE
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_texture
);
glEnable
(
GL_APPLE_texture_range
);
/* Use VRAM texturing */
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
pi_textures
[
i
]
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_STORAGE_HINT_APPLE
,
GL_STORAGE_CACHED_APPLE
);
#if 0
FIXME: the lines below are supposed to avoid a memcpy and get
/* Tell the driver not to make a copy of the texture but to use
a noticeable performance boost, but they are annoying side
our buffer */
effects at the moment -- titer
glPixelStorei
(
GL_UNPACK_CLIENT_STORAGE_APPLE
,
GL_TRUE
);
/* Use AGP texturing */
/* Linear interpolation */
glTextureRangeAPPLE( GL_TEXTURE_RECTANGLE_EXT, 0, NULL );
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
glTexParameteri( GL_TEXTURE_RECTANGLE_EXT,
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
);
GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_SHARED_APPLE );
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
#endif
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
);
/* Tell the driver not to make a copy of the texture but to use
/* I have no idea what this exactly does, but it seems to be
our buffer */
necessary for scaling */
glPixelStorei
(
GL_UNPACK_CLIENT_STORAGE_APPLE
,
GL_TRUE
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_S
,
GL_CLAMP_TO_EDGE
);
/* Linear interpolation */
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_WRAP_T
,
GL_CLAMP_TO_EDGE
);
GL_TEXTURE_MIN_FILTER
,
GL_LINEAR
);
glPixelStorei
(
GL_UNPACK_ROW_LENGTH
,
0
);
glTexParameteri
(
GL_TEXTURE_RECTANGLE_EXT
,
GL_TEXTURE_MAG_FILTER
,
GL_LINEAR
);
glTexImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
GL_RGBA
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
0
,
/* I have no idea what this exactly does, but it seems to be
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
necessary for scaling */
PP_OUTPUTPICTURE
[
0
]
->
p_data
);
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
];
}
b_init_done
=
1
;
b_init_done
=
1
;
}
}
-
(
void
)
reloadTexture
:
(
picture_t
*
)
p_pic
-
(
void
)
reloadTexture
{
{
i_cur_texture
=
*
((
GLuint
*
)
p_pic
->
p_sys
);
[[
self
openGLContext
]
makeCurrentContext
];
[[
self
openGLContext
]
makeCurrentContext
];
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_
cur_
texture
);
glBindTexture
(
GL_TEXTURE_RECTANGLE_EXT
,
i_texture
);
/* glTexSubImage2D is faster than glTexImage2D
/* glTexSubImage2D is faster than glTexImage2D
http://developer.apple.com/samplecode/Sample_Code/Graphics_3D/
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 )
...
@@ -1401,7 +1386,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
glTexSubImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
0
,
0
,
glTexSubImage2D
(
GL_TEXTURE_RECTANGLE_EXT
,
0
,
0
,
0
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
GL_YCBCR_422_APPLE
,
GL_UNSIGNED_SHORT_8_8_APPLE
,
p_pic
->
p_data
);
PP_OUTPUTPICTURE
[
0
]
->
p_data
);
}
}
-
(
void
)
drawRect
:
(
NSRect
)
rect
-
(
void
)
drawRect
:
(
NSRect
)
rect
...
@@ -1425,7 +1410,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -1425,7 +1410,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
}
}
/* Draw a quad with our texture on it */
/* 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
);
glBegin
(
GL_QUADS
);
/* Top left */
/* Top left */
glTexCoord2f
(
0
.
0
,
0
.
0
);
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