mirror of https://github.com/mpv-player/mpv
ao/wasapi: check full GUID of KSDATAFORMAT to determine float
This commit is contained in:
parent
239c880fe2
commit
4f208e6f68
|
@ -182,7 +182,7 @@ static void set_format(WAVEFORMATEXTENSIBLE *wformat, WORD bytepersample,
|
|||
wformat->dwChannelMask = chanmask;
|
||||
}
|
||||
|
||||
static int format_set_bits(int old_format, int bits, int fp)
|
||||
static int format_set_bits(int old_format, int bits, bool fp)
|
||||
{
|
||||
if (fp) {
|
||||
switch (bits) {
|
||||
|
@ -199,15 +199,15 @@ static int set_ao_format(struct ao *ao,
|
|||
WAVEFORMATEXTENSIBLE wformat)
|
||||
{
|
||||
struct wasapi_state *state = (struct wasapi_state *)ao->priv;
|
||||
if (wformat.SubFormat.Data1 != 1 && wformat.SubFormat.Data1 != 3) {
|
||||
MP_ERR(ao, "Unknown SubFormat %"PRIu32"\n",
|
||||
(uint32_t)wformat.SubFormat.Data1);
|
||||
bool is_float =
|
||||
!mp_GUID_compare(&mp_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, &wformat.SubFormat);
|
||||
|
||||
if ( !is_float &&
|
||||
mp_GUID_compare(&mp_KSDATAFORMAT_SUBTYPE_PCM, &wformat.SubFormat) ) {
|
||||
MP_ERR(ao, "Unknown SubFormat %s\n", mp_GUID_to_str(&wformat.SubFormat));
|
||||
return 0;
|
||||
}
|
||||
|
||||
// .Data1 == 1 is PCM, .Data1 == 3 is IEEE_FLOAT
|
||||
int format = format_set_bits(ao->format,
|
||||
wformat.Format.wBitsPerSample, wformat.SubFormat.Data1 == 3);
|
||||
int format = format_set_bits(ao->format, wformat.Format.wBitsPerSample, is_float);
|
||||
|
||||
if (!format)
|
||||
return 0;
|
||||
|
|
|
@ -31,6 +31,7 @@ int mp_GUID_compare(const GUID *l, const GUID *r);
|
|||
int mp_PKEY_compare(const PROPERTYKEY *l, const PROPERTYKEY *r);
|
||||
char *mp_GUID_to_str_buf(char *buf, size_t buf_size, const GUID *guid);
|
||||
char *mp_PKEY_to_str_buf(char *buf, size_t buf_size, const PROPERTYKEY *pkey);
|
||||
#define mp_GUID_to_str(guid) mp_GUID_to_str_buf((char[40]){0}, 40, (guid))
|
||||
#define mp_PKEY_to_str(pkey) mp_PKEY_to_str_buf((char[42]){0}, 42, (pkey))
|
||||
|
||||
int wasapi_fill_VistaBlob(wasapi_state *state);
|
||||
|
|
Loading…
Reference in New Issue