13 #ifndef DEEPSTREAM_LIDAR_INFER_CONTEXT_APP_H
14 #define DEEPSTREAM_LIDAR_INFER_CONTEXT_APP_H
30 namespace ds3d {
namespace lidarinfer {
72 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
75 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
77 GstState end = GST_STATE_NULL;
79 if (!
isGood(c) || end != GST_STATE_NULL) {
80 LOG_WARNING(
"waiting for pipeline state to null failed, force to quit");
84 c =
setState(each.get(), GST_STATE_NULL);
94 GstState state = GST_STATE_NULL;
95 GstState pending = GST_STATE_NULL;
96 if (gst_element_get_state(
97 GST_ELEMENT(
pipeline()), &state, &pending,
98 (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE)) == GST_STATE_CHANGE_FAILURE) {
101 if (state == GST_STATE_PLAYING || pending == GST_STATE_PLAYING) {
124 gst_bus_remove_watch(
bus());
146 virtual bool busCall(GstMessage* msg) = 0;
159 gst_element_set_state(ele, state) != GST_STATE_CHANGE_FAILURE,
ErrCode::kGst,
160 "element set state: %d failed", state);
166 GstElement* ele, GstState* state, GstState* pending =
nullptr,
size_t timeout = 0)
169 GstStateChangeReturn ret = gst_element_get_state(
170 ele, state, pending, (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE));
172 case GST_STATE_CHANGE_FAILURE:
174 case GST_STATE_CHANGE_SUCCESS:
175 case GST_STATE_CHANGE_NO_PREROLL:
183 static gboolean
sBusCall(GstBus*
bus, GstMessage* msg, gpointer data)
187 return ctx->busCall(msg);
201 #endif // DEEPSTREAM_LIDAR_INFER_CONTEXT_APP_H