use macro to hash lookup
authorThomas Vander Stichele <thomas@apestaart.org>
Thu, 8 Jul 2004 14:38:48 +0000 (14:38 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Thu, 8 Jul 2004 14:38:48 +0000 (14:38 +0000)
Original commit message from CVS:
use macro to hash lookup

ChangeLog
gst-libs/gst/play/play.c

index cbdb42a4b96ff9b479c4b0774839c76bfe9a2d8f..9ff66e8c38456b0da3d5ab2cb76788b13626db0a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * gst-libs/gst/play/play.c: (gst_play_set_location),
+       (gst_play_set_data_src), (gst_play_set_video_sink),
+       (gst_play_set_audio_sink), (gst_play_set_visualization),
+       (gst_play_connect_visualization), (gst_play_get_framerate):
+         use a macro to look up elements from hash table
+
 2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
 
        * gst-libs/gst/play/play.c: (gst_play_pipeline_setup),
index 892270bc011bdfb3a11a629846127a0a4559daec..b205780c8954e03c8e238ec547b6f282a006d65a 100644 (file)
@@ -131,6 +131,12 @@ G_STMT_START {                                                     \
     return FALSE;                                              \
 } G_STMT_END
 
+#define GST_PLAY_HASH_LOOKUP(element, key, retval_if_fail)     \
+G_STMT_START {                                                 \
+  (element) = g_hash_table_lookup (play->priv->elements, (key));\
+  if (!element)                                                        \
+    return (retval_if_fail);                                   \
+} G_STMT_END
 
 /* setup parts of the pipeline
  * only put decoding part in the thread
@@ -749,23 +755,13 @@ gst_play_set_location (GstPlay * play, const char *location)
       return FALSE;
   }
 
-  work_thread = g_hash_table_lookup (play->priv->elements, "work_thread");
-  if (!GST_IS_ELEMENT (work_thread))
-    return FALSE;
-  source = g_hash_table_lookup (play->priv->elements, "source");
-  if (!GST_IS_ELEMENT (source))
-    return FALSE;
-  autoplugger = g_hash_table_lookup (play->priv->elements, "autoplugger");
-  if (!GST_IS_ELEMENT (autoplugger))
-    return FALSE;
-  audioconvert = g_hash_table_lookup (play->priv->elements, "audioconvert");
-  if (!GST_IS_ELEMENT (audioconvert))
-    return FALSE;
-  identity = g_hash_table_lookup (play->priv->elements, "identity");
-  if (!GST_IS_ELEMENT (identity))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (work_thread, "work_thread", FALSE);
+  GST_PLAY_HASH_LOOKUP (source, "source", FALSE);
+  GST_PLAY_HASH_LOOKUP (autoplugger, "autoplugger", FALSE);
+  GST_PLAY_HASH_LOOKUP (audioconvert, "audioconvert", FALSE);
+  GST_PLAY_HASH_LOOKUP (identity, "identity", FALSE);
 
-  /* Spider can autoplugg only once. We remove the actual one and put a new
+  /* Spider can autoplug only once. We remove the actual one and put a new
      autoplugger */
   gst_element_unlink (source, autoplugger);
   gst_element_unlink (autoplugger, identity);
@@ -901,15 +897,9 @@ gst_play_set_data_src (GstPlay * play, GstElement * data_src)
   }
 
   /* Getting needed objects */
-  work_thread = g_hash_table_lookup (play->priv->elements, "work_thread");
-  if (!GST_IS_ELEMENT (work_thread))
-    return FALSE;
-  old_data_src = g_hash_table_lookup (play->priv->elements, "source");
-  if (!GST_IS_ELEMENT (old_data_src))
-    return FALSE;
-  autoplugger = g_hash_table_lookup (play->priv->elements, "autoplugger");
-  if (!GST_IS_ELEMENT (autoplugger))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (work_thread, "work_thread", FALSE);
+  GST_PLAY_HASH_LOOKUP (old_data_src, "source", FALSE);
+  GST_PLAY_HASH_LOOKUP (autoplugger, "autoplugger", FALSE);
 
   /* Unlinking old source from autoplugger, removing it from pipeline, adding
      the new one and connecting it to autoplugger FIXME: we should put a new
@@ -954,15 +944,9 @@ gst_play_set_video_sink (GstPlay * play, GstElement * video_sink)
   }
 
   /* Getting needed objects */
-  video_thread = g_hash_table_lookup (play->priv->elements, "video_thread");
-  if (!GST_IS_ELEMENT (video_thread))
-    return FALSE;
-  old_video_sink = g_hash_table_lookup (play->priv->elements, "video_sink");
-  if (!GST_IS_ELEMENT (old_video_sink))
-    return FALSE;
-  video_scaler = g_hash_table_lookup (play->priv->elements, "video_scaler");
-  if (!GST_IS_ELEMENT (video_scaler))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (video_thread, "video_thread", FALSE);
+  GST_PLAY_HASH_LOOKUP (old_video_sink, "video_sink", FALSE);
+  GST_PLAY_HASH_LOOKUP (video_scaler, "video_scaler", FALSE);
 
   /* Unlinking old video sink from video scaler, removing it from pipeline,
      adding the new one and linking it */
