winegstreamer: Ensure that the source reports both PCM and floating point audio formats.
The patch is originally by Derek Lesho, with some changes by Giovanni Mascellani and Nikolay Sivov. Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
cdd24b1d9f
commit
865bbff0d9
|
@ -752,9 +752,6 @@ static void test_source_reader(void)
|
|||
if (SUCCEEDED(hr))
|
||||
IMFMediaType_Release(mediatype);
|
||||
|
||||
hr = IMFSourceReader_GetNativeMediaType(reader, MF_SOURCE_READER_FIRST_AUDIO_STREAM, 1, &mediatype);
|
||||
ok(hr == MF_E_NO_MORE_TYPES, "Unexpected hr %#x.\n", hr);
|
||||
|
||||
/* Current media type. */
|
||||
hr = IMFSourceReader_GetCurrentMediaType(reader, MF_SOURCE_READER_FIRST_VIDEO_STREAM, &mediatype);
|
||||
ok(hr == MF_E_INVALIDSTREAMNUMBER, "Unexpected hr %#x.\n", hr);
|
||||
|
|
|
@ -806,6 +806,31 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
|
|||
goto done;
|
||||
}
|
||||
}
|
||||
else if (format.major_type == WG_MAJOR_TYPE_AUDIO)
|
||||
{
|
||||
/* Expose at least one PCM and one floating point type for the
|
||||
consumer to pick from. */
|
||||
static const enum wg_audio_format audio_types[] =
|
||||
{
|
||||
WG_AUDIO_FORMAT_S16LE,
|
||||
WG_AUDIO_FORMAT_F32LE,
|
||||
};
|
||||
|
||||
stream_types = malloc( sizeof(IMFMediaType *) * (ARRAY_SIZE(audio_types) + 1) );
|
||||
|
||||
stream_types[0] = mf_media_type_from_wg_format(&format);
|
||||
type_count = 1;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(audio_types); i++)
|
||||
{
|
||||
struct wg_format new_format;
|
||||
if (format.u.audio.format == audio_types[i])
|
||||
continue;
|
||||
new_format = format;
|
||||
new_format.u.audio.format = audio_types[i];
|
||||
stream_types[type_count++] = mf_media_type_from_wg_format(&new_format);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
stream_type = mf_media_type_from_wg_format(&format);
|
||||
|
|
Loading…
Reference in New Issue