Mercurial > hg > audiodb
comparison audioDB.cpp @ 385:4e68f7d4d524 api-inversion
Invert audiodb_create() / audioDB::create().
(This was straightforward, because audioDB::create() doesn't depend on
having any kind of state or reading it from disk, except of course for
the locks. New global functions acquire_lock() and divest_lock() [silly
name, I know], to be used both within audioDB::get_lock() and
audioDB::release_lock() and within (inverted) API functions directly.
Eventually the audioDB:: versions will be able to go away entirely)
author | mas01cr |
---|---|
date | Fri, 21 Nov 2008 15:22:15 +0000 |
parents | 8425d05eda33 |
children | f6aa8c5cd865 |
comparison
equal
deleted
inserted
replaced
384:25a4d1799c08 | 385:4e68f7d4d524 |
---|---|
1 #include "audioDB.h" | 1 #include "audioDB.h" |
2 extern "C" { | |
3 #include "audioDB_API.h" | |
4 } | |
2 | 5 |
3 LSH* SERVER_LSH_INDEX_SINGLETON; | 6 LSH* SERVER_LSH_INDEX_SINGLETON; |
4 char* SERVER_ADB_ROOT; | 7 char* SERVER_ADB_ROOT; |
5 char* SERVER_ADB_FEATURE_ROOT; | 8 char* SERVER_ADB_FEATURE_ROOT; |
6 | 9 |
838 } | 841 } |
839 dbH->flags |= O2_FLAG_POWER; | 842 dbH->flags |= O2_FLAG_POWER; |
840 memcpy(db, dbH, O2_HEADERSIZE); | 843 memcpy(db, dbH, O2_HEADERSIZE); |
841 } | 844 } |
842 | 845 |
846 void audioDB::create(const char *dbName) { | |
847 if(!audiodb_create(dbName, datasize, ntracks, datadim)) { | |
848 error("Failed to create database file", dbName, ""); | |
849 } | |
850 } | |
851 | |
843 // Unit norm block of features | 852 // Unit norm block of features |
844 | 853 |
845 /* FIXME: in fact this does not unit norm a block of features, it just | 854 /* FIXME: in fact this does not unit norm a block of features, it just |
846 records the L2 norms somewhere. unitNorm() does in fact unit norm | 855 records the L2 norms somewhere. unitNorm() does in fact unit norm |
847 a block of features. */ | 856 a block of features. */ |
902 extern "C" { | 911 extern "C" { |
903 | 912 |
904 /* for API questions contact | 913 /* for API questions contact |
905 * Christophe Rhodes c.rhodes@gold.ac.uk | 914 * Christophe Rhodes c.rhodes@gold.ac.uk |
906 * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */ | 915 * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */ |
907 | |
908 #include "audioDB_API.h" | |
909 | |
910 adb_ptr audiodb_create(const char *path, unsigned datasize, unsigned ntracks, unsigned datadim) { | |
911 const char *argv[12]; | |
912 int argvctr=0; | |
913 char tempstr1[200]; | |
914 char tempstr2[200]; | |
915 char tempstr3[200]; | |
916 int apierror=0; | |
917 | |
918 | |
919 argv[argvctr++] = "audioDB"; | |
920 argv[argvctr++] = "--NEW"; | |
921 argv[argvctr++] = "-d"; | |
922 argv[argvctr++] = path; | |
923 | |
924 if (datasize >0){ | |
925 argv[argvctr++]="--datasize"; | |
926 snprintf(tempstr1,sizeof(tempstr1),"%u",datasize); | |
927 argv[argvctr++]=tempstr1; | |
928 } | |
929 | |
930 if (ntracks >0){ | |
931 argv[argvctr++]="--ntracks"; | |
932 snprintf(tempstr2,sizeof(tempstr2),"%u",ntracks); | |
933 argv[argvctr++]=tempstr2; | |
934 } | |
935 | |
936 if (datadim > 0){ | |
937 argv[argvctr++]="--datadim"; | |
938 snprintf(tempstr3,sizeof(tempstr3),"%u",datadim); | |
939 argv[argvctr++]=tempstr3; | |
940 } | |
941 | |
942 argv[argvctr]='\0'; | |
943 | |
944 audioDB::audioDB(argvctr, argv, &apierror); | |
945 | |
946 if (!apierror){ | |
947 return audiodb_open(path); | |
948 } | |
949 | |
950 /* database exists, so fail and pass NULL */ | |
951 return NULL; | |
952 } | |
953 | |
954 | |
955 | 916 |
956 int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins) { | 917 int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins) { |
957 const char *argv[15]; | 918 const char *argv[15]; |
958 int argvctr=0; | 919 int argvctr=0; |
959 int apierror=0; | 920 int apierror=0; |