{
GstMFAudioEncClass *klass = GST_MF_AUDIO_ENC_GET_CLASS (self);
HRESULT hr;
- BYTE *data;
+ BYTE *data = nullptr;
ComPtr < IMFMediaBuffer > media_buffer;
ComPtr < IMFSample > sample;
GstBuffer *buffer;
GstFlowReturn res = GST_FLOW_ERROR;
- DWORD buffer_len;
+ DWORD buffer_len = 0;
res = gst_mf_transform_get_output (self->transform, sample.GetAddressOf ());
if (!gst_mf_result (hr))
return GST_FLOW_ERROR;
+ /* Can happen while draining */
+ if (buffer_len == 0 || !data) {
+ GST_DEBUG_OBJECT (self, "Empty media buffer");
+ media_buffer->Unlock ();
+ return GST_FLOW_OK;
+ }
+
buffer = gst_audio_encoder_allocate_output_buffer (GST_AUDIO_ENCODER (self),
buffer_len);
gst_buffer_fill (buffer, 0, data, buffer_len);