[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r23309 - Extractor/src/plugins
From: |
gnunet |
Subject: |
[GNUnet-SVN] r23309 - Extractor/src/plugins |
Date: |
Sun, 19 Aug 2012 15:53:00 +0200 |
Author: LRN
Date: 2012-08-19 15:53:00 +0200 (Sun, 19 Aug 2012)
New Revision: 23309
Modified:
Extractor/src/plugins/gstreamer_extractor.c
Log:
Ignore certain struct fields; tell video and image apart
Modified: Extractor/src/plugins/gstreamer_extractor.c
===================================================================
--- Extractor/src/plugins/gstreamer_extractor.c 2012-08-19 13:52:57 UTC (rev
23308)
+++ Extractor/src/plugins/gstreamer_extractor.c 2012-08-19 13:53:00 UTC (rev
23309)
@@ -615,7 +615,8 @@
STREAM_TYPE_AUDIO = 1,
STREAM_TYPE_VIDEO = 2,
STREAM_TYPE_SUBTITLE = 3,
- STREAM_TYPE_CONTAINER = 4
+ STREAM_TYPE_CONTAINER = 4,
+ STREAM_TYPE_IMAGE = 5
};
typedef struct
@@ -652,6 +653,10 @@
static GstDiscoverer *dc;
static PrivStruct *ps;
+static GQuark *audio_quarks;
+static GQuark *video_quarks;
+static GQuark *subtitle_quarks;
+
static void
_new_discovered_uri (GstDiscoverer * dc, GstDiscovererInfo * info, GError *
err, PrivStruct * ps)
{
@@ -690,6 +695,24 @@
g_signal_connect (dc, "finished", G_CALLBACK (_discoverer_finished), ps);
g_signal_connect (dc, "source-setup", G_CALLBACK (_source_setup), ps);
+ audio_quarks = g_new0 (GQuark, 4);
+ audio_quarks[0] = g_quark_from_string ("rate");
+ audio_quarks[1] = g_quark_from_string ("channels");
+ audio_quarks[2] = g_quark_from_string ("depth");
+ audio_quarks[3] = g_quark_from_string (NULL);
+
+ video_quarks = g_new0 (GQuark, 6);
+ video_quarks[0] = g_quark_from_string ("width");
+ video_quarks[1] = g_quark_from_string ("height");
+ video_quarks[2] = g_quark_from_string ("framerate");
+ video_quarks[3] = g_quark_from_string ("max-framerate");
+ video_quarks[4] = g_quark_from_string ("pixel-aspect-ratio");
+ video_quarks[5] = g_quark_from_string (NULL);
+
+ subtitle_quarks = g_new0 (GQuark, 2);
+ subtitle_quarks[0] = g_quark_from_string ("language-code");
+ subtitle_quarks[1] = g_quark_from_string (NULL);
+
return TRUE;
}
@@ -863,7 +886,31 @@
const gchar *field_name = g_quark_to_string (field_id);
const gchar *type_name = g_type_name (G_VALUE_TYPE (value));
GType gst_fraction = GST_TYPE_FRACTION;
+ GQuark *quark;
+ switch (ps->st)
+ {
+ case STREAM_TYPE_AUDIO:
+ for (quark = audio_quarks; *quark != 0; quark++)
+ if (*quark == field_id)
+ return TRUE;
+ break;
+ case STREAM_TYPE_VIDEO:
+ case STREAM_TYPE_IMAGE:
+ for (quark = video_quarks; *quark != 0; quark++)
+ if (*quark == field_id)
+ return TRUE;
+ break;
+ case STREAM_TYPE_SUBTITLE:
+ for (quark = subtitle_quarks; *quark != 0; quark++)
+ if (*quark == field_id)
+ return TRUE;
+ break;
+ case STREAM_TYPE_CONTAINER:
+ break;
+ }
+
+
/* TODO: check a list of known quarks, use specific EXTRACTOR_MetaType */
switch (G_VALUE_TYPE (value))
{
@@ -1093,10 +1140,21 @@
caps = gst_discoverer_stream_info_get_caps (info);
+ if (GST_IS_DISCOVERER_AUDIO_INFO (info))
+ ps->st = STREAM_TYPE_AUDIO;
+ else if (GST_IS_DISCOVERER_VIDEO_INFO (info))
+ ps->st = STREAM_TYPE_VIDEO;
+ else if (GST_IS_DISCOVERER_SUBTITLE_INFO (info))
+ ps->st = STREAM_TYPE_SUBTITLE;
+ else if (GST_IS_DISCOVERER_CONTAINER_INFO (info))
+ ps->st = STREAM_TYPE_CONTAINER;
+
if (caps)
{
GstStructure *structure = gst_caps_get_structure (caps, 0);
const gchar *structname = gst_structure_get_name (structure);
+ if (g_str_has_prefix (structname, "image/"))
+ ps->st = STREAM_TYPE_IMAGE;
ps->time_to_leave = ps->ec->proc (ps->ec->cls, "gstreamer",
EXTRACTOR_METATYPE_MIMETYPE, EXTRACTOR_METAFORMAT_UTF8, "text/plain",
(const char *) structname, strlen (structname) + 1);
@@ -1108,7 +1166,10 @@
}
if (ps->time_to_leave)
+ {
+ ps->st = STREAM_TYPE_NONE;
return;
+ }
misc = gst_discoverer_stream_info_get_misc (info);
if (misc)
@@ -1117,22 +1178,17 @@
}
if (ps->time_to_leave)
+ {
+ ps->st = STREAM_TYPE_NONE;
return;
+ }
tags = gst_discoverer_stream_info_get_tags (info);
if (tags)
{
- if (GST_IS_DISCOVERER_AUDIO_INFO (info))
- ps->st = STREAM_TYPE_AUDIO;
- else if (GST_IS_DISCOVERER_VIDEO_INFO (info))
- ps->st = STREAM_TYPE_VIDEO;
- else if (GST_IS_DISCOVERER_SUBTITLE_INFO (info))
- ps->st = STREAM_TYPE_SUBTITLE;
- else if (GST_IS_DISCOVERER_CONTAINER_INFO (info))
- ps->st = STREAM_TYPE_CONTAINER;
gst_tag_list_foreach (tags, send_tag_foreach, ps);
- ps->st = STREAM_TYPE_NONE;
}
+ ps->st = STREAM_TYPE_NONE;
if (ps->time_to_leave)
return;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r23309 - Extractor/src/plugins,
gnunet <=