* Added libmodplug headers

git-svn-id: trunk@4692 -
This commit is contained in:
ivost 2006-09-23 12:26:37 +00:00
parent 7aa88d5642
commit b6450c80c0
5 changed files with 1967 additions and 2 deletions

3
.gitattributes vendored
View File

@ -2951,6 +2951,9 @@ packages/extra/mad/mad.pas svneol=native#text/plain
packages/extra/md4/Makefile svneol=native#text/plain
packages/extra/md4/Makefile.fpc svneol=native#text/plain
packages/extra/md4/md4.pas svneol=native#text/plain
packages/extra/modplug/Makefile svneol=native#text/plain
packages/extra/modplug/Makefile.fpc svneol=native#text/plain
packages/extra/modplug/modplug.pas svneol=native#text/plain
packages/extra/ncurses/Makefile svneol=native#text/plain
packages/extra/ncurses/Makefile.fpc svneol=native#text/plain
packages/extra/ncurses/db_demo.pp svneol=native#text/plain

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
#
# Makefile.fpc for libmodplug bindings
#
[package]
name=modplug
version=2.0.0
[target]
units=modplug
[require]
[install]
fpcpackage=y
[default]
fpcdir=../../..

View File

@ -0,0 +1,116 @@
{
Translation of the libmodplug headers for FreePascal
Copyright (C) 2006 by Ivo Steinmann
}
unit modplug;
{$mode objfpc}
{$MINENUMSIZE 4}
interface
uses
ctypes;
{$IFDEF WINDOWS}
{$DEFINE DYNLINK}
{$ENDIF}
{$IFDEF DYNLINK}
const
{$IF Defined(WINDOWS)}
modpluglib = 'libmodplug.dll';
{$ELSEIF Defined(UNIX)}
modpluglib = 'libmodplug.so';
{$ELSE}
{$MESSAGE ERROR 'DYNLINK not supported'}
{$IFEND}
{$ELSE}
{$LINKLIB modplug}
{$ENDIF}
(*
* This source code is public domain.
*
* Authors: Kenton Varda <temporal@gauge3d.org> (C interface wrapper)
*)
struct _ModPlugFile;
typedef struct _ModPlugFile ModPlugFile;
(* Load a mod file. [data] should point to a block of memory containing the complete
* file, and [size] should be the size of that block.
* Return the loaded mod file on success, or NULL on failure. *)
ModPlugFile* ModPlug_Load(const void* data, int size);
(* Unload a mod file. *)
void ModPlug_Unload(ModPlugFile* file);
(* Read sample data into the buffer. Returns the number of bytes read. If the end
* of the mod has been reached, zero is returned. *)
int ModPlug_Read(ModPlugFile* file, void* buffer, int size);
(* Get the name of the mod. The returned buffer is stored within the ModPlugFile
* structure and will remain valid until you unload the file. *)
const char* ModPlug_GetName(ModPlugFile* file);
(* Get the length of the mod, in milliseconds. Note that this result is not always
* accurate, especially in the case of mods with loops. *)
int ModPlug_GetLength(ModPlugFile* file);
(* Seek to a particular position in the song. Note that seeking and MODs don't mix very
* well. Some mods will be missing instruments for a short time after a seek, as ModPlug
* does not scan the sequence backwards to find out which instruments were supposed to be
* playing at that time. (Doing so would be difficult and not very reliable.) Also,
* note that seeking is not very exact in some mods -- especially those for which
* ModPlug_GetLength() does not report the full length. *)
void ModPlug_Seek(ModPlugFile* file, int millisecond);
enum _ModPlug_Flags
{
MODPLUG_ENABLE_OVERSAMPLING = 1 << 0, (* Enable oversampling (*highly* recommended) *)
MODPLUG_ENABLE_NOISE_REDUCTION = 1 << 1, (* Enable noise reduction *)
MODPLUG_ENABLE_REVERB = 1 << 2, (* Enable reverb *)
MODPLUG_ENABLE_MEGABASS = 1 << 3, (* Enable megabass *)
MODPLUG_ENABLE_SURROUND = 1 << 4 (* Enable surround sound. *)
};
enum _ModPlug_ResamplingMode
{
MODPLUG_RESAMPLE_NEAREST = 0, (* No interpolation (very fast, extremely bad sound quality) *)
MODPLUG_RESAMPLE_LINEAR = 1, (* Linear interpolation (fast, good quality) *)
MODPLUG_RESAMPLE_SPLINE = 2, (* Cubic spline interpolation (high quality) *)
MODPLUG_RESAMPLE_FIR = 3 (* 8-tap fir filter (extremely high quality) *)
};
typedef struct _ModPlug_Settings
{
int mFlags; (* One or more of the MODPLUG_ENABLE_* flags above, bitwise-OR'ed *)
(* Note that ModPlug always decodes sound at 44100kHz, 32 bit, stereo and then
* down-mixes to the settings you choose. *)
int mChannels; (* Number of channels - 1 for mono or 2 for stereo *)
int mBits; (* Bits per sample - 8, 16, or 32 *)
int mFrequency; (* Sampling rate - 11025, 22050, or 44100 *)
int mResamplingMode; (* One of MODPLUG_RESAMPLE_*, above *)
int mReverbDepth; (* Reverb level 0(quiet)-100(loud) *)
int mReverbDelay; (* Reverb delay in ms, usually 40-200ms *)
int mBassAmount; (* XBass level 0(quiet)-100(loud) *)
int mBassRange; (* XBass cutoff in Hz 10-100 *)
int mSurroundDepth; (* Surround level 0(quiet)-100(heavy) *)
int mSurroundDelay; (* Surround delay in ms, usually 5-40ms *)
int mLoopCount; (* Number of times to loop. Zero prevents looping.
-1 loops forever. *)
} ModPlug_Settings;
(* Get and set the mod decoder settings. All options, except for channels, bits-per-sample,
* sampling rate, and loop count, will take effect immediately. Those options which don't
* take effect immediately will take effect the next time you load a mod. *)
void ModPlug_GetSettings(ModPlug_Settings* settings);
void ModPlug_SetSettings(const ModPlug_Settings* settings);}
implementation
end.

View File

@ -182,8 +182,8 @@ begin
Write('Enter: '); ReadLn(codec);
Write('File: '); ReadLn(Filename);}
codec := 3;
Filename := 'test.ac3';
codec := 2;
Filename := 'test.ogg';
// load file