Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8035 hidnplayr 1
// FLAC decoder for KolibriOS in native shared COFF library format.
2
 
3
// https://github.com/mackron/dr_libs/blob/master/dr_flac.h
4
 
5
// Some functions to allow us building without any external libs
6
 
7
#include 
8
 
9
void* memset(void *base, int val, size_t len)
10
{
11
   int i;
12
   for (i=0; i < len; ++i) ((char *) base)[i] = val;
13
}
14
 
15
int memcmp(const void *p1, const void *p2, size_t len)
16
{
17
   unsigned char *q1 = (unsigned char *) p1;
18
   unsigned char *q2 = (unsigned char *) p2;
19
   int i;
20
   for (i=0; i < len; ++i)
21
      if (q1[i] < q2[i]) return -1;
22
      else if (q1[i] > q2[i]) return 1;
23
   return 0;
24
}
25
 
26
void* memcpy(void *dest, const void *src, size_t num)
27
{
28
   int i;
29
   for (i=0; i < num; ++i)
30
      ((char *)dest)[i] = ((char *) src)[i];
31
}
32
 
33
// For building with mingw compiler
34
__attribute__((externally_visible)) void __chkstk_ms(){
35
	return;
36
}
37
 
38
void* malloc(size_t size) {
39
	asm("int3");
40
	return 0;
41
}
42
 
43
void* realloc(void *ptr, size_t size) {
44
	asm("int3");
45
	return 0;
46
}
47
 
48
void free(void *ptr) {
49
	asm("int3");
50
	return;
51
}
52
 
53
#define DRFLAC_ASSERT(expr)					((void) (0))
54
#define DRFLAC_MALLOC(sz)                   malloc((sz))
55
#define DRFLAC_REALLOC(p, sz)               realloc((p), (sz))
56
#define DRFLAC_FREE(p)                      free((p))
57
 
58
// Actual dr_flac related stuff starts here
59
 
60
#define DRFLAC_IMPLEMENTATION
61
 
62
#define DR_FLAC_NO_STDIO
63
//#define DR_FLAC_NO_OGG
64
//#define DR_FLAC_BUFFER_SIZE 4096
65
//#define DR_FLAC_NO_CRC
66
#define DR_FLAC_NO_SIMD
67
 
68
#include "dr_flac.h"
69
 
70
// KolibriOS type EXPORTS header
71
 
72
int __stdcall libInit(){
73
      return 1;
74
}
75
 
76
typedef struct{
77
  char *name;
78
  void *f;
79
}export_t;
80
 
81
char szLibInit[]   			="lib_init";
82
char szVersion[]			="version";
83
char szClose[]   			="close";
84
char szOpen[]   			="open";
85
char szOpenRelaxed[]   		="open_relaxed";
86
char szReadPCMS16[]			="read_pcm_frames_s16";
87
 
88
 
89
__attribute__((externally_visible))  export_t EXPORTS[] __asm__("EXPORTS") =
90
  {
91
	{ szLibInit,		libInit },
92
	{ szVersion,		(void*)0x00010001 },
93
	{ szClose,			drflac_close },
94
	{ szOpen,			drflac_open },
95
    { szOpenRelaxed,	drflac_open_relaxed },
96
	{ szReadPCMS16,		drflac_read_pcm_frames_s16},
97
 
98
    { NULL, NULL },
99
  };
100
 
101
// End of file