mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 11:55:39 +00:00
mimic: Use GST_ELEMENT_ERROR when returning a flow error
This commit is contained in:
parent
d9d27a4a54
commit
a5b3b27d70
2 changed files with 20 additions and 13 deletions
|
@ -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
|
||||
|
|
|
@ -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 *
|
||||
|
|
Loading…
Reference in a new issue