Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Stefan Strogin
flac
Commits
edade2ce
Commit
edade2ce
authored
May 23, 2001
by
Josh Coalson
Browse files
initial import
parent
8d1676c0
Changes
4
Hide whitespace changes
Inline
Side-by-side
include/FLAC/config.h
0 → 100644
View file @
edade2ce
/* libFLAC - Free Lossless Audio Codec library
* Copyright (C) 2001 Josh Coalson
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef FLAC__CONFIG_H
#define FLAC__CONFIG_H
/* define the correctly-capitalized symbols from the autoconf-crippled ones */
#ifdef FLaC__ALIGN_MALLOC_DATA
#define FLAC__ALIGN_MALLOC_DATA
#endif
#ifdef FLaC__NO_ASM
#define FLAC__NO_ASM
#endif
#ifdef FLaC__HAS_NASM
#define FLAC__HAS_NASM
#endif
#ifdef FLaC__HAS_XMMS
#define FLAC__HAS_XMMS
#endif
#ifdef FLaC__CPU_IA32
#define FLAC__CPU_IA32
#endif
#ifdef FLaC__CPU_PPC
#define FLAC__CPU_PPC
#endif
#ifdef FLaC__CPU_SPARC
#define FLAC__CPU_SPARC
#endif
#endif
src/libFLAC/cpu.c
0 → 100644
View file @
edade2ce
/* libFLAC - Free Lossless Audio Codec library
* Copyright (C) 2001 Josh Coalson
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include
"FLAC/config.h"
#include
"private/cpu.h"
#include
<stdlib.h>
#include
<stdio.h>
const
unsigned
FLAC__CPUINFO_IA32_CPUID_CMOV
=
0x00008000
;
const
unsigned
FLAC__CPUINFO_IA32_CPUID_MMX
=
0x00800000
;
const
unsigned
FLAC__CPUINFO_IA32_CPUID_FXSR
=
0x01000000
;
const
unsigned
FLAC__CPUINFO_IA32_CPUID_SSE
=
0x02000000
;
const
unsigned
FLAC__CPUINFO_IA32_CPUID_SSE2
=
0x04000000
;
void
FLAC__cpu_info
(
FLAC__CPUInfo
*
info
)
{
#ifdef FLAC__CPU_IA32
fprintf
(
stderr
,
"@@@ FLAC__CPU_IA32 defined
\n
"
);
info
->
type
=
FLAC__CPUINFO_TYPE_IA32
;
#if !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
fprintf
(
stderr
,
"@@@ !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
\n
"
);
info
->
use_asm
=
true
;
{
unsigned
cpuid
=
FLAC__cpu_info_asm_i386
();
info
->
data
.
ia32
.
cmov
=
(
cpuid
&
FLAC__CPUINFO_IA32_CPUID_CMOV
)
?
true
:
false
;
info
->
data
.
ia32
.
mmx
=
(
cpuid
&
FLAC__CPUINFO_IA32_CPUID_MMX
)
?
true
:
false
;
info
->
data
.
ia32
.
fxsr
=
(
cpuid
&
FLAC__CPUINFO_IA32_CPUID_FXSR
)
?
true
:
false
;
info
->
data
.
ia32
.
sse
=
(
cpuid
&
FLAC__CPUINFO_IA32_CPUID_SSE
)
?
true
:
false
;
info
->
data
.
ia32
.
sse2
=
(
cpuid
&
FLAC__CPUINFO_IA32_CPUID_SSE2
)
?
true
:
false
;
fprintf
(
stderr
,
"@@@
\t
cpuid=%08X
\n
"
,
cpuid
);
fprintf
(
stderr
,
"@@@
\t
cmov=%u
\n
"
,
info
->
data
.
ia32
.
cmov
);
fprintf
(
stderr
,
"@@@
\t
mmx=%u
\n
"
,
info
->
data
.
ia32
.
mmx
);
fprintf
(
stderr
,
"@@@
\t
fxsr=%u
\n
"
,
info
->
data
.
ia32
.
fxsr
);
fprintf
(
stderr
,
"@@@
\t
sse=%u
\n
"
,
info
->
data
.
ia32
.
sse
);
fprintf
(
stderr
,
"@@@
\t
sse2=%u
\n
"
,
info
->
data
.
ia32
.
sse2
);
}
#else
fprintf
(
stderr
,
"@@@ not: !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
\n
"
);
info
->
use_asm
=
true
;
info
->
use_asm
=
false
;
#endif
#else
fprintf
(
stderr
,
"@@@ FLAC__CPU_UNKNOWN
\n
"
);
info
->
type
=
FLAC__CPUINFO_TYPE_UNKNOWN
;
info
->
use_asm
=
false
;
#endif
}
src/libFLAC/i386/cpu_asm.nasm
0 → 100644
View file @
edade2ce
; libFLAC - Free Lossless Audio Codec library
; Copyright (C) 2001 Josh Coalson
;
; This library is free software; you can redistribute it and/or
; modify it under the terms of the GNU Library General Public
; License as published by the Free Software Foundation; either
; version 2 of the License, or (at your option) any later version.
;
; This library is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; Library General Public License for more details.
;
; You should have received a copy of the GNU Library General Public
; License along with this library; if not, write to the
; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
; Boston, MA 02111-1307, USA.
%include "nasm.h"
data_section
cglobal FLAC__cpu_info_asm_i386
code_section
; **********************************************************************
;
FLAC__cpu_info_asm_i386:
push ebx
pushfd
pop eax
mov edx, eax
xor eax, 00200000h
push eax
popfd
pushfd
pop eax
cmp eax, edx
jz .no_cpuid
mov eax, 1
cpuid
mov eax, edx
jmp short .end
.no_cpuid:
xor eax, eax ; return 0
.end:
pop ebx
ret
end
src/libFLAC/include/private/cpu.h
0 → 100644
View file @
edade2ce
/* libFLAC - Free Lossless Audio Codec library
* Copyright (C) 2001 Josh Coalson
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef FLAC__PRIVATE__CPU_H
#define FLAC__PRIVATE__CPU_H
#include
"FLAC/config.h"
#include
"FLAC/ordinals.h"
typedef
enum
{
FLAC__CPUINFO_TYPE_IA32
,
FLAC__CPUINFO_TYPE_UNKNOWN
}
FLAC__CPUInfo_Type
;
typedef
struct
{
bool
cmov
;
bool
mmx
;
bool
fxsr
;
bool
sse
;
bool
sse2
;
}
FLAC__CPUInfo_IA32
;
extern
const
unsigned
FLAC__CPUINFO_IA32_CPUID_CMOV
;
extern
const
unsigned
FLAC__CPUINFO_IA32_CPUID_MMX
;
extern
const
unsigned
FLAC__CPUINFO_IA32_CPUID_FXSR
;
extern
const
unsigned
FLAC__CPUINFO_IA32_CPUID_SSE
;
extern
const
unsigned
FLAC__CPUINFO_IA32_CPUID_SSE2
;
typedef
struct
{
bool
use_asm
;
FLAC__CPUInfo_Type
type
;
union
{
FLAC__CPUInfo_IA32
ia32
;
}
data
;
}
FLAC__CPUInfo
;
void
FLAC__cpu_info
(
FLAC__CPUInfo
*
info
);
#ifndef FLAC__NO_ASM
#ifdef FLAC__CPU_IA32
#ifdef FLAC__HAS_NASM
unsigned
FLAC__cpu_info_asm_i386
();
#endif
#endif
#endif
#endif
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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