Commit 9add2332 authored by Anton Baskanov's avatar Anton Baskanov Committed by Alexandre Julliard

winegstreamer: Allocate at least 3 buffers for MPEG audio in quartz parser.

parent dfb16162
...@@ -1649,6 +1649,7 @@ static HRESULT WINAPI GSTOutPin_DecideBufferSize(struct strmbase_source *iface, ...@@ -1649,6 +1649,7 @@ static HRESULT WINAPI GSTOutPin_DecideBufferSize(struct strmbase_source *iface,
IMemAllocator *allocator, ALLOCATOR_PROPERTIES *props) IMemAllocator *allocator, ALLOCATOR_PROPERTIES *props)
{ {
struct parser_source *pin = impl_source_from_IPin(&iface->pin.IPin_iface); struct parser_source *pin = impl_source_from_IPin(&iface->pin.IPin_iface);
unsigned int buffer_count = 1;
unsigned int buffer_size = 16384; unsigned int buffer_size = 16384;
ALLOCATOR_PROPERTIES ret_props; ALLOCATOR_PROPERTIES ret_props;
...@@ -1664,11 +1665,18 @@ static HRESULT WINAPI GSTOutPin_DecideBufferSize(struct strmbase_source *iface, ...@@ -1664,11 +1665,18 @@ static HRESULT WINAPI GSTOutPin_DecideBufferSize(struct strmbase_source *iface,
WAVEFORMATEX *format = (WAVEFORMATEX *)pin->pin.pin.mt.pbFormat; WAVEFORMATEX *format = (WAVEFORMATEX *)pin->pin.pin.mt.pbFormat;
buffer_size = format->nAvgBytesPerSec; buffer_size = format->nAvgBytesPerSec;
} }
else if (IsEqualGUID(&pin->pin.pin.mt.subtype, &MEDIASUBTYPE_MPEG1AudioPayload)
|| IsEqualGUID(&pin->pin.pin.mt.subtype, &MEDIASUBTYPE_MP3))
{
/* mpg123audiodec requires at least 3 buffers as it will keep
* references to the last 2 samples. */
buffer_count = 3;
}
/* We do need to drop any buffers that might have been sent with the old /* We do need to drop any buffers that might have been sent with the old
* caps, but this will be handled in parser_init_stream(). */ * caps, but this will be handled in parser_init_stream(). */
props->cBuffers = max(props->cBuffers, 1); props->cBuffers = max(props->cBuffers, buffer_count);
props->cbBuffer = max(props->cbBuffer, buffer_size); props->cbBuffer = max(props->cbBuffer, buffer_size);
props->cbAlign = max(props->cbAlign, 1); props->cbAlign = max(props->cbAlign, 1);
return IMemAllocator_SetProperties(allocator, props, &ret_props); return IMemAllocator_SetProperties(allocator, props, &ret_props);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment