MAN301 external clock issues (Re: [PATCH] ALSA: dice: add stream format parameters for Weiss devices)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Takashi,

I'm encountering a strange issue when working with our MAN301 device and
external clock sync. I am currently using our kernel-side AV/C code to
switch between clock sources[1].

When I switch to an external clock source, the user-space ALSA code is not
able to change the clock rate anymore. This means that I cannot switch to
the external clock rate that the DICE is currently locked onto.

Here is a practical example / steps to reproduce:

1. Set the clock source to internal and the clock rate to an arbitrary
   value (e.g. 44100) from the user-space. The relevant sections of
   /proc/asound/card0/firewire/dice will then look like this:

global:
  owner: ffc0:000100000000
  notification: 00000040
  nick name: Weiss MAN301
  clock select: internal 44100
  enable: 0
  status: locked 44100
  ext status: 00010001
  sample rate: 44100
  version: 1.0.12.0
  clock caps: 44100 48000 88200 96000 176400 192000 aes1 aes2 aes3 wc internal   clock source names: AES/EBU (XLR)\S/PDIF (RCA)\S/PDIF (TOS)\Unused\Unused\Unused\Unused\Word Clock (BNC)\Unused\Unused\Unused\Unused\Internal\\

ext status:
  clock source: internal
  locked: 1
  rate: 44100

2. Set the clock source to external (e.g. aes1) through AV/C command[1]
   and connect a digital input with a different clock rate (e.g. 48000).
   Now the two sections of will look like this. You can see that the
   external source status is "locked".

global:
  owner: ffc0:000100000000
  notification: 00000010
  nick name: Weiss MAN301
  clock select: aes1 44100
  enable: 0
  status: unlocked 44100
  ext status: 00010001
  sample rate: 44100
  version: 1.0.12.0
  clock caps: 44100 48000 88200 96000 176400 192000 aes1 aes2 aes3 wc internal   clock source names: AES/EBU (XLR)\S/PDIF (RCA)\S/PDIF (TOS)\Unused\Unused\Unused\Unused\Word Clock (BNC)\Unused\Unused\Unused\Unused\Internal\\

ext status:
  clock source: aes1
  locked: 1
  rate: 48000

3. Try to set the clock rate to 48000 from user-space ALSA. This will
   fail. Only 44100 can be used. Example:

$ aplay --disable-resample 48000_S32.wav
Playing WAVE '48000_S32.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
Warning: rate is not accurate (requested = 48000Hz, got = 44100Hz)


The current workaround is going back to the internal clock source, switch
the clock rate to the one reported in the "ext status" section, and then
go back to the external clock source. This however does not feel quite
right.

I will be very grateful for any suggestion from your side.

Thank you and kind regards,
Michele Perrone

[1]https://github.com/weiss-engineering/snd-dice/blob/5a95496c0666048bc5bc8c07b3e1d74f392dc9a4/dice-avc.c#L436



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux