mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
ump: fix program change 2.0 to 1.0 conversion
The program change byte should not be shifted an extra bit, unlike all the other messages. Fixes #4664
This commit is contained in:
parent
8c1e1ea17f
commit
f857a50734
1 changed files with 10 additions and 2 deletions
|
|
@ -96,9 +96,17 @@ SPA_API_CONTROL_UMP_UTILS int spa_ump_to_midi(uint32_t *ump, size_t ump_size,
|
|||
if (ump_size < 8)
|
||||
return 0;
|
||||
midi[size++] = (ump[0] >> 16) | 0x80;
|
||||
if (midi[0] < 0xc0 || midi[0] > 0xdf)
|
||||
switch (midi[0] & 0xf0) {
|
||||
case 0xc0:
|
||||
midi[size++] = (ump[1] >> 24);
|
||||
break;
|
||||
default:
|
||||
midi[size++] = (ump[0] >> 8) & 0x7f;
|
||||
midi[size++] = (ump[1] >> 25);
|
||||
SPA_FALLTHROUGH;
|
||||
case 0xd0:
|
||||
midi[size++] = (ump[1] >> 25);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0: /* Utility Messages */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue