Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
a78ebd14
Commit
a78ebd14
authored
Dec 17, 2001
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* CPU detection under BeOS. * Fixed XVideo port selection.
parent
09fed885
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
101 additions
and
102 deletions
+101
-102
plugins/x11/vout_xvideo.c
plugins/x11/vout_xvideo.c
+78
-77
src/interface/main.c
src/interface/main.c
+23
-25
No files found.
plugins/x11/vout_xvideo.c
View file @
a78ebd14
...
...
@@ -2,7 +2,7 @@
* vout_xvideo.c: Xvideo video output display method
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: vout_xvideo.c,v 1.36.2.
1 2001/12/10 10:59:14 massiot
Exp $
* $Id: vout_xvideo.c,v 1.36.2.
2 2001/12/17 03:48:12 sam
Exp $
*
* Authors: Shane Harper <shanegh@optusnet.com.au>
* Vincent Seguin <seguin@via.ecp.fr>
...
...
@@ -1204,6 +1204,8 @@ static int XVideoGetPort( Display *dpy )
/* No special xv port has been requested so try all of them */
for
(
i_adaptor
=
0
;
i_adaptor
<
i_num_adaptors
;
++
i_adaptor
)
{
XvImageFormatValues
*
p_formats
;
int
i_format
,
i_num_formats
;
int
i_port
;
/* If we requested an adaptor and it's not this one, we aren't
...
...
@@ -1213,101 +1215,100 @@ static int XVideoGetPort( Display *dpy )
continue
;
}
/* If the adaptor doesn't have the required properties, skip it */
if
(
!
(
p_adaptor
[
i_adaptor
].
type
&
XvInputMask
)
||
!
(
p_adaptor
[
i_adaptor
].
type
&
XvImageMask
)
)
{
continue
;
}
/* Check that port supports YUV12 planar format... */
p_formats
=
XvListImageFormats
(
dpy
,
p_adaptor
[
i_adaptor
].
base_id
,
&
i_num_formats
);
for
(
i_port
=
p_adaptor
[
i_adaptor
].
base_id
;
i_port
<
p_adaptor
[
i_adaptor
].
base_id
+
p_adaptor
[
i_adaptor
].
num_ports
;
i_port
++
)
for
(
i_format
=
0
;
i_format
<
i_num_formats
;
i_format
++
)
{
XvImageFormatValues
*
p_formats
;
int
i_format
,
i_num_formats
;
XvEncodingInfo
*
p_enc
;
int
i_enc
,
i_num_encodings
;
XvAttribute
*
p_attr
;
int
i_attr
,
i_num_attributes
;
/* If
we already found a port, we aren't interested
*/
if
(
i_selected_port
!=
-
1
)
/* If
this is not the format we want, forget it
*/
if
(
p_formats
[
i_format
].
id
!=
GUID_YUV12_PLANAR
)
{
continue
;
}
/* Check that port supports YUV12 planar format... */
p_formats
=
XvListImageFormats
(
dpy
,
i_port
,
&
i_num_formats
);
for
(
i_format
=
0
;
i_format
<
i_num_formats
;
i_format
++
)
/* Look for the first available port supporting this format */
for
(
i_port
=
p_adaptor
[
i_adaptor
].
base_id
;
(
i_port
<
p_adaptor
[
i_adaptor
].
base_id
+
p_adaptor
[
i_adaptor
].
num_ports
)
&&
(
i_selected_port
==
-
1
);
i_port
++
)
{
XvEncodingInfo
*
p_enc
;
int
i_enc
,
i_num_encodings
;
XvAttribute
*
p_attr
;
int
i_attr
,
i_num_attributes
;
if
(
p_formats
[
i_format
].
id
!=
GUID_YUV12_PLANAR
)
if
(
XvGrabPort
(
dpy
,
i_port
,
CurrentTime
)
==
Success
)
{
continue
;
i_selected_port
=
i_port
;
}
}
/* Found a matching port, print a description of this port */
i_selected_port
=
i_port
;
intf_WarnMsg
(
3
,
"vout: XVideoGetPort found adaptor %i port %i"
,
i_adaptor
,
i_port
);
intf_WarnMsg
(
3
,
" image format 0x%x (%4.4s) %s supported"
,
p_formats
[
i_format
].
id
,
(
char
*
)
&
p_formats
[
i_format
].
id
,
(
p_formats
[
i_format
].
format
==
XvPacked
)
?
"packed"
:
"planar"
);
/* If no free port was found, forget it */
if
(
i_selected_port
==
-
1
)
{
continue
;
}
intf_WarnMsg
(
4
,
" encoding list:"
);
/* If we found a port, print information about it */
intf_WarnMsg
(
3
,
"vout: GetXVideoPort found adaptor %i, port %i"
,
i_adaptor
,
i_selected_port
);
intf_WarnMsg
(
3
,
" image format 0x%x (%4.4s) %s supported"
,
p_formats
[
i_format
].
id
,
(
char
*
)
&
p_formats
[
i_format
].
id
,
(
p_formats
[
i_format
].
format
==
XvPacked
)
?
"packed"
:
"planar"
);
if
(
XvQueryEncodings
(
dpy
,
i_port
,
&
i_num_encodings
,
&
p_enc
)
!=
Success
)
{
intf_WarnMsg
(
4
,
" XvQueryEncodings failed"
);
continue
;
}
intf_WarnMsg
(
4
,
" encoding list:"
);
for
(
i_enc
=
0
;
i_enc
<
i_num_encodings
;
i_enc
++
)
{
intf_WarnMsg
(
4
,
" id=%ld, name=%s, size=%ldx%ld,"
" numerator=%d, denominator=%d"
,
p_enc
[
i_enc
].
encoding_id
,
p_enc
[
i_enc
].
name
,
p_enc
[
i_enc
].
width
,
p_enc
[
i_enc
].
height
,
p_enc
[
i_enc
].
rate
.
numerator
,
p_enc
[
i_enc
].
rate
.
denominator
);
}
if
(
XvQueryEncodings
(
dpy
,
i_selected_port
,
&
i_num_encodings
,
&
p_enc
)
!=
Success
)
{
intf_WarnMsg
(
4
,
" XvQueryEncodings failed"
);
continue
;
}
if
(
p_enc
!=
NULL
)
{
XvFreeEncodingInfo
(
p_enc
);
}
for
(
i_enc
=
0
;
i_enc
<
i_num_encodings
;
i_enc
++
)
{
intf_WarnMsg
(
4
,
" id=%ld, name=%s, size=%ldx%ld,"
" numerator=%d, denominator=%d"
,
p_enc
[
i_enc
].
encoding_id
,
p_enc
[
i_enc
].
name
,
p_enc
[
i_enc
].
width
,
p_enc
[
i_enc
].
height
,
p_enc
[
i_enc
].
rate
.
numerator
,
p_enc
[
i_enc
].
rate
.
denominator
);
}
intf_WarnMsg
(
4
,
" attribute list:"
);
p_attr
=
XvQueryPortAttributes
(
dpy
,
i_port
,
&
i_num_attributes
);
for
(
i_attr
=
0
;
i_attr
<
i_num_attributes
;
i_attr
++
)
{
intf_WarnMsg
(
4
,
" name=%s, flags=[%s%s ], min=%i, max=%i"
,
p_attr
[
i_attr
].
name
,
(
p_attr
[
i_attr
].
flags
&
XvGettable
)
?
" get"
:
""
,
(
p_attr
[
i_attr
].
flags
&
XvSettable
)
?
" set"
:
""
,
p_attr
[
i_attr
].
min_value
,
p_attr
[
i_attr
].
max_value
);
}
if
(
p_enc
!=
NULL
)
{
XvFreeEncodingInfo
(
p_enc
);
}
if
(
p_attr
!=
NULL
)
{
XFree
(
p_attr
);
}
intf_WarnMsg
(
4
,
" attribute list:"
);
p_attr
=
XvQueryPortAttributes
(
dpy
,
i_selected_port
,
&
i_num_attributes
);
for
(
i_attr
=
0
;
i_attr
<
i_num_attributes
;
i_attr
++
)
{
intf_WarnMsg
(
4
,
" name=%s, flags=[%s%s ], min=%i, max=%i"
,
p_attr
[
i_attr
].
name
,
(
p_attr
[
i_attr
].
flags
&
XvGettable
)
?
" get"
:
""
,
(
p_attr
[
i_attr
].
flags
&
XvSettable
)
?
" set"
:
""
,
p_attr
[
i_attr
].
min_value
,
p_attr
[
i_attr
].
max_value
);
}
if
(
p_
formats
!=
NULL
)
if
(
p_
attr
!=
NULL
)
{
XFree
(
p_
formats
);
XFree
(
p_
attr
);
}
}
if
(
p_formats
!=
NULL
)
{
XFree
(
p_formats
);
}
}
if
(
i_num_adaptors
>
0
)
...
...
@@ -1319,12 +1320,12 @@ static int XVideoGetPort( Display *dpy )
{
if
(
i_requested_adaptor
==
-
1
)
{
intf_WarnMsg
(
3
,
"vout: no
XVideo port found supporting YU
V12"
);
intf_WarnMsg
(
3
,
"vout: no
free XVideo port found for Y
V12"
);
}
else
{
intf_WarnMsg
(
3
,
"vout: XVideo adaptor %i does not
support YUV12"
,
i_requested_adaptor
);
intf_WarnMsg
(
3
,
"vout: XVideo adaptor %i does not
have a free "
"XVideo port for YV12"
,
i_requested_adaptor
);
}
}
...
...
src/interface/main.c
View file @
a78ebd14
...
...
@@ -4,7 +4,7 @@
* and spawn threads.
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: main.c,v 1.132.2.
1 2001/12/10 04:54:17
sam Exp $
* $Id: main.c,v 1.132.2.
2 2001/12/17 03:48:12
sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -150,16 +150,6 @@
#define SHORT_HELP 1
#define LONG_HELP 2
/* Needed for x86 CPU capabilities detection */
#define cpuid( a ) \
asm volatile ( "cpuid" \
: "=a" ( i_eax ), \
"=b" ( i_ebx ), \
"=c" ( i_ecx ), \
"=d" ( i_edx ) \
: "a" ( a ) \
: "cc" );
/* Long options */
static
const
struct
option
longopts
[]
=
{
...
...
@@ -1129,15 +1119,7 @@ static int CPUCapabilities( void )
{
volatile
int
i_capabilities
=
CPU_CAPABILITY_NONE
;
#if defined( SYS_BEOS )
i_capabilities
|=
CPU_CAPABILITY_FPU
|
CPU_CAPABILITY_486
|
CPU_CAPABILITY_586
|
CPU_CAPABILITY_MMX
;
return
(
i_capabilities
);
#elif defined( SYS_DARWIN )
#if defined( SYS_DARWIN )
struct
host_basic_info
hi
;
kern_return_t
ret
;
host_name_port_t
host
;
...
...
@@ -1173,27 +1155,43 @@ static int CPUCapabilities( void )
volatile
unsigned
int
i_eax
,
i_ebx
,
i_ecx
,
i_edx
;
volatile
boolean_t
b_amd
;
/* Needed for x86 CPU capabilities detection */
# define cpuid( a ) \
asm volatile ( "pushl %%ebx\n\t" \
"cpuid\n\t" \
"movl %%ebx,%1\n\t" \
"popl %%ebx\n\t" \
: "=a" ( i_eax ), \
"=r" ( i_ebx ), \
"=c" ( i_ecx ), \
"=d" ( i_edx ) \
: "a" ( a ) \
: "cc" );
i_capabilities
|=
CPU_CAPABILITY_FPU
;
signal
(
SIGILL
,
InstructionSignalHandler
);
/* test for a 486 CPU */
asm
volatile
(
"pushfl
\n\t
"
asm
volatile
(
"pushl %%ebx
\n\t
"
"pushfl
\n\t
"
"popl %%eax
\n\t
"
"movl %%eax, %%ebx
\n\t
"
"xorl $0x200000, %%eax
\n\t
"
"pushl %%eax
\n\t
"
"popfl
\n\t
"
"pushfl
\n\t
"
"popl %%eax"
"popl %%eax
\n\t
"
"movl %%ebx,%1
\n\t
"
"popl %%ebx
\n\t
"
:
"=a"
(
i_eax
),
"=
b
"
(
i_ebx
)
"=
r
"
(
i_ebx
)
:
:
"cc"
);
if
(
i_eax
==
i_ebx
)
{
signal
(
SIGILL
,
NULL
);
signal
(
SIGILL
,
NULL
);
return
(
i_capabilities
);
}
...
...
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