mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
Various fixes to ld10k1
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().
This commit is contained in:
parent
37fccff016
commit
700edf08b4
8 changed files with 48 additions and 25 deletions
|
|
@ -1,4 +1,5 @@
|
|||
Peter Zubaj <pzad@pobox.sk>
|
||||
|
||||
Contributors:
|
||||
Mikael Magnusson <mikma@users.sourceforge.net>
|
||||
Mikael Magnusson <mikma@users.sourceforge.net>
|
||||
Tim <terminator356@users.sourceforge.net>
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -30,6 +30,10 @@
|
|||
#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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue