mimic: Use GST_ELEMENT_ERROR when returning a flow error

This commit is contained in:
Olivier Crête 2009-10-12 19:16:26 -04:00
parent d9d27a4a54
commit a5b3b27d70
2 changed files with 20 additions and 13 deletions

View file

@ -174,9 +174,9 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
header = (guchar *) gst_adapter_peek (mimdec->adapter, 24);
header_size = header[0];
if (header_size != 24) {
GST_WARNING_OBJECT (mimdec,
"invalid frame: header size %d incorrect", header_size);
gst_adapter_flush (mimdec->adapter, 24);
GST_ELEMENT_ERROR (mimdec, STREAM, DECODE, (NULL),
("invalid frame: header size %d incorrect", header_size));
res = GST_FLOW_ERROR;
goto out;
}
@ -189,9 +189,10 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
fourcc = GUINT32_FROM_LE (*((guint32 *) (header + 12)));
if (GST_MAKE_FOURCC ('M', 'L', '2', '0') != fourcc) {
GST_WARNING_OBJECT (mimdec, "invalid frame: unknown FOURCC code"
" %X (%" GST_FOURCC_FORMAT ")", fourcc, GST_FOURCC_ARGS (fourcc));
gst_adapter_flush (mimdec->adapter, 24);
GST_ELEMENT_ERROR (mimdec, STREAM, WRONG_TYPE, (NULL),
("invalid frame: unknown FOURCC code %X (%" GST_FOURCC_FORMAT ")",
fourcc, GST_FOURCC_ARGS (fourcc)));
res = GST_FLOW_ERROR;
goto out;
}
@ -225,34 +226,35 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
mimdec->dec = mimic_open ();
if (mimdec->dec == NULL) {
GST_WARNING_OBJECT (mimdec, "mimic_open error\n");
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
mimdec->have_header = FALSE;
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL), ("mimic_open error"));
res = GST_FLOW_ERROR;
goto out;
}
if (!mimic_decoder_init (mimdec->dec, frame_body)) {
GST_WARNING_OBJECT (mimdec, "mimic_decoder_init error\n");
mimic_close (mimdec->dec);
mimdec->dec = NULL;
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
mimdec->have_header = FALSE;
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL),
("mimic_decoder_init error"));
res = GST_FLOW_ERROR;
goto out;
}
if (!mimic_get_property (mimdec->dec, "buffer_size",
&mimdec->buffer_size)) {
GST_WARNING_OBJECT (mimdec,
"mimic_get_property('buffer_size') error\n");
mimic_close (mimdec->dec);
mimdec->dec = NULL;
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
mimdec->have_header = FALSE;
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL),
("mimic_get_property('buffer_size') error"));
res = GST_FLOW_ERROR;
goto out;
}
@ -290,6 +292,8 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
mimdec->have_header = FALSE;
gst_buffer_unref (out_buf);
GST_ELEMENT_ERROR (mimdec, STREAM, DECODE, (NULL),
("mimic_decode_frame error"));
res = GST_FLOW_ERROR;
goto out;
}
@ -328,6 +332,7 @@ out:
gst_object_unref (mimdec);
return res;
}
static GstStateChangeReturn

View file

@ -279,23 +279,25 @@ gst_mim_enc_chain (GstPad * pad, GstBuffer * in)
if (mimenc->enc == NULL) {
mimenc->enc = mimic_open ();
if (mimenc->enc == NULL) {
GST_WARNING_OBJECT (mimenc, "mimic_open error\n");
GST_ELEMENT_ERROR (mimenc, LIBRARY, INIT, (NULL), ("mimic_open error"));
res = GST_FLOW_ERROR;
goto out_unlock;
}
if (!mimic_encoder_init (mimenc->enc, mimenc->res)) {
GST_WARNING_OBJECT (mimenc, "mimic_encoder_init error\n");
mimic_close (mimenc->enc);
mimenc->enc = NULL;
GST_ELEMENT_ERROR (mimenc, LIBRARY, INIT, (NULL),
("mimic_encoder_init error"));
res = GST_FLOW_ERROR;
goto out_unlock;
}
if (!mimic_get_property (mimenc->enc, "buffer_size", &mimenc->buffer_size)) {
GST_WARNING_OBJECT (mimenc, "mimic_get_property('buffer_size') error\n");
mimic_close (mimenc->enc);
mimenc->enc = NULL;
GST_ELEMENT_ERROR (mimenc, LIBRARY, INIT, (NULL),
("mimic_get_property(buffer_size) error"));
res = GST_FLOW_ERROR;
goto out_unlock;
}
@ -313,9 +315,10 @@ gst_mim_enc_chain (GstPad * pad, GstBuffer * in)
keyframe = (mimenc->frames % MAX_INTERFRAMES) == 0 ? TRUE : FALSE;
if (!mimic_encode_frame (mimenc->enc, data, GST_BUFFER_DATA (out_buf),
&buffer_size, keyframe)) {
GST_WARNING_OBJECT (mimenc, "mimic_encode_frame error\n");
gst_buffer_unref (out_buf);
gst_buffer_unref (buf);
GST_ELEMENT_ERROR (mimenc, STREAM, ENCODE, (NULL),
("mimic_encode_frame error"));
res = GST_FLOW_ERROR;
goto out_unlock;
}
@ -366,7 +369,6 @@ out:
out_unlock:
GST_OBJECT_UNLOCK (mimenc);
goto out;
}
static GstBuffer *