TraceGstreamer.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. /*\
  2. |*| Copyright 2015-2016 bill-auger <https://github.com/bill-auger/av-caster/issues>
  3. |*|
  4. |*| This file is part of the AvCaster program.
  5. |*|
  6. |*| AvCaster is free software: you can redistribute it and/or modify
  7. |*| it under the terms of the GNU General Public License version 3
  8. |*| as published by the Free Software Foundation.
  9. |*|
  10. |*| AvCaster is distributed in the hope that it will be useful,
  11. |*| but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. |*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. |*| GNU General Public License for more details.
  14. |*|
  15. |*| You should have received a copy of the GNU General Public License
  16. |*| along with AvCaster. If not, see <http://www.gnu.org/licenses/>.
  17. \*/
  18. #ifndef _TRACEGSTREAMER_H_
  19. #define _TRACEGSTREAMER_H_
  20. #ifdef DEBUG_TRACE
  21. # include "Trace.h"
  22. /* state */
  23. # define DEBUG_TRACE_GST_INIT_PHASE_1 Trace::TraceState("initializing Gstreamer") ;
  24. # define DEBUG_TRACE_GST_INIT_PHASE_2 Trace::TraceState("instantiating pipeline") ;
  25. # define DEBUG_TRACE_GST_INIT_PHASE_3 Trace::TraceState("configuring pipeline") ;
  26. # define DEBUG_TRACE_GST_INIT_PHASE_4 Trace::TraceState("instantiating media elements") ;
  27. # define DEBUG_TRACE_GST_INIT_PHASE_5 Trace::TraceState("linking bins") ;
  28. # define DEBUG_TRACE_GST_INIT_PHASE_6 Trace::TraceState("starting pipeline") ;
  29. # define DEBUG_TRACE_GST_INIT_PHASE_7 Trace::TraceState("Gstreamer ready") ;
  30. # define DEBUG_DUMP_MEDIA_SWITCHES \
  31. if (!is_config_sane || DEBUG_TRACE_MEDIA_VB) \
  32. Trace::TraceMedia(String("pipeline configuration params =>") + \
  33. "\n\tn_video_inputs=" + String(n_video_inputs ) + \
  34. "\n\tis_media_enabled=" + String(is_media_enabled ) + \
  35. "\n\tis_screen_enabled=" + String(is_screen_enabled ) + \
  36. "\n\tis_camera_enabled=" + String(is_camera_enabled ) + \
  37. "\n\tis_text_enabled=" + String(is_text_enabled ) + \
  38. "\n\tis_image_enabled=" + String(is_image_enabled ) + \
  39. "\n\tis_vmixer_enabled=" + String(is_vmixer_enabled ) + \
  40. "\n\tis_preview_enabled=" + String(is_preview_enabled) + \
  41. "\n\tis_audio_enabled=" + String(is_audio_enabled ) + \
  42. "\n\tis_config_sane=" + String(is_config_sane ) ) ;
  43. # define DEBUG_TRACE_DISABLED_BINS \
  44. if (!is_screen_enabled ) Trace::TraceState("ScreencapBin disabled") ; \
  45. if (!is_camera_enabled ) Trace::TraceState("CameraBin disabled") ; \
  46. if (!is_text_enabled ) Trace::TraceState("TextBin disabled") ; \
  47. if (!is_image_enabled ) Trace::TraceState("ImageBin disabled") ; \
  48. if (!is_vmixer_enabled ) Trace::TraceState("CompositorBin disabled") ; \
  49. if (!is_preview_enabled) Trace::TraceState("PreviewBin disabled") ; \
  50. if (!is_audio_enabled ) Trace::TraceState("AudioBin disabled") ;
  51. # define DEBUG_TRACE_BUILD_SCREENCAP_BIN Trace::TraceState("instantiating ScreencapBin elements") ;
  52. # define DEBUG_TRACE_BUILD_CAMERA_BIN Trace::TraceState("instantiating CameraBin elements") ;
  53. # define DEBUG_TRACE_BUILD_TEXT_BIN Trace::TraceState("instantiating TextBin elements") ;
  54. # define DEBUG_TRACE_BUILD_IMAGE_BIN Trace::TraceState("instantiating ImageBin elements") ;
  55. # define DEBUG_TRACE_BUILD_COMPOSITOR_BIN Trace::TraceState("instantiating CompositorBin elements") ;
  56. # define DEBUG_TRACE_BUILD_PREVIEW_BIN Trace::TraceState("instantiating PreviewBin elements") ;
  57. # define DEBUG_TRACE_BUILD_AUDIO_BIN Trace::TraceState("instantiating AudioBin elements") ;
  58. # define DEBUG_TRACE_BUILD_MUXER_BIN Trace::TraceState("instantiating MuxerBin elements") ;
  59. # define DEBUG_TRACE_BUILD_OUTPUT_BIN Trace::TraceState("instantiating OutputBin elements") ;
  60. # define DEBUG_GST_STATE(state) \
  61. String((state == GST_STATE_VOID_PENDING) ? "GST_STATE_VOID_PENDING" : \
  62. (state == GST_STATE_NULL ) ? "GST_STATE_NULL" : \
  63. (state == GST_STATE_READY ) ? "GST_STATE_READY" : \
  64. (state == GST_STATE_PAUSED ) ? "GST_STATE_PAUSED" : \
  65. (state == GST_STATE_PLAYING ) ? "GST_STATE_PLAYING" : \
  66. "unknown" )
  67. # define DEBUG_TRACE_SET_GST_STATE \
  68. String dbg = " '" + GetElementId(an_element) + "' to state " + \
  69. DEBUG_GST_STATE(next_state) ; \
  70. if (IsInitialized()) \
  71. if (is_err) Trace::TraceError("error setting" + dbg) ; \
  72. else Trace::TraceState("set" + dbg) ;
  73. /* bus messages */
  74. #define DEBUG_TRACE_MESSAGE_EOS Trace::TraceMediaVb("GST_MESSAGE_EOS") ;
  75. #define DEBUG_TRACE_MESSAGE_STATE_CHANGED Trace::TraceMediaVb("GST_MESSAGE_STATE_CHANGED") ;
  76. void MessageStructEach(GstMessage* message , GstStructureForeachFunc each_fn)
  77. {
  78. gst_structure_foreach(gst_message_get_structure(message) , each_fn , NULL) ;
  79. }
  80. gboolean DumpMessage(GQuark field_id , const GValue* gvalue , gpointer user_data) // aka GstStructureForeachFunc
  81. {
  82. gchar* gvalue_str = g_strdup_value_contents(gvalue) ;
  83. DBG("DumpMessage() gvalue='" + String(gvalue_str) + "'") ;
  84. g_free(gvalue_str) ;
  85. }
  86. # define DEBUG_TRACE_DUMP_MESSAGE_STRUCT \
  87. if (DEBUG_TRACE_MEDIA_VB) MessageStructEach(message , DumpMessage) ;
  88. # define DEBUG_TRACE_MESSAGE_UNHANDLED \
  89. Trace::TraceMediaVb("got unhandled message '" + String(GST_MESSAGE_TYPE_NAME(message)) + "'") ;
  90. # define DEBUG_TRACE_GST_ERROR_MESSAGE \
  91. String err = (is_alsa_init_error || \
  92. is_pulse_init_error || \
  93. is_jack_init_error ) ? "deactivating audio" : \
  94. (is_xv_init_error ) ? "deactivating preview" : \
  95. (is_file_sink_error ) ? "deactivating output" : String::empty ; \
  96. String is_handled_msg = (err.isNotEmpty()) ? "" : " (unhandled)" ; \
  97. Trace::TraceError("GSTError:" + is_handled_msg + " '" + error_message + "'") ; \
  98. if (err.isNotEmpty()) Trace::TraceMedia(err) ;
  99. /* configuration */
  100. # define DEBUG_TRACE_CONFIGURE_SCREENCAP_BIN \
  101. String plugin_id = (is_active) ? GST::SCREEN_PLUGIN_ID : GST::TESTVIDEO_PLUGIN_ID ; \
  102. Trace::TraceState("configuring ScreencapBin @ " + \
  103. String(screencap_w) + "x" + String(screencap_h) + \
  104. " @ " + String(framerate) + "fps" + \
  105. " using " + plugin_id ) ;
  106. # define DEBUG_TRACE_CONFIGURE_CAMERA_BIN \
  107. String dev_path = (use_real_src) ? device_path : "testsrc" ; \
  108. String res = String(resolution.getX()) + "x" + String(resolution.getY()) ; \
  109. String fps = String(framerate) + "fps" ; \
  110. String plugin_id = (use_real_src) ? GST::CAMERA_PLUGIN_ID : GST::TESTVIDEO_PLUGIN_ID ; \
  111. Trace::TraceState("configuring CameraBin '" + dev_path + \
  112. "' -> " + res + \
  113. " @ " + fps + \
  114. " using " + plugin_id ) ;
  115. # define DEBUG_TRACE_CONFIGURE_TEXT_BIN \
  116. Trace::TraceState("configuring TextBin " + CONFIG::TextStyles() [text_style_idx] + \
  117. " overlay @ " + CONFIG::TextPositions()[text_pos_idx ] ) ;
  118. # define DEBUG_TRACE_CONFIGURE_IMAGE_BIN \
  119. Trace::TraceState("configuring ImageBin '" + image_filename + "'") ;
  120. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR_BIN \
  121. Trace::TraceState("configuring CompositorBin @ " + \
  122. String(output_w) + "x" + String(output_h) + \
  123. " @ " + String(framerate) + "fps") ; \
  124. Trace::TraceMedia("configuring compositor sinks screen_z=" + String(screen_z) + \
  125. " camera_z=" + String(camera_z) + \
  126. " image_z=" + String(image_z ) ) ;
  127. # define DEBUG_TRACE_CONFIGURE_PREVIEW_BIN \
  128. String plugin_id = (is_active) ? GST::PREVIEW_PLUGIN_ID : GST::FAUXSINK_PLUGIN_ID ; \
  129. Trace::TraceState("configuring PreviewBin using " + plugin_id) ;
  130. # define DEBUG_TRACE_CONFIGURE_AUDIO_BIN \
  131. String bit_depth ; String plugin_id ; \
  132. switch ((CONFIG::AudioApi)audio_api_idx) \
  133. { \
  134. case CONFIG::ALSA_AUDIO_IDX: bit_depth = "16" ; plugin_id = GST::ALSA_PLUGIN_ID ; break ; \
  135. case CONFIG::PULSE_AUDIO_IDX: bit_depth = "16" ; plugin_id = GST::PULSE_PLUGIN_ID ; break ; \
  136. case CONFIG::JACK_AUDIO_IDX: bit_depth = "32" ; plugin_id = GST::JACK_PLUGIN_ID ; break ; \
  137. default: bit_depth = "16" ; plugin_id = GST::TESTAUDIO_PLUGIN_ID ; break ; \
  138. } \
  139. Trace::TraceState("configuring AudioBin " + bit_depth + "bit @ " + \
  140. String(samplerate) + "hz x " + \
  141. String(n_channels) + " channels" + " using " + plugin_id) ; \
  142. Trace::TraceMediaVb("configuring AudioCaps with '" + caps_str + "'") ;
  143. # define DEBUG_TRACE_CONFIGURE_MUXER_BIN \
  144. Trace::TraceState(String("configuring MuxerBin video - ") + \
  145. "h264 video -> " + String(output_w) + "x" + String(output_h) + \
  146. " @ " + String(video_bitrate) + "kbps - " ) ; \
  147. Trace::TraceState(String("configuring MuxerBin audio - ") + \
  148. "mp3 audio 16bit @ " + String(samplerate) + "hz -> " + String(audio_bitrate) + \
  149. "kbps x " + String(n_channels) + " channels" ) ;
  150. # define DEBUG_TRACE_CONFIGURE_OUTPUT_BIN \
  151. String plugin_id = (next_sink == OutputFileSink) ? GST::FILESINK_PLUGIN_ID : \
  152. (next_sink == OutputRtmpSink) ? GST::RTMPSINK_PLUGIN_ID : \
  153. (next_sink == OutputFauxSink) ? GST::FAUXSINK_PLUGIN_ID : \
  154. String::empty ; \
  155. String url = output_url.upToFirstOccurrenceOf("?" , true , true) ; \
  156. String server = (next_sink == OutputFauxSink) ? "" : \
  157. " => '" + url + ((url.endsWith("?")) ? "...'" : "'") ; \
  158. Trace::TraceState("configuring OutputBin using " + plugin_id + server ) ;
  159. # define DEBUG_TRACE_RECONFIGURE_IN \
  160. String bin = (configure_all ) ? "Pipeline" : \
  161. (configure_screen ) ? "ScreencapBin" : \
  162. (configure_camera ) ? "CameraBin" : \
  163. (configure_text ) ? "TextBin" : \
  164. (configure_image ) ? "ImageBin" : \
  165. (configure_preview) ? "PreviewBin" : \
  166. (configure_audio ) ? "AudioBin" : \
  167. (configure_output ) ? "OutputBin" : "n/a" ; \
  168. String dbg = "reconfiguring " + bin ; Trace::TraceMedia(dbg) ;
  169. # define DEBUG_TRACE_RECONFIGURE_OUT if (is_error) Trace::TraceError("error " + dbg) ;
  170. # define DEBUG_TRACE_CONFIGURE_CAPS \
  171. Trace::TraceMedia("configuring '" + GetElementId(a_capsfilter) + "'") ;
  172. # define DEBUG_TRACE_CONFIGURE_QUEUE \
  173. Trace::TraceMedia("configuring '" + GetElementId(a_queue) + "'") ;
  174. # define DEBUG_TRACE_CONFIGURE_SCREEN \
  175. Trace::TraceMedia("configuring '" + GetElementId(a_screen_source) + "'") ;
  176. # define DEBUG_TRACE_CONFIGURE_CAMERA \
  177. Trace::TraceMedia("configuring '" + GetElementId(a_camera_source) + "'") ;
  178. # define DEBUG_TRACE_CONFIGURE_TEST_VIDEO \
  179. Trace::TraceMedia("configuring '" + GetElementId(a_test_source) + "'") ;
  180. # define DEBUG_TRACE_CONFIGURE_TEXT \
  181. Trace::TraceMedia("configuring '" + GetElementId(a_text_source) + "'") ;
  182. # define DEBUG_TRACE_CONFIGURE_FILE_SOURCE \
  183. Trace::TraceMedia("configuring '" + GetElementId(a_file_source) + "'") ;
  184. # define DEBUG_TRACE_CONFIGURE_FILE_SINK \
  185. Trace::TraceMedia("configuring '" + GetElementId(a_file_sink) + "'") ;
  186. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR \
  187. Trace::TraceMedia("configuring '" + GetElementId(a_compositor) + "'") ;
  188. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR_SINK \
  189. Trace::TraceMedia("configuring '" + GetPadId(sinkpad) + "'") ;
  190. # define DEBUG_TRACE_CONFIGURE_PREVIEW \
  191. Trace::TraceMedia("configuring '" + GetElementId(a_video_sink) + "' " + \
  192. ((is_active) ? "(active) " : "(inactive) ") + \
  193. String(preview_x) + "@" + String(preview_y) + " " + \
  194. String(preview_w) + "x" + String(preview_h) ) ;
  195. # define DEBUG_TRACE_CONFIGURE_TEST_AUDIO \
  196. Trace::TraceMedia("configuring '" + GetElementId(a_test_source) + "'") ;
  197. # define DEBUG_TRACE_CONFIGURE_X264ENC \
  198. Trace::TraceMedia("configuring '" + GetElementId(an_x264_encoder) + "'") ;
  199. # define DEBUG_TRACE_CONFIGURE_LAMEENC \
  200. Trace::TraceMedia("configuring '" + GetElementId(a_lame_encoder) + "'") ;
  201. # define DEBUG_TRACE_CONFIGURE_FLVMUX \
  202. Trace::TraceMedia("configuring '" + GetElementId(a_flvmuxer) + "'") ;
  203. # define DEBUG_TRACE_MAKE_ELEMENT \
  204. bool is_err = new_element == nullptr ; \
  205. String dbg = " '" + plugin_id + "' element '" + element_id + "'" ; \
  206. if (is_err) Trace::TraceError("error creating" + dbg) ; \
  207. else Trace::TraceMedia("created" + dbg) ;
  208. # define DEBUG_TRACE_MAKE_CAPS \
  209. if (new_caps == nullptr) Trace::TraceError("error creating caps") ;
  210. # define DEBUG_TRACE_ADD_ELEMENT \
  211. String dbg = " element '" + GetElementId(an_element) + \
  212. "' to '" + GetElementId(a_bin) + "'" ; \
  213. if (is_err) Trace::TraceError("error adding" + dbg) ; \
  214. else Trace::TraceMedia("added" + dbg) ;
  215. # define DEBUG_TRACE_REMOVE_ELEMENT_IN \
  216. String dbg = " element '" + GetElementId(an_element) + \
  217. "' from bin '" + GetElementId(a_bin) + "'" ; \
  218. if (!IsInBin(a_bin , an_element)) Trace::TraceWarning("can not remove" + dbg) ;
  219. # define DEBUG_TRACE_REMOVE_ELEMENT_OUT \
  220. if (is_err) Trace::TraceError("error removing" + dbg) ; \
  221. else Trace::TraceMedia("removed" + dbg) ;
  222. # define DEBUG_TRACE_DESTROY_ELEMENT \
  223. Trace::TraceMedia("destroying element '" + GetElementId(an_element) + "'") ;
  224. # define DEBUG_TRACE_ADD_BIN_IN \
  225. String dbg = " bin '" + GetElementId(a_bin) + "' to pipeline" ; \
  226. if (IsInPipeline(a_bin)) Trace::TraceWarning("can not add" + dbg + " - already in pipeline") ;
  227. # define DEBUG_TRACE_ADD_BIN_OUT \
  228. if (is_err) Trace::TraceError("error adding" + dbg) ; \
  229. else Trace::TraceMedia("added" + dbg) ;
  230. # define DEBUG_TRACE_REMOVE_BIN_IN \
  231. String dbg = " bin '" + GetElementId(a_bin) + "' from pipeline" ; \
  232. if (!IsInPipeline(a_bin)) Trace::TraceWarning("can not remove" + dbg + " - not in pipeline") ;
  233. # define DEBUG_TRACE_REMOVE_BIN_OUT \
  234. if (is_err) Trace::TraceError("error removing" + dbg) ; \
  235. else Trace::TraceMedia("removed" + dbg) ;
  236. # define DEBUG_TRACE_LINK_ELEMENTS \
  237. String dbg = " elements '" + GetElementId(source) + \
  238. "' and '" + GetElementId(sink) + "'" ; \
  239. if (is_err) Trace::TraceError("error linking" + dbg) ; \
  240. else Trace::TraceMedia("linked" + dbg) ;
  241. # define DEBUG_TRACE_LINK_PADS \
  242. GstElement* src_parent = gst_pad_get_parent_element(srcpad ) ; \
  243. GstElement* snk_parent = gst_pad_get_parent_element(sinkpad) ; \
  244. String src_parent_id = GetElementId(src_parent) ; \
  245. String snk_parent_id = GetElementId(snk_parent) ; \
  246. gst_object_unref(src_parent) ; gst_object_unref(snk_parent) ; \
  247. String dbg = " pads '" + src_parent_id + ":" + GetPadId(srcpad) + \
  248. "' and '" + snk_parent_id + ":" + GetPadId(sinkpad) + "'" ; \
  249. if (is_err) Trace::TraceError("error linking" + dbg) ; \
  250. else Trace::TraceMedia("linked" + dbg) ;
  251. # define DEBUG_TRACE_MAKE_GHOST_PAD \
  252. String dbg = " ghost pad '" + public_pad_id + "' on '" + template_id + \
  253. "' of '" + GetElementId(an_element) + "'" ; \
  254. if (is_err) Trace::TraceError("error creating" + dbg) ; \
  255. else Trace::TraceMedia("created" + dbg) ;
  256. # define DEBUG_TRACE_ADD_GHOST_PAD \
  257. String dbg = " ghost pad '" + GetPadId(public_pad) + \
  258. "' to '" + GetElementId(a_bin) + "'" ; \
  259. if (is_err) Trace::TraceError("error adding" + dbg) ; \
  260. else Trace::TraceMedia("added" + dbg) ;
  261. # define DEBUG_TRACE_GET_PAD \
  262. String dbg = pad_avail + " pad '" + template_id + \
  263. "' of '" + GetElementId(an_element) + "'" ; \
  264. if (is_err) Trace::TraceError("error getting " + dbg) ; \
  265. else Trace::TraceMedia("got " + dbg) ;
  266. # define DEBUG_TRACE_GET_STATIC_PAD String pad_avail = "static " ; DEBUG_TRACE_GET_PAD
  267. # define DEBUG_TRACE_GET_REQUEST_PAD String pad_avail = "request" ; DEBUG_TRACE_GET_PAD
  268. # define DEBUG_MAKE_GRAPHVIZ \
  269. String color = (DEBUG_ANSI_COLORS) ? "\033[1;34m" : "" ; \
  270. String cend = (DEBUG_ANSI_COLORS) ? "\033[0m" : "" ; \
  271. char* graph_name = std::getenv("AVCASTER_GRAPH_NAME") ; \
  272. Trace::TraceConfig(color + "creating graph " + String(graph_name) + cend) ; \
  273. GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(Pipeline) , GST_DEBUG_GRAPH_SHOW_ALL , graph_name) ;
  274. #else // DEBUG_TRACE
  275. # define DEBUG_TRACE_GST_INIT_PHASE_1 ;
  276. # define DEBUG_TRACE_GST_INIT_PHASE_2 ;
  277. # define DEBUG_TRACE_GST_INIT_PHASE_3 ;
  278. # define DEBUG_TRACE_GST_INIT_PHASE_4 ;
  279. # define DEBUG_TRACE_GST_INIT_PHASE_5 ;
  280. # define DEBUG_TRACE_GST_INIT_PHASE_6 ;
  281. # define DEBUG_TRACE_GST_INIT_PHASE_7 ;
  282. # define DEBUG_DUMP_MEDIA_SWITCHES ;
  283. # define DEBUG_TRACE_DISABLED_BINS ;
  284. # define DEBUG_TRACE_BUILD_SCREENCAP_BIN ;
  285. # define DEBUG_TRACE_BUILD_CAMERA_BIN ;
  286. # define DEBUG_TRACE_BUILD_TEXT_BIN ;
  287. # define DEBUG_TRACE_BUILD_IMAGE_BIN ;
  288. # define DEBUG_TRACE_BUILD_COMPOSITOR_BIN ;
  289. # define DEBUG_TRACE_BUILD_PREVIEW_BIN ;
  290. # define DEBUG_TRACE_BUILD_AUDIO_BIN ;
  291. # define DEBUG_TRACE_BUILD_MUXER_BIN ;
  292. # define DEBUG_TRACE_BUILD_OUTPUT_BIN ;
  293. # define DEBUG_TRACE_SET_GST_STATE ;
  294. # define DEBUG_TRACE_GST_ERROR_MESSAGE ;
  295. # define DEBUG_TRACE_UNHANDLED_MESSAGE ;
  296. # define DEBUG_TRACE_DUMP_MESSAGE_STRUCT ;
  297. # define DEBUG_TRACE_CONFIGURE_SCREENCAP_BIN ;
  298. # define DEBUG_TRACE_CONFIGURE_CAMERA_BIN ;
  299. # define DEBUG_TRACE_CONFIGURE_TEXT_BIN ;
  300. # define DEBUG_TRACE_CONFIGURE_IMAGE_BIN ;
  301. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR_BIN ;
  302. # define DEBUG_TRACE_CONFIGURE_PREVIEW_BIN ;
  303. # define DEBUG_TRACE_CONFIGURE_AUDIO_BIN ;
  304. # define DEBUG_TRACE_CONFIGURE_MUXER_BIN ;
  305. # define DEBUG_TRACE_CONFIGURE_OUTPUT_BIN ;
  306. # define DEBUG_TRACE_RECONFIGURE_IN ;
  307. # define DEBUG_TRACE_RECONFIGURE_OUT ;
  308. # define DEBUG_TRACE_CONFIGURE_CAPS ;
  309. # define DEBUG_TRACE_CONFIGURE_QUEUE ;
  310. # define DEBUG_TRACE_CONFIGURE_SCREEN ;
  311. # define DEBUG_TRACE_CONFIGURE_CAMERA ;
  312. # define DEBUG_TRACE_CONFIGURE_TEST_VIDEO ;
  313. # define DEBUG_TRACE_CONFIGURE_TEXT ;
  314. # define DEBUG_TRACE_CONFIGURE_FILE ;
  315. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR ;
  316. # define DEBUG_TRACE_CONFIGURE_COMPOSITOR_SINK ;
  317. # define DEBUG_TRACE_CONFIGURE_PREVIEW ;
  318. # define DEBUG_TRACE_CONFIGURE_TEST_AUDIO ;
  319. # define DEBUG_TRACE_CONFIGURE_X264ENC ;
  320. # define DEBUG_TRACE_CONFIGURE_LAMEENC ;
  321. # define DEBUG_TRACE_CONFIGURE_FLVMUX ;
  322. # define DEBUG_TRACE_MAKE_ELEMENT ;
  323. # define DEBUG_TRACE_MAKE_CAPS ;
  324. # define DEBUG_TRACE_ADD_ELEMENT ;
  325. # define DEBUG_TRACE_REMOVE_ELEMENT_IN ;
  326. # define DEBUG_TRACE_REMOVE_ELEMENT_OUT ;
  327. # define DEBUG_TRACE_DESTROY_ELEMENT ;
  328. # define DEBUG_TRACE_ADD_BIN_IN ;
  329. # define DEBUG_TRACE_ADD_BIN_OUT ;
  330. # define DEBUG_TRACE_REMOVE_BIN_IN ;
  331. # define DEBUG_TRACE_REMOVE_BIN_OUT ;
  332. # define DEBUG_TRACE_LINK_ELEMENTS ;
  333. # define DEBUG_TRACE_LINK_PADS ;
  334. # define DEBUG_TRACE_MAKE_GHOST_PAD ;
  335. # define DEBUG_TRACE_ADD_GHOST_PAD ;
  336. # define DEBUG_TRACE_GET_PAD ;
  337. # define DEBUG_TRACE_GET_STATIC_PAD ;
  338. # define DEBUG_TRACE_GET_REQUEST_PAD ;
  339. # define DEBUG_MAKE_GRAPHVIZ ;
  340. #endif // DEBUG_TRACE
  341. #endif // _TRACEGSTREAMER_H_