]> git.alsa-project.org Git - alsa-tools.git/commitdiff
Various fixes to ld10k1
authorTakashi Iwai <tiwai@suse.de>
Fri, 3 Jun 2005 12:30:46 +0000 (12:30 +0000)
committerTakashi Iwai <tiwai@suse.de>
Fri, 3 Jun 2005 12:30:46 +0000 (12:30 +0000)
Various fixes by Tim <terminator356@users.sourceforge.net>:

- Now loads as10k1 bin patch files from ALSA alsa-tools AND from EMU1roject emu-utils.
- Fixed init_live bug.
- Fixed bug in liblo10k1.c liblo10k1_patch_get().

ld10k1/AUTHORS
ld10k1/NEWS
ld10k1/configure.in
ld10k1/include/version.h
ld10k1/src/ld10k1_fnc.c
ld10k1/src/liblo10k1.c
ld10k1/src/liblo10k1ef.c
ld10k1/src/lo10k1.c

index 468a355372a78c317a54b631be316230a332d88c..6ae612646f8836b9862266c872ba912b6573e09f 100644 (file)
@@ -1,4 +1,5 @@
 Peter Zubaj <pzad@pobox.sk>
 
 Contributors:
-Mikael Magnusson <mikma@users.sourceforge.net>
\ No newline at end of file
+Mikael Magnusson <mikma@users.sourceforge.net>
+Tim <terminator356@users.sourceforge.net>
\ No newline at end of file
index dd95883568affe938b57c2c262bbf9c70488a47b..3b1470d973c7f36d7c1f1a47964bdc4919f15a27 100644 (file)
@@ -1,3 +1,8 @@
+0.1.8p1
+       By Tim...
+       Now loads as10k1 bin patch files from ALSA alsa-tools AND from EMU10K1 project emu-utils.
+       Fixed init_live bug. 
+       Fixed bug in liblo10k1.c liblo10k1_patch_get().
 0.1.8
        Sync with ALSA 1.0.8rc1
 0.1.7test4
index 697540d33d8d89d12b1cc2e8e0db0f6464d27949..f1fc8d0a1929bfad0774786c13a99ba4ea824d81 100644 (file)
@@ -1,5 +1,5 @@
 AC_INIT(src/ld10k1.c)
-AM_INIT_AUTOMAKE(ld10k1, 0.1.8)
+AM_INIT_AUTOMAKE(ld10k1, 0.1.8p1)
 
 AC_CONFIG_HEADERS(config.h)
 AC_PROG_CC
index 1ab5f70de6f30bd7aa703b7351aeb99577596e88..be315c441d0a7ba36bb4af0bf2ca2b6df4d90a6d 100644 (file)
@@ -10,5 +10,5 @@
                                         (LD10K1_LIB_MINOR<<8)|\
                                         LD10K1_LIB_SUBMINOR)
 /** library version (string) */
-#define LD10K1_LIB_VERSION_STR "0.1.8"
+#define LD10K1_LIB_VERSION_STR "0.1.8p1"
 
index 4bc1f555bbebfd8ab17ff834e7902dddcec985f9..bf4c28a4a68040d32c5d667afb31a4b46ccfc898 100644 (file)
@@ -209,7 +209,7 @@ int ld10k1_dsp_mgr_init(ld10k1_dsp_mgr_t *dsp_mgr)
                ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x0f].name), "OUT_Rear_Right");
                ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x10].name), "OUT_AC97_Front_Left");
                ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x11].name), "OUT_AC97_Front_Right");
