Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
9999e41e
Commit
9999e41e
authored
Apr 01, 2002
by
Tony Castley
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved overlay detection, default colour space selection.
Has bad output color need some work.
parent
d1db63f6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
86 additions
and
59 deletions
+86
-59
plugins/beos/VideoWindow.h
plugins/beos/VideoWindow.h
+26
-8
plugins/beos/vout_beos.cpp
plugins/beos/vout_beos.cpp
+60
-51
No files found.
plugins/beos/VideoWindow.h
View file @
9999e41e
...
...
@@ -2,7 +2,7 @@
* VideoWindow.h: BeOS video window class prototype
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
* $Id: VideoWindow.h,v 1.1
4 2002/03/31 08:13:38
tcastley Exp $
* $Id: VideoWindow.h,v 1.1
5 2002/04/01 05:49:00
tcastley Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Tony Castley <tcastley@mail.powerup.com.au>
...
...
@@ -23,9 +23,28 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#define BITMAP 0
#define DIRECT 1
#define OVERLAY 2
#define OPENGL 3
#define OVERLAY 1
#define OPENGL 2
typedef
struct
colorcombo
{
color_space
colspace
;
const
char
*
name
;
u32
chroma
;
int
planes
;
}
colorcombo
;
colorcombo
colspace
[]
=
{
{
B_YUV422
,
"B_YUV422"
,
FOURCC_Y422
,
3
},
{
B_YCbCr422
,
"B_YCbCr422"
,
FOURCC_UYVY
,
3
},
{
B_RGB32
,
"B_RGB32"
,
FOURCC_RV32
,
1
},
{
B_RGB16
,
"B_RGB16"
,
FOURCC_RV16
,
1
}
};
#define COLOR_COUNT 4
#define DEFAULT_COL 2
class
VLCView
:
public
BView
{
...
...
@@ -52,14 +71,13 @@ public:
void
ScreenChanged
(
BRect
frame
,
color_space
mode
);
void
drawBuffer
(
int
bufferIndex
);
void
WindowActivated
(
bool
active
);
int
SelectDrawingMode
(
int
width
,
int
height
);
// this is the hook controling direct screen connection
int32
i_width
;
// incomming bitmap size
int32
i_height
;
BRect
winSize
;
// current window size
// float width_scale, height_scale;
// float out_top, out_left, out_height, out_width;
bool
is_zoomed
,
vsync
,
is_overlay
;
bool
is_zoomed
,
vsync
;
BBitmap
*
bitmap
[
2
];
BBitmap
*
overlaybitmap
;
VLCView
*
view
;
...
...
@@ -67,9 +85,9 @@ public:
bool
teardownwindow
;
thread_id
fDrawThreadID
;
int
mode
;
int
colspace_index
;
private:
// display_mode old_mode;
struct
vout_thread_s
*
p_vout
;
};
...
...
plugins/beos/vout_beos.cpp
View file @
9999e41e
...
...
@@ -2,7 +2,7 @@
* vout_beos.cpp: beos video output display method
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: vout_beos.cpp,v 1.
49 2002/03/31 08:13:38
tcastley Exp $
* $Id: vout_beos.cpp,v 1.
50 2002/04/01 05:49:00
tcastley Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -44,14 +44,12 @@ extern "C"
#include "video_output.h"
#include "interface.h"
}
#include "VideoWindow.h"
#include "DrawingTidbits.h"
#define BITS_PER_PLANE 16
#define BYTES_PER_PIXEL 2
/*****************************************************************************
* vout_sys_t: BeOS video output method descriptor
*****************************************************************************
...
...
@@ -112,7 +110,7 @@ int32 Draw(void *data)
screen
->
WaitForRetrace
(
22000
);
delete
screen
;
}
if
(
p_win
->
is_overlay
)
if
(
p_win
->
mode
==
OVERLAY
)
{
p_win
->
overlaybitmap
->
LockBits
();
memcpy
(
p_win
->
overlaybitmap
->
Bits
(),
...
...
@@ -123,7 +121,8 @@ int32 Draw(void *data)
}
else
{
p_win
->
view
->
DrawBitmap
(
p_win
->
bitmap
[
p_win
->
i_buffer
]
);
p_win
->
view
->
DrawBitmap
(
p_win
->
bitmap
[
p_win
->
i_buffer
],
p_win
->
view
->
Bounds
()
);
}
p_win
->
Unlock
();
}
...
...
@@ -166,36 +165,7 @@ VideoWindow::VideoWindow( int v_width, int v_height,
i_height
=
frame
.
IntegerHeight
();
FrameResized
(
frame
.
IntegerWidth
(),
frame
.
IntegerHeight
());
overlaybitmap
=
new
BBitmap
(
BRect
(
0
,
0
,
v_width
,
v_height
),
B_BITMAP_WILL_OVERLAY
|
B_BITMAP_RESERVE_OVERLAY_CHANNEL
,
B_RGB16
);
if
(
overlaybitmap
&&
overlaybitmap
->
InitCheck
()
==
B_OK
)
{
is_overlay
=
true
;
bitmap
[
0
]
=
new
BBitmap
(
BRect
(
0
,
0
,
v_width
,
v_height
),
B_RGB16
);
bitmap
[
1
]
=
new
BBitmap
(
BRect
(
0
,
0
,
v_width
,
v_height
),
B_RGB16
);
memset
(
bitmap
[
0
]
->
Bits
(),
0
,
bitmap
[
0
]
->
BitsLength
());
memset
(
bitmap
[
1
]
->
Bits
(),
0
,
bitmap
[
1
]
->
BitsLength
());
memset
(
overlaybitmap
->
Bits
(),
0
,
overlaybitmap
->
BitsLength
());
rgb_color
key
;
view
->
SetViewOverlay
(
overlaybitmap
,
overlaybitmap
->
Bounds
()
,
view
->
Bounds
(),
&
key
,
B_FOLLOW_ALL
,
B_OVERLAY_FILTER_HORIZONTAL
|
B_OVERLAY_FILTER_VERTICAL
);
view
->
SetViewColor
(
key
);
SetTitle
(
VOUT_TITLE
" (RGB Overlay)"
);
}
else
{
bitmap
[
0
]
=
new
BBitmap
(
BRect
(
0
,
0
,
v_width
,
v_height
),
B_RGB32
);
bitmap
[
1
]
=
new
BBitmap
(
BRect
(
0
,
0
,
v_width
,
v_height
),
B_RGB32
);
memset
(
bitmap
[
0
]
->
Bits
(),
0
,
bitmap
[
0
]
->
BitsLength
());
memset
(
bitmap
[
1
]
->
Bits
(),
0
,
bitmap
[
1
]
->
BitsLength
());
is_overlay
=
false
;
view
->
DrawBitmap
(
bitmap
[
0
],
view
->
Bounds
());
SetTitle
(
VOUT_TITLE
" (RGB Bitmap)"
);
}
mode
=
SelectDrawingMode
(
v_width
,
v_height
);
Show
();
}
...
...
@@ -204,12 +174,12 @@ VideoWindow::~VideoWindow()
int32
result
;
teardownwindow
=
true
;
wait_for_thread
(
fDrawThreadID
,
&
result
);
kill_thread
(
fDrawThreadID
);
// delete overlaybitmap;
// delete bitmap[0];
// delete bitmap[1];
Lock
();
view
->
ClearViewOverlay
();
wait_for_thread
(
fDrawThreadID
,
&
result
);
delete
overlaybitmap
;
delete
bitmap
[
0
];
delete
bitmap
[
1
];
Quit
();
}
...
...
@@ -307,6 +277,52 @@ void VideoWindow::WindowActivated(bool active)
view
->
Invalidate
();
}
int
VideoWindow
::
SelectDrawingMode
(
int
width
,
int
height
)
{
int
drawingMode
=
BITMAP
;
for
(
int
i
=
0
;
i
<
COLOR_COUNT
;
i
++
)
{
overlaybitmap
=
new
BBitmap
(
BRect
(
0
,
0
,
width
,
height
),
B_BITMAP_WILL_OVERLAY
|
B_BITMAP_RESERVE_OVERLAY_CHANNEL
,
colspace
[
i
].
colspace
);
if
(
overlaybitmap
&&
overlaybitmap
->
InitCheck
()
==
B_OK
)
{
drawingMode
=
OVERLAY
;
colspace_index
=
i
;
memset
(
overlaybitmap
->
Bits
(),
0
,
overlaybitmap
->
BitsLength
());
rgb_color
key
;
view
->
SetViewOverlay
(
overlaybitmap
,
overlaybitmap
->
Bounds
()
,
view
->
Bounds
(),
&
key
,
B_FOLLOW_ALL
,
B_OVERLAY_FILTER_HORIZONTAL
|
B_OVERLAY_FILTER_VERTICAL
);
view
->
SetViewColor
(
key
);
SetTitle
(
VOUT_TITLE
" (Overlay)"
);
intf_Msg
(
"Color index good: %i"
,
colspace_index
);
break
;
}
else
{
delete
overlaybitmap
;
intf_Msg
(
"Color index bad: %i"
,
colspace_index
);
}
}
if
(
drawingMode
==
BITMAP
)
{
// fallback to RGB32
colspace_index
=
DEFAULT_COL
;
SetTitle
(
VOUT_TITLE
" (Bitmap)"
);
}
bitmap
[
0
]
=
new
BBitmap
(
BRect
(
0
,
0
,
width
,
height
),
colspace
[
colspace_index
].
colspace
);
bitmap
[
1
]
=
new
BBitmap
(
BRect
(
0
,
0
,
width
,
height
),
colspace
[
colspace_index
].
colspace
);
memset
(
bitmap
[
0
]
->
Bits
(),
0
,
bitmap
[
0
]
->
BitsLength
());
memset
(
bitmap
[
1
]
->
Bits
(),
0
,
bitmap
[
1
]
->
BitsLength
());
intf_Msg
(
"Color index used: %i"
,
colspace_index
);
return
drawingMode
;
}
/*****************************************************************************
* VLCView::VLCView
*****************************************************************************/
...
...
@@ -339,7 +355,7 @@ void VLCView::MouseDown(BPoint point)
void
VLCView
::
Draw
(
BRect
updateRect
)
{
VideoWindow
*
win
=
(
VideoWindow
*
)
Window
();
if
(
!
win
->
is_overlay
)
if
(
win
->
mode
==
BITMAP
)
FillRect
(
updateRect
);
}
...
...
@@ -423,14 +439,7 @@ int vout_Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_aspect
=
p_vout
->
p_sys
->
i_width
*
VOUT_ASPECT_FACTOR
/
p_vout
->
p_sys
->
i_height
;
if
(
p_vout
->
p_sys
->
p_window
->
is_overlay
)
{
p_vout
->
output
.
i_chroma
=
FOURCC_RV16
;
}
else
{
p_vout
->
output
.
i_chroma
=
FOURCC_RV32
;
}
p_vout
->
output
.
i_chroma
=
colspace
[
p_vout
->
p_sys
->
p_window
->
colspace_index
].
chroma
;
p_vout
->
output
.
i_rmask
=
0x00ff0000
;
p_vout
->
output
.
i_gmask
=
0x0000ff00
;
...
...
@@ -460,7 +469,7 @@ int vout_Init( vout_thread_t *p_vout )
p_pic
->
p
->
i_pitch
=
p_vout
->
p_sys
->
p_window
->
bitmap
[
0
]
->
BytesPerRow
();
p_pic
->
p
->
i_pixel_bytes
=
p_pic
->
p
->
i_pitch
/
p_vout
->
p_sys
->
p_window
->
bitmap
[
0
]
->
Bounds
().
IntegerWidth
();
p_pic
->
i_planes
=
1
;
p_pic
->
i_planes
=
colspace
[
p_vout
->
p_sys
->
p_window
->
colspace_index
].
planes
;
p_pic
->
i_status
=
DESTROYED_PICTURE
;
p_pic
->
i_type
=
DIRECT_PICTURE
;
...
...
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