Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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 <stddef.h>
  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