-               ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x16].name), "OUT_ADC_Caputre_Left");
+               ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x16].name), "OUT_ADC_Capture_Left");
                ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x17].name), "OUT_ADC_Capture_Right");
                ld10k1_dsp_mgr_name_new(&(dsp_mgr->outs[0x18].name), "OUT_Mic_Capture");
        } else {
index c8e0f9480fc5390ba6fff7fb1ac78d559ee05ad6..88618764befef20b6505cf841c6e6a06e367ab01 100644 (file)
@@ -856,19 +856,6 @@ int liblo10k1_patch_get(liblo10k1_connection_t *conn, int patch_num, liblo10k1_d
                        goto err_nomem;
        }
 
-       /* ctls */
-       if (patch->ctl_count) {
-               if ((err = receive_response(*conn, &opr, &sizer)) < 0)
-                       return err;
-
-               if (opr != FNC_CONTINUE || (unsigned int)sizer != patch->ctl_count * sizeof(liblo10k1_dsp_ctl_t))
-                       goto err_protocol;
-
-               patch->ctl = (liblo10k1_dsp_ctl_t *)receive_msg_data_malloc(*conn, sizer);
-               if (!patch->ctl)
-                       goto err_nomem;
-       }
-
        /* tram grp */
        if (patch->tram_count) {
                if ((err = receive_response(*conn, &opr, &sizer)) < 0)
@@ -895,6 +882,19 @@ int liblo10k1_patch_get(liblo10k1_connection_t *conn, int patch_num, liblo10k1_d
                        goto err_nomem;
        }
 
+       /* ctls */
+       if (patch->ctl_count) {
+               if ((err = receive_response(*conn, &opr, &sizer)) < 0)
+                       return err;
+
+               if (opr != FNC_CONTINUE || (unsigned int)sizer != patch->ctl_count * sizeof(liblo10k1_dsp_ctl_t))
+                       goto err_protocol;
+
+               patch->ctl = (liblo10k1_dsp_ctl_t *)receive_msg_data_malloc(*conn, sizer);
+               if (!patch->ctl)
+                       goto err_nomem;
+       }
+
        /* instr */
        if (patch->instr_count) {
                if ((err = receive_response(*conn, &opr, &sizer)) < 0)
index 0a3cfdb1d2be764f6628e8c542a7362766f129d5..c01ac580c345dd1370a3a05cbfd00dff78337560 100644 (file)
 #include "liblo10k1.h"
 #include "liblo10k1ef.h"
 
+#define AS10K1_FILE_SIGNATURE_ALSA "EMU10K1 FX8010 1"
+#define AS10K1_FILE_SIGNATURE_EMU "emu10k1-dsp-file"
+#define AS10K1_FILE_FORMAT_VERSION_EMU 1
+
 liblo10k1_emu_patch_t *liblo10k1_emu_new_patch()
 {
        liblo10k1_emu_patch_t *tmp = (liblo10k1_emu_patch_t *)malloc(sizeof(liblo10k1_emu_patch_t));
@@ -340,10 +344,18 @@ int liblo10k1_emu_load_patch(char *file_name, liblo10k1_emu_patch_t **p)
        } else
                fclose(patch_file);
 
-       /* signature check */
-       if (strncmp(patch_data, "EMU10K1 FX8010 1", 16) != 0) {
-               en = LD10K1_EF_ERR_SIGNATURE;
-               goto err;
+       int file_sig = 0;
+               
+       /* signature checks - two kinds of as10k1 files, one from alsa-tools, other from emu-tools. */
+       if(strncmp(patch_data, AS10K1_FILE_SIGNATURE_ALSA, 16) != 0)
+       {
+         if((strncmp(patch_data, AS10K1_FILE_SIGNATURE_EMU, 16) == 0) && (*((unsigned short *)&patch_data[17]) == AS10K1_FILE_FORMAT_VERSION_EMU))
+           file_sig = 3;
+               else    
+               {
+           en = LD10K1_EF_ERR_SIGNATURE;
+           goto err;
+               }
        }
        
        new_patch = liblo10k1_emu_new_patch();
@@ -353,15 +365,14 @@ int liblo10k1_emu_load_patch(char *file_name, liblo10k1_emu_patch_t **p)
        }
        
        /* next patch name */
-       strncpy(new_patch->patch_name, &(patch_data[16]), 31);
+       strncpy(new_patch->patch_name, &(patch_data[16 + file_sig]), 31);
        new_patch->patch_name[31] = '\0';
-
        /* registers */
-       file_pos = 32+16;
+       file_pos = 32+16 + file_sig; 
        
        /* in count */
        if ((en = read_byte(patch_data, file_size, &file_pos, &byte_tmp)) < 0)
-               goto err;
+                 goto err;
        
        if (byte_tmp >= 32) {
                en = LD10K1_EF_ERR_FORMAT;
@@ -501,6 +512,9 @@ int liblo10k1_emu_load_patch(char *file_name, liblo10k1_emu_patch_t **p)
        if ((en = read_ushort(patch_data, file_size, &file_pos, &ushort_tmp)) < 0)
                goto err;
                
+       if(file_sig)
+         ushort_tmp >>= 1;
+               
        if ((en = liblo10k1_emu_patch_set_instr_count(new_patch, ushort_tmp)) < 0)
                goto err;
        
index a52945dd3b82a8dd188f41854f7edf9bd088469c..3d04405f41afbdb19ff9ce1108045ab0806d3cd9 100644 (file)
@@ -495,7 +495,10 @@ static int transfer_patch(int udin, char *ctrl_opt, liblo10k1_emu_patch_t *ep, l
        }
        
        if (liblo10k1_emu_transform_patch(ep,  tctl, ctrl_to_concate_count, &np) < 0)
+       {
+               error("error on liblo10k1_emu_transform_patch");
                return 1;
+       }
        
        free(tctl);