applemedia: vtdec: fail gracefully when not negotiated
authorAlessandro Decina <alessandro.d@gmail.com>
Sun, 8 Dec 2013 14:24:58 +0000 (15:24 +0100)
committerAlessandro Decina <alessandro.d@gmail.com>
Sun, 8 Dec 2013 14:24:58 +0000 (15:24 +0100)
sys/applemedia/vtdec.c

index 87a193e..68ad6c9 100644 (file)
@@ -257,6 +257,11 @@ gst_vtdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
   GstFlowReturn ret = GST_FLOW_OK;
   int decode_frame_number = frame->decode_frame_number;
 
+  if (vtdec->format_description == NULL) {
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto out;
+  }
+
   GST_LOG_OBJECT (vtdec, "got input frame %d", decode_frame_number);
 
   ret = gst_vtdec_push_frames_if_needed (vtdec, FALSE, FALSE);
@@ -278,10 +283,11 @@ gst_vtdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
   if (status != noErr && FALSE)
     goto error;
 
-out:
   GST_LOG_OBJECT (vtdec, "submitted input frame %d", decode_frame_number);
 
-  CFRelease (cm_sample_buffer);
+out:
+  if (cm_sample_buffer)
+    CFRelease (cm_sample_buffer);
   return ret;
 
 error: