[Query] Release edge handle when stopping the playing
[platform/upstream/nnstreamer.git] / gst / nnstreamer / tensor_query / tensor_query_server.h
1 /* SPDX-License-Identifier: LGPL-2.1-only */
2 /**
3  * Copyright (C) 2021 Samsung Electronics Co., Ltd.
4  *
5  * @file    tensor_query_server.h
6  * @date    03 Aug 2021
7  * @brief   GStreamer plugin to handle meta_query for server elements
8  * @author  Junhwan Kim <jejudo.kim@samsung.com>
9  * @see     http://github.com/nnstreamer/nnstreamer
10  * @bug     No known bugs
11  *
12  */
13 #ifndef __GST_TENSOR_QUERY_SERVER_H__
14 #define __GST_TENSOR_QUERY_SERVER_H__
15
16 #include <gst/gst.h>
17 #include <tensor_common.h>
18 #include <nnstreamer-edge.h>
19 #include "tensor_meta.h"
20
21 G_BEGIN_DECLS
22 #define DEFAULT_SERVER_ID 0
23 #define DEFAULT_QUERY_INFO_TIMEOUT 5
24 typedef void *edge_server_handle;
25
26 /**
27  * @brief GstTensorQueryServer internal info data structure.
28  */
29 typedef struct
30 {
31   char *id;
32   gboolean configured;
33   GMutex lock;
34   GCond cond;
35
36   nns_edge_h edge_h;
37 } GstTensorQueryServer;
38
39 /**
40  * @brief Get nnstreamer edge server handle.
41  */
42 edge_server_handle gst_tensor_query_server_get_handle (const char *id);
43
44 /**
45  * @brief Add GstTensorQueryServer.
46  */
47 edge_server_handle gst_tensor_query_server_add_data (const char *id);
48
49 /**
50  * @brief Remove GstTensorQueryServer.
51  */
52 void gst_tensor_query_server_remove_data (edge_server_handle server_h);
53
54 /**
55  * @brief Wait until the sink is configured and get server info handle.
56  */
57 gboolean gst_tensor_query_server_wait_sink (edge_server_handle server_h);
58
59 /**
60  * @brief Get nnstreamer edge handle of query server.
61  */
62 nns_edge_h gst_tensor_query_server_get_edge_handle (const char *id, nns_edge_connect_type_e connect_type);
63
64 /**
65  * @brief set query server sink configured.
66  */
67 void gst_tensor_query_server_set_configured (edge_server_handle server_h);
68
69 /**
70  * @brief set query server caps.
71  */
72 void
73 gst_tensor_query_server_set_caps (edge_server_handle server_h,
74     const char *caps_str);
75
76 /**
77  * @brief Release nnstreamer edge handle of query server.
78  */
79 void gst_tensor_query_server_release_edge_handle (edge_server_handle server_h);
80
81 G_END_DECLS
82 #endif /* __GST_TENSOR_QUERY_CLIENT_H__ */