mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 02:46:06 +00:00
ALSA: firewire-motu: fix construction of PCM frame for capture direction
In data blocks of common isochronous packet for MOTU devices, PCM frames are multiplexed in a shape of '24 bit * 4 Audio Pack', described in IEC 61883-6. The frames are not aligned to quadlet. For capture PCM substream, ALSA firewire-motu driver constructs PCM frames by reading data blocks byte-by-byte. However this operation includes bug for lower byte of the PCM sample. This brings invalid content of the PCM samples. This commit fixes the bug. Reported-by: Peter Sjöberg <autopeter@gmail.com> Cc: <stable@vger.kernel.org> # v4.12+ Fixes: 4641c9394010 ("ALSA: firewire-motu: add MOTU specific protocol layer") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7dc661bd8d
commit
f97a0944a7
@ -136,7 +136,9 @@ static void read_pcm_s32(struct amdtp_stream *s,
|
||||
byte = (u8 *)buffer + p->pcm_byte_offset;
|
||||
|
||||
for (c = 0; c < channels; ++c) {
|
||||
*dst = (byte[0] << 24) | (byte[1] << 16) | byte[2];
|
||||
*dst = (byte[0] << 24) |
|
||||
(byte[1] << 16) |
|
||||
(byte[2] << 8);
|
||||
byte += 3;
|
||||
dst++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user