mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05: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
14f55663bf
commit
336a5d1ded
1 changed files with 10 additions and 2 deletions
|
|
@ -96,10 +96,18 @@ SPA_API_CONTROL_UMP_UTILS int spa_ump_to_midi(uint32_t *ump, size_t ump_size,
|
||||||
if (ump_size < 8)
|
if (ump_size < 8)
|
||||||
return 0;
|
return 0;
|
||||||
midi[size++] = (ump[0] >> 16) | 0x80;
|
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[0] >> 8) & 0x7f;
|
||||||
|
SPA_FALLTHROUGH;
|
||||||
|
case 0xd0:
|
||||||
midi[size++] = (ump[1] >> 25);
|
midi[size++] = (ump[1] >> 25);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 0x0: /* Utility Messages */
|
case 0x0: /* Utility Messages */
|
||||||
case 0x5: /* Data Messages */
|
case 0x5: /* Data Messages */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue