theoradec: Handle negotiation failure
authorEdward Hervey <bilboed@bilboed.com>
Sat, 11 Nov 2017 06:45:42 +0000 (07:45 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Sat, 11 Nov 2017 06:47:52 +0000 (07:47 +0100)
Avoids a trove of random issues afterwards (due to decoder not
*actually* being initialized/negotiated).

ext/theora/gsttheoradec.c

index 14bd5b8..01f738d 100644 (file)
@@ -516,7 +516,8 @@ theora_handle_type_packet (GstTheoraDec * dec)
 
   dec->uncropped_info = state->info;
 
-  gst_video_decoder_negotiate (GST_VIDEO_DECODER (dec));
+  if (!gst_video_decoder_negotiate (GST_VIDEO_DECODER (dec)))
+    goto not_negotiated;
 
   dec->have_header = TRUE;
 
@@ -528,6 +529,12 @@ unsupported_format:
     GST_ERROR_OBJECT (dec, "Invalid pixel format %d", dec->info.pixel_fmt);
     return GST_FLOW_ERROR;
   }
+
+not_negotiated:
+  {
+    GST_ERROR_OBJECT (dec, "Failed to negotiate");
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
 }
 
 static GstFlowReturn