mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +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 = (guchar *) gst_adapter_peek (mimdec->adapter, 24);
|
||||||
header_size = header[0];
|
header_size = header[0];
|
||||||
if (header_size != 24) {
|
if (header_size != 24) {
|
||||||
GST_WARNING_OBJECT (mimdec,
|
|
||||||
"invalid frame: header size %d incorrect", header_size);
|
|
||||||
gst_adapter_flush (mimdec->adapter, 24);
|
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;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -189,9 +189,10 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
|
||||||
|
|
||||||
fourcc = GUINT32_FROM_LE (*((guint32 *) (header + 12)));
|
fourcc = GUINT32_FROM_LE (*((guint32 *) (header + 12)));
|
||||||
if (GST_MAKE_FOURCC ('M', 'L', '2', '0') != fourcc) {
|
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_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;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -225,34 +226,35 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
|
||||||
|
|
||||||
mimdec->dec = mimic_open ();
|
mimdec->dec = mimic_open ();
|
||||||
if (mimdec->dec == NULL) {
|
if (mimdec->dec == NULL) {
|
||||||
GST_WARNING_OBJECT (mimdec, "mimic_open error\n");
|
|
||||||
|
|
||||||
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
||||||
mimdec->have_header = FALSE;
|
mimdec->have_header = FALSE;
|
||||||
|
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL), ("mimic_open error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mimic_decoder_init (mimdec->dec, frame_body)) {
|
if (!mimic_decoder_init (mimdec->dec, frame_body)) {
|
||||||
GST_WARNING_OBJECT (mimdec, "mimic_decoder_init error\n");
|
|
||||||
mimic_close (mimdec->dec);
|
mimic_close (mimdec->dec);
|
||||||
mimdec->dec = NULL;
|
mimdec->dec = NULL;
|
||||||
|
|
||||||
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
||||||
mimdec->have_header = FALSE;
|
mimdec->have_header = FALSE;
|
||||||
|
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL),
|
||||||
|
("mimic_decoder_init error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mimic_get_property (mimdec->dec, "buffer_size",
|
if (!mimic_get_property (mimdec->dec, "buffer_size",
|
||||||
&mimdec->buffer_size)) {
|
&mimdec->buffer_size)) {
|
||||||
GST_WARNING_OBJECT (mimdec,
|
|
||||||
"mimic_get_property('buffer_size') error\n");
|
|
||||||
mimic_close (mimdec->dec);
|
mimic_close (mimdec->dec);
|
||||||
mimdec->dec = NULL;
|
mimdec->dec = NULL;
|
||||||
|
|
||||||
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
gst_adapter_flush (mimdec->adapter, mimdec->payload_size);
|
||||||
mimdec->have_header = FALSE;
|
mimdec->have_header = FALSE;
|
||||||
|
GST_ELEMENT_ERROR (mimdec, LIBRARY, INIT, (NULL),
|
||||||
|
("mimic_get_property('buffer_size') error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -290,6 +292,8 @@ gst_mim_dec_chain (GstPad * pad, GstBuffer * in)
|
||||||
mimdec->have_header = FALSE;
|
mimdec->have_header = FALSE;
|
||||||
|
|
||||||
gst_buffer_unref (out_buf);
|
gst_buffer_unref (out_buf);
|
||||||
|
GST_ELEMENT_ERROR (mimdec, STREAM, DECODE, (NULL),
|
||||||
|
("mimic_decode_frame error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -328,6 +332,7 @@ out:
|
||||||
gst_object_unref (mimdec);
|
gst_object_unref (mimdec);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstStateChangeReturn
|
static GstStateChangeReturn
|
||||||
|
|
|
@ -279,23 +279,25 @@ gst_mim_enc_chain (GstPad * pad, GstBuffer * in)
|
||||||
if (mimenc->enc == NULL) {
|
if (mimenc->enc == NULL) {
|
||||||
mimenc->enc = mimic_open ();
|
mimenc->enc = mimic_open ();
|
||||||
if (mimenc->enc == NULL) {
|
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;
|
res = GST_FLOW_ERROR;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mimic_encoder_init (mimenc->enc, mimenc->res)) {
|
if (!mimic_encoder_init (mimenc->enc, mimenc->res)) {
|
||||||
GST_WARNING_OBJECT (mimenc, "mimic_encoder_init error\n");
|
|
||||||
mimic_close (mimenc->enc);
|
mimic_close (mimenc->enc);
|
||||||
mimenc->enc = NULL;
|
mimenc->enc = NULL;
|
||||||
|
GST_ELEMENT_ERROR (mimenc, LIBRARY, INIT, (NULL),
|
||||||
|
("mimic_encoder_init error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mimic_get_property (mimenc->enc, "buffer_size", &mimenc->buffer_size)) {
|
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);
|
mimic_close (mimenc->enc);
|
||||||
mimenc->enc = NULL;
|
mimenc->enc = NULL;
|
||||||
|
GST_ELEMENT_ERROR (mimenc, LIBRARY, INIT, (NULL),
|
||||||
|
("mimic_get_property(buffer_size) error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
@ -313,9 +315,10 @@ gst_mim_enc_chain (GstPad * pad, GstBuffer * in)
|
||||||
keyframe = (mimenc->frames % MAX_INTERFRAMES) == 0 ? TRUE : FALSE;
|
keyframe = (mimenc->frames % MAX_INTERFRAMES) == 0 ? TRUE : FALSE;
|
||||||
if (!mimic_encode_frame (mimenc->enc, data, GST_BUFFER_DATA (out_buf),
|
if (!mimic_encode_frame (mimenc->enc, data, GST_BUFFER_DATA (out_buf),
|
||||||
&buffer_size, keyframe)) {
|
&buffer_size, keyframe)) {
|
||||||
GST_WARNING_OBJECT (mimenc, "mimic_encode_frame error\n");
|
|
||||||
gst_buffer_unref (out_buf);
|
gst_buffer_unref (out_buf);
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
|
GST_ELEMENT_ERROR (mimenc, STREAM, ENCODE, (NULL),
|
||||||
|
("mimic_encode_frame error"));
|
||||||
res = GST_FLOW_ERROR;
|
res = GST_FLOW_ERROR;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
@ -366,7 +369,6 @@ out:
|
||||||
out_unlock:
|
out_unlock:
|
||||||
GST_OBJECT_UNLOCK (mimenc);
|
GST_OBJECT_UNLOCK (mimenc);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstBuffer *
|
static GstBuffer *
|
||||||
|
|
Loading…
Reference in a new issue