18 #ifndef DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H
19 #define DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H
21 #include "gstnvdsmeta.h"
24 #include <ds3d/common/hpp/dataloader.hpp>
25 #include <ds3d/common/hpp/datamap.hpp>
26 #include <ds3d/common/hpp/frame.hpp>
27 #include <ds3d/common/hpp/yaml_config.hpp>
30 #include <ds3d/gst/nvds3d_gst_plugin.h>
31 #include <ds3d/gst/nvds3d_gst_ptr.h>
32 #include <ds3d/gst/nvds3d_meta.h>
35 namespace ds3d {
namespace app {
77 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
80 LOG_WARNING(
"set pipeline state to GST_STATE_NULL failed");
82 GstState end = GST_STATE_NULL;
84 if (!
isGood(c) || end != GST_STATE_NULL) {
85 LOG_WARNING(
"waiting for pipeline state to null failed, force to quit");
89 c =
setState(each.get(), GST_STATE_NULL);
99 GstState state = GST_STATE_NULL;
100 GstState pending = GST_STATE_NULL;
101 if (gst_element_get_state(
102 GST_ELEMENT(
pipeline()), &state, &pending,
103 (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE)) == GST_STATE_CHANGE_FAILURE) {
106 if (state == GST_STATE_PLAYING || pending == GST_STATE_PLAYING) {
129 gst_bus_remove_watch(
bus());
151 virtual bool busCall(GstMessage* msg) = 0;
164 gst_element_set_state(ele, state) != GST_STATE_CHANGE_FAILURE,
ErrCode::kGst,
165 "element set state: %d failed", state);
171 GstElement* ele, GstState* state, GstState* pending =
nullptr,
size_t timeout = 0)
174 GstStateChangeReturn ret = gst_element_get_state(
175 ele, state, pending, (timeout ? timeout * 1000000 : GST_CLOCK_TIME_NONE));
177 case GST_STATE_CHANGE_FAILURE:
179 case GST_STATE_CHANGE_SUCCESS:
180 case GST_STATE_CHANGE_NO_PREROLL:
188 static gboolean
sBusCall(GstBus*
bus, GstMessage* msg, gpointer data)
192 return ctx->busCall(msg);
206 #endif // DS3D_APP_DEEPSTREAM_3D_CONTEXT_APP_H