@@ -1021,15 +1005,9 @@ gst_play_set_audio_sink (GstPlay * play, GstElement * audio_sink)
   }
 
   /* Getting needed objects */
-  old_audio_sink = g_hash_table_lookup (play->priv->elements, "audio_sink");
-  if (!GST_IS_ELEMENT (old_audio_sink))
-    return FALSE;
-  audio_thread = g_hash_table_lookup (play->priv->elements, "audio_thread");
-  if (!GST_IS_ELEMENT (audio_thread))
-    return FALSE;
-  volume = g_hash_table_lookup (play->priv->elements, "volume");
-  if (!GST_IS_ELEMENT (volume))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (audio_thread, "audio_thread", FALSE);
+  GST_PLAY_HASH_LOOKUP (volume, "volume", FALSE);
+  GST_PLAY_HASH_LOOKUP (old_audio_sink, "audio_sink", FALSE);
 
   /* Unlinking old audiosink, removing it from pipeline, putting the new one
      and linking it */
@@ -1075,18 +1053,10 @@ gst_play_set_visualization (GstPlay * play, GstElement * vis_element)
   g_return_val_if_fail (GST_IS_ELEMENT (vis_element), FALSE);
 
   /* Getting needed objects */
-  vis_bin = g_hash_table_lookup (play->priv->elements, "vis_bin");
-  if (!GST_IS_ELEMENT (vis_bin))
-    return FALSE;
-  vis_queue = g_hash_table_lookup (play->priv->elements, "vis_queue");
-  if (!GST_IS_ELEMENT (vis_queue))
-    return FALSE;
-  old_vis_element = g_hash_table_lookup (play->priv->elements, "vis_element");
-  if (!GST_IS_ELEMENT (old_vis_element))
-    return FALSE;
-  vis_cs = g_hash_table_lookup (play->priv->elements, "vis_cs");
-  if (!GST_IS_ELEMENT (vis_cs))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (vis_bin, "vis_bin", FALSE);
+  GST_PLAY_HASH_LOOKUP (vis_queue, "vis_queue", FALSE);
+  GST_PLAY_HASH_LOOKUP (old_vis_element, "vis_element", FALSE);
+  GST_PLAY_HASH_LOOKUP (vis_cs, "vis_cs", FALSE);
 
   /* We bring back the pipeline to PAUSED */
   if (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING) {
@@ -1140,24 +1110,13 @@ gst_play_connect_visualization (GstPlay * play, gboolean connect)
   return TRUE;
 
   /* Getting needed objects */
-  video_thread = g_hash_table_lookup (play->priv->elements, "video_thread");
-  if (!GST_IS_ELEMENT (video_thread))
-    return FALSE;
-  vis_bin = g_hash_table_lookup (play->priv->elements, "vis_bin");
-  if (!GST_IS_ELEMENT (vis_bin))
-    return FALSE;
-  vis_queue = g_hash_table_lookup (play->priv->elements, "vis_queue");
-  if (!GST_IS_ELEMENT (vis_queue))
-    return FALSE;
-  video_switch = g_hash_table_lookup (play->priv->elements, "video_switch");
-  if (!GST_IS_ELEMENT (video_switch))
-    return FALSE;
-  identity = g_hash_table_lookup (play->priv->elements, "identity");
-  if (!GST_IS_ELEMENT (identity))
-    return FALSE;
-  tee_pad1 = g_hash_table_lookup (play->priv->elements, "tee_pad1");
-  if (!GST_IS_PAD (tee_pad1))
-    return FALSE;
+  GST_PLAY_HASH_LOOKUP (video_thread, "video_thread", FALSE);
+  GST_PLAY_HASH_LOOKUP (vis_bin, "vis_bin", FALSE);
+  GST_PLAY_HASH_LOOKUP (vis_queue, "vis_queue", FALSE);
+  GST_PLAY_HASH_LOOKUP (video_switch, "video_switch", FALSE);
+  GST_PLAY_HASH_LOOKUP (identity, "identity", FALSE);
+
+  GST_PLAY_HASH_LOOKUP (tee_pad1, "tee_pad1", FALSE);
 
   vis_queue_pad = gst_element_get_pad (vis_queue, "sink");
 
@@ -1246,9 +1205,7 @@ gst_play_get_framerate (GstPlay * play)
 
   g_return_val_if_fail (GST_IS_PLAY (play), 0);
 
-  video_element = g_hash_table_lookup (play->priv->elements, "video_sink");
-  if (!GST_IS_ELEMENT (video_element))
-    return 0;
+  GST_PLAY_HASH_LOOKUP (video_element, "video_sink", 0);
   video_pad = gst_element_get_pad (video_element, "sink");
   if (!GST_IS_PAD (video_pad))
     return 0;