From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/video_encoder.c | 43 ++++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-)
diff --git a/dlls/winegstreamer/video_encoder.c b/dlls/winegstreamer/video_encoder.c index 1e70a38c7a4..0a56f1b1789 100644 --- a/dlls/winegstreamer/video_encoder.c +++ b/dlls/winegstreamer/video_encoder.c @@ -96,6 +96,24 @@ done: return hr; }
+static void video_encoder_clear_input_type(struct video_encoder *encoder) +{ + if (encoder->input_type) + { + IMFMediaType_Release(encoder->input_type); + encoder->input_type = NULL; + } +} + +static void video_encoder_clear_output_type(struct video_encoder *encoder) +{ + if (encoder->output_type) + { + IMFMediaType_Release(encoder->input_type); + encoder->output_type = NULL; + } +} + static HRESULT WINAPI transform_QueryInterface(IMFTransform *iface, REFIID iid, void **out) { struct video_encoder *encoder = impl_from_IMFTransform(iface); @@ -269,12 +287,7 @@ static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFM
if (!type) { - if (encoder->input_type) - { - IMFMediaType_Release(encoder->input_type); - encoder->input_type = NULL; - } - + video_encoder_clear_input_type(encoder); return S_OK; }
@@ -305,8 +318,7 @@ static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFM if (flags & MFT_SET_TYPE_TEST_ONLY) return S_OK;
- if (encoder->input_type) - IMFMediaType_Release(encoder->input_type); + video_encoder_clear_input_type(encoder); IMFMediaType_AddRef((encoder->input_type = type));
return S_OK; @@ -324,16 +336,8 @@ static HRESULT WINAPI transform_SetOutputType(IMFTransform *iface, DWORD id, IMF
if (!type) { - if (encoder->input_type) - { - IMFMediaType_Release(encoder->input_type); - encoder->input_type = NULL; - } - if (encoder->output_type) - { - IMFMediaType_Release(encoder->output_type); - encoder->output_type = NULL; - } + video_encoder_clear_input_type(encoder); + video_encoder_clear_output_type(encoder); return S_OK; }
@@ -361,8 +365,7 @@ static HRESULT WINAPI transform_SetOutputType(IMFTransform *iface, DWORD id, IMF || FAILED(IMFMediaType_GetUINT32(type, &MF_MT_INTERLACE_MODE, &uint32_value))) return MF_E_INVALIDMEDIATYPE;
- if (encoder->output_type) - IMFMediaType_Release(encoder->output_type); + video_encoder_clear_output_type(encoder); IMFMediaType_AddRef((encoder->output_type = type));
/* FIXME: Add MF_MT_MPEG_SEQUENCE_HEADER attribute. */