basevideoencoder: handle failures in start() and stop()

This commit is contained in:
Alessandro Decina 2011-10-31 11:36:06 +01:00 committed by Alessandro Decina
parent de138dbc57
commit 16ce440e7f

View file

@ -799,7 +799,8 @@ gst_base_video_encoder_change_state (GstElement * element,
gst_base_video_encoder_reset (base_video_encoder); gst_base_video_encoder_reset (base_video_encoder);
gst_base_video_encoder_reset (base_video_encoder); gst_base_video_encoder_reset (base_video_encoder);
if (base_video_encoder_class->start) { if (base_video_encoder_class->start) {
base_video_encoder_class->start (base_video_encoder); if (!base_video_encoder_class->start (base_video_encoder))
goto start_error;
} }
break; break;
default: default:
@ -812,7 +813,8 @@ gst_base_video_encoder_change_state (GstElement * element,
case GST_STATE_CHANGE_PAUSED_TO_READY: case GST_STATE_CHANGE_PAUSED_TO_READY:
gst_base_video_encoder_reset (base_video_encoder); gst_base_video_encoder_reset (base_video_encoder);
if (base_video_encoder_class->stop) { if (base_video_encoder_class->stop) {
base_video_encoder_class->stop (base_video_encoder); if (!base_video_encoder_class->stop (base_video_encoder))
goto stop_error;
} }
break; break;
default: default:
@ -820,6 +822,14 @@ gst_base_video_encoder_change_state (GstElement * element,
} }
return ret; return ret;
start_error:
GST_WARNING_OBJECT (base_video_encoder, "failed to start");
return GST_STATE_CHANGE_FAILURE;
stop_error:
GST_WARNING_OBJECT (base_video_encoder, "failed to stop");
return GST_STATE_CHANGE_FAILURE;
} }
/** /**