winegstreamer: Check whether transform is supported when creating MPEG audio decoder.
Signed-off-by: Anton Baskanov <baskanov@gmail.com> Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b18b7260a2
commit
89d28156cf
|
@ -21,6 +21,7 @@
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
|
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
|
||||||
|
WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||||
|
|
||||||
struct transform
|
struct transform
|
||||||
{
|
{
|
||||||
|
@ -296,9 +297,39 @@ static const struct transform_ops mpeg_audio_codec_transform_ops =
|
||||||
|
|
||||||
HRESULT mpeg_audio_codec_create(IUnknown *outer, IUnknown **out)
|
HRESULT mpeg_audio_codec_create(IUnknown *outer, IUnknown **out)
|
||||||
{
|
{
|
||||||
|
static const struct wg_format output_format =
|
||||||
|
{
|
||||||
|
.major_type = WG_MAJOR_TYPE_AUDIO,
|
||||||
|
.u.audio =
|
||||||
|
{
|
||||||
|
.format = WG_AUDIO_FORMAT_S16LE,
|
||||||
|
.channel_mask = 1,
|
||||||
|
.channels = 1,
|
||||||
|
.rate = 44100,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
static const struct wg_format input_format =
|
||||||
|
{
|
||||||
|
.major_type = WG_MAJOR_TYPE_MPEG1_AUDIO,
|
||||||
|
.u.mpeg1_audio =
|
||||||
|
{
|
||||||
|
.layer = 2,
|
||||||
|
.channels = 1,
|
||||||
|
.rate = 44100,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
struct wg_transform *transform;
|
||||||
struct transform *object;
|
struct transform *object;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
transform = wg_transform_create(&input_format, &output_format);
|
||||||
|
if (!transform)
|
||||||
|
{
|
||||||
|
ERR_(winediag)("GStreamer doesn't support MPEG-1 audio decoding, please install appropriate plugins.\n");
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
wg_transform_destroy(transform);
|
||||||
|
|
||||||
hr = transform_create(outer, &CLSID_CMpegAudioCodec, &mpeg_audio_codec_transform_ops, &object);
|
hr = transform_create(outer, &CLSID_CMpegAudioCodec, &mpeg_audio_codec_transform_ops, &object);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
Loading…
Reference in New Issue