hey,

using alsa 1.0.0pre1 

picked up a Hercules DigiFire 7.1 card today. CS46xx based.

i only have an optical s/pdif cable in the card going to my amp

normal stuff works fine (using the oss compat module). i get
nice clean sound. but what i really want to do is play dvds
w/ ogle and get the surround sound single to my amp.

but ogle fails to configure the device correctly. the ogle
code is at the bottom of the email. it fails on the call to
"snd_ctl_elem_write". the snd_pcm_info_get_device(info) and
snd_pcm_info_get_subdevice(info) are returning the correct
values (device 2, sub device 0). just can't seem to update
the IEC958 control.

here is the output of iecset:

[EMAIL PROTECTED] alsa-utils-1.0.0pre1]# ./iecset/iecset
Mode: consumer
Data: audio
Rate: 48000 Hz
Copyright: protected
Emphasis: none
Category: PCM coder
Original: original
Clock: 1000 ppm

i then ran iecset -x and copied that output into the config
of ogle. still no go.

what am i doing wrong?

thanks

henri

----------------


   spdif.status[0] = IEC958_AES0_NONAUDIO | IEC958_AES0_CON_EMPHASIS_NONE;
    spdif.status[1] = IEC958_AES1_CON_ORIGINAL | IEC958_AES1_CON_PCM_CODER;
    spdif.status[2] = 0;
    spdif.status[3] = IEC958_AES3_CON_FS_48000;

    snd_ctl_elem_value_alloca(&ctl);
    snd_ctl_elem_value_set_interface(ctl, SND_CTL_ELEM_IFACE_PCM);
    snd_ctl_elem_value_set_device(ctl, snd_pcm_info_get_device(info));
    snd_ctl_elem_value_set_subdevice(ctl, snd_pcm_info_get_subdevice(info));
    snd_ctl_elem_value_set_name(ctl,
                                SND_CTL_NAME_IEC958("", PLAYBACK, PCM_STREAM));
    snd_ctl_elem_value_set_iec958(ctl, &spdif);

    ctl_card = snd_pcm_info_get_card(info);
    if(ctl_card < 0) {
      ERROR("Unable to setup the IEC958 (S/PDIF) interface - PCM has no assigned 
card\n");
      goto __diga_end;
    }

    sprintf(ctl_name, "hw:%d", ctl_card);

    if((err = snd_ctl_open(&ctl_handle, ctl_name, 0)) < 0) {
      ERROR("Unable to open the control interface '%s': %s\n",
            ctl_name, snd_strerror(err));
      goto __diga_end;
    }

    if((err = snd_ctl_elem_write(ctl_handle, ctl)) < 0) {
      ERROR("Unable to update the IEC958 control: %s\n",
            snd_strerror(err));
      goto __diga_end;
      //Shouldn't ctl_handle be closed here?
    }




-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to