24 #ifndef DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H
25 #define DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H
41 namespace ds3d {
namespace app {
83 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
86 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
88 GstState end = GST_STATE_NULL;
90 if (!
isGood(c) || end != GST_STATE_NULL) {
91 LOG_WARNING(
"waiting for pipeline state to null failed, force to quit");
95 c =
setState(each.get(), GST_STATE_NULL);
105 GstState state = GST_STATE_NULL;
106 GstState pending = GST_STATE_NULL;
107 if (gst_element_get_state(
108 GST_ELEMENT(
pipeline()), &state, &pending,
109 (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE)) == GST_STATE_CHANGE_FAILURE) {
112 if (state == GST_STATE_PLAYING || pending == GST_STATE_PLAYING) {
135 gst_bus_remove_watch(
bus());
157 virtual bool busCall(GstMessage* msg) = 0;
170 gst_element_set_state(ele, state) != GST_STATE_CHANGE_FAILURE,
ErrCode::kGst,
171 "element set state: %d failed", state);
177 GstElement* ele, GstState* state, GstState* pending =
nullptr,
size_t timeout = 0)
180 GstStateChangeReturn ret = gst_element_get_state(
181 ele, state, pending, (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE));
183 case GST_STATE_CHANGE_FAILURE:
185 case GST_STATE_CHANGE_SUCCESS:
186 case GST_STATE_CHANGE_NO_PREROLL:
194 static gboolean
sBusCall(GstBus*
bus, GstMessage* msg, gpointer data)
198 return ctx->busCall(msg);
212 #endif // DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H