codecparsers: fix debug category initialisation
authorTim-Philipp Müller <tim@centricular.com>
Sat, 15 Nov 2014 22:58:49 +0000 (22:58 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 25 May 2019 13:29:25 +0000 (15:29 +0200)
Make thread-safe.

gst-libs/gst/codecparsers/gsth264parser.c
gst-libs/gst/codecparsers/gsth265parser.c
gst-libs/gst/codecparsers/gstmpegvideoparser.c
gst-libs/gst/codecparsers/gstvp8parser.c

index acc6fd9..5214db0 100644 (file)
 #include <gst/base/gstbitreader.h>
 #include <string.h>
 
-GST_DEBUG_CATEGORY_STATIC (h264_parser_debug);
-#define GST_CAT_DEFAULT h264_parser_debug
+#ifndef GST_DISABLE_GST_DEBUG
+#define GST_CAT_DEFAULT gst_h264_debug_category_get()
+static GstDebugCategory *
+gst_h264_debug_category_get (void)
+{
+  static gsize cat_gonce = 0;
+
+  if (g_once_init_enter (&cat_gonce)) {
+    GstDebugCategory *cat = NULL;
+
+    GST_DEBUG_CATEGORY_INIT (cat, "codecparsers_h264", 0, "h264 parse library");
 
-static gboolean initialized = FALSE;
-#define INITIALIZE_DEBUG_CATEGORY \
-  if (!initialized) { \
-    GST_DEBUG_CATEGORY_INIT (h264_parser_debug, "codecparsers_h264", 0, \
-        "h264 parser library"); \
-    initialized = TRUE; \
+    g_once_init_leave (&cat_gonce, (gsize) cat);
   }
 
+  return (GstDebugCategory *) cat_gonce;
+}
+#endif /* GST_DISABLE_GST_DEBUG */
+
 /**** Default scaling_lists according to Table 7-2 *****/
 static const guint8 default_4x4_intra[16] = {
   6, 13, 13, 20, 20, 20, 28, 28, 28, 28, 32, 32,
@@ -1267,7 +1275,6 @@ gst_h264_nal_parser_new (void)
   GstH264NalParser *nalparser;
 
   nalparser = g_slice_new0 (GstH264NalParser);
-  INITIALIZE_DEBUG_CATEGORY;
 
   return nalparser;
 }
@@ -1800,7 +1807,6 @@ gst_h264_parse_sps (GstH264NalUnit * nalu, GstH264SPS * sps,
 {
   NalReader nr;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing SPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
@@ -1887,7 +1893,6 @@ gst_h264_parse_subset_sps (GstH264NalUnit * nalu, GstH264SPS * sps,
 {
   NalReader nr;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing Subset SPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
@@ -1936,7 +1941,6 @@ gst_h264_parse_pps (GstH264NalParser * nalparser, GstH264NalUnit * nalu,
   guint8 pic_scaling_matrix_present_flag;
   gint qp_bd_offset;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing PPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
index 8d5c2d4..204835e 100644 (file)
 #include <string.h>
 #include <math.h>
 
-GST_DEBUG_CATEGORY_STATIC (h265_parser_debug);
-#define GST_CAT_DEFAULT h265_parser_debug
+#ifndef GST_DISABLE_GST_DEBUG
+#define GST_CAT_DEFAULT gst_h265_debug_category_get()
+static GstDebugCategory *
+gst_h265_debug_category_get (void)
+{
+  static gsize cat_gonce = 0;
+
+  if (g_once_init_enter (&cat_gonce)) {
+    GstDebugCategory *cat = NULL;
+
+    GST_DEBUG_CATEGORY_INIT (cat, "codecparsers_h265", 0, "h265 parse library");
 
-static gboolean initialized = FALSE;
-#define INITIALIZE_DEBUG_CATEGORY \
-  if (!initialized) { \
-    GST_DEBUG_CATEGORY_INIT (h265_parser_debug, "codecparsers_h265", 0, \
-        "h265 parser library"); \
-    initialized = TRUE; \
+    g_once_init_leave (&cat_gonce, (gsize) cat);
   }
 
+  return (GstDebugCategory *) cat_gonce;
+}
+#endif /* GST_DISABLE_GST_DEBUG */
+
 /**** Default scaling_lists according to Table 7-5 and 7-6 *****/
 
 /* Table 7-5 */
@@ -1239,7 +1247,6 @@ gst_h265_parser_new (void)
   GstH265Parser *parser;
 
   parser = g_slice_new0 (GstH265Parser);
-  INITIALIZE_DEBUG_CATEGORY;
 
   return parser;
 }
@@ -1514,7 +1521,6 @@ gst_h265_parse_vps (GstH265NalUnit * nalu, GstH265VPS * vps)
   NalReader nr;
   guint i, j;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing VPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
@@ -1693,7 +1699,6 @@ gst_h265_parse_sps (GstH265Parser * parser, GstH265NalUnit * nalu,
   guint subhc[] = { 1, 2, 1, 1, 1 };
   GstH265VUIParams *vui = NULL;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing SPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
@@ -1916,7 +1921,6 @@ gst_h265_parse_pps (GstH265Parser * parser, GstH265NalUnit * nalu,
   guint32 CtbSizeY, MinCbLog2SizeY, CtbLog2SizeY, MaxBitDepthY, MaxBitDepthC;
   guint8 i;
 
-  INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("parsing PPS");
 
   nal_reader_init (&nr, nalu->data + nalu->offset + nalu->header_bytes,
index 408ae03..d828ecf 100644 (file)
@@ -119,13 +119,25 @@ static const VLCTable mpeg2_mbaddr_vlc_table[] = {
   {GST_MPEG_VIDEO_MACROBLOCK_ESCAPE, 0x08, 11}
 };
 
-GST_DEBUG_CATEGORY_STATIC (mpegvideo_parser_debug);
-#define GST_CAT_DEFAULT mpegvideo_parser_debug
+#ifndef GST_DISABLE_GST_DEBUG
+#define GST_CAT_DEFAULT gst_mpegvideo_debug_category_get()
+static GstDebugCategory *
+gst_mpegvideo_debug_category_get (void)
+{
+  static gsize cat_gonce = 0;
+
+  if (g_once_init_enter (&cat_gonce)) {
+    GstDebugCategory *cat = NULL;
 
-#define INITIALIZE_DEBUG_CATEGORY \
-  GST_DEBUG_CATEGORY_INIT (mpegvideo_parser_debug, "codecparsers_mpegvideo", \
-      0, "Mpegvideo parser library");
+    GST_DEBUG_CATEGORY_INIT (cat, "codecparsers_mpegvideo", 0,
+        "mpegvideo parser library");
 
+    g_once_init_leave (&cat_gonce, (gsize) cat);
+  }
+
+  return (GstDebugCategory *) cat_gonce;
+}
+#endif /* GST_DISABLE_GST_DEBUG */
 
 /* Set the Pixel Aspect Ratio in our hdr from a ASR code in the data */
 static void
@@ -233,8 +245,6 @@ gst_mpeg_video_parse (GstMpegVideoPacket * packet,
   gint off;
   GstByteReader br;
 
-  INITIALIZE_DEBUG_CATEGORY;
-
   if (size <= offset) {
     GST_DEBUG ("Can't parse from offset %d, buffer is to small", offset);
     return FALSE;
@@ -300,8 +310,6 @@ gst_mpeg_video_packet_parse_sequence_header (const GstMpegVideoPacket * packet,
   if (packet->size < 8)
     return FALSE;
 
-  INITIALIZE_DEBUG_CATEGORY;
-
   gst_bit_reader_init (&br, &packet->data[packet->offset], packet->size);
 
   /* Setting the height/width codes */
index c3345e5..7176476 100644 (file)
 #include "gstvp8rangedecoder.h"
 #include "vp8utils.h"
 
-GST_DEBUG_CATEGORY_STATIC (vp8_parser_debug);
-#define GST_CAT_DEFAULT vp8_parser_debug
-
-#define INITIALIZE_DEBUG_CATEGORY ensure_debug_category ()
-static void
-ensure_debug_category (void)
-{
 #ifndef GST_DISABLE_GST_DEBUG
-  static gsize is_initialized;
+#define GST_CAT_DEFAULT gst_vp8_debug_category_get()
+static GstDebugCategory *
+gst_vp8_debug_category_get (void)
+{
+  static gsize cat_gonce = 0;
 
-  if (g_once_init_enter (&is_initialized)) {
-    GST_DEBUG_CATEGORY_INIT (vp8_parser_debug, "codecparsers_vp8", 0,
-        "vp8 parser library");
-    g_once_init_leave (&is_initialized, TRUE);
+  if (g_once_init_enter (&cat_gonce)) {
+    GstDebugCategory *cat = NULL;
+
+    GST_DEBUG_CATEGORY_INIT (cat, "codecparsers_vp8", 0, "vp8 parser library");
+
+    g_once_init_leave (&cat_gonce, (gsize) cat);
   }
-#endif
+
+  return (GstDebugCategory *) cat_gonce;
 }
+#endif /* GST_DISABLE_GST_DEBUG */
 
 static GstVp8MvProbs vp8_mv_update_probs;
 static GstVp8TokenProbs vp8_token_update_probs;
@@ -529,7 +530,6 @@ gst_vp8_parser_parse_frame_header (GstVp8Parser * parser,
   GstVp8RangeDecoderState rd_state;
   GstVp8ParserResult result;
 
-  ensure_debug_category ();
   ensure_prob_tables ();
 
   g_return_val_if_fail (frame_hdr != NULL, GST_VP8_PARSER_ERROR);