[tracker] tracker-extract-gstreamer: Do not treat 3GPP audio files as videos
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract-gstreamer: Do not treat 3GPP audio files as videos
- Date: Wed, 18 Nov 2009 16:07:28 +0000 (UTC)
commit b79b99bcbba4ae984ea994b37a5de0fd851a3dc2
Author: Jürg Billeter <j bitron ch>
Date: Wed Nov 18 16:57:55 2009 +0100
tracker-extract-gstreamer: Do not treat 3GPP audio files as videos
Fixes NB#130437.
src/tracker-extract/tracker-extract-gstreamer.c | 29 ++++++++++++++++++++++-
1 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index c0c8f41..5c032d3 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -89,7 +89,8 @@ long long int llroundl(long double x);
typedef enum {
EXTRACT_MIME_AUDIO,
EXTRACT_MIME_VIDEO,
- EXTRACT_MIME_IMAGE
+ EXTRACT_MIME_IMAGE,
+ EXTRACT_MIME_3GPP,
} ExtractMime;
typedef struct {
@@ -125,11 +126,14 @@ typedef struct {
static void extract_gstreamer_audio (const gchar *uri, TrackerSparqlBuilder *metadata);
static void extract_gstreamer_video (const gchar *uri, TrackerSparqlBuilder *metadata);
static void extract_gstreamer_image (const gchar *uri, TrackerSparqlBuilder *metadata);
+static void extract_gstreamer_3gpp (const gchar *uri, TrackerSparqlBuilder *metadata);
static TrackerExtractData data[] = {
{ "audio/*", extract_gstreamer_audio },
{ "video/*", extract_gstreamer_video },
{ "image/*", extract_gstreamer_image },
+ /* mime type guessing returns video/3gpp also for 3gpp audio files */
+ { "video/3gpp", extract_gstreamer_3gpp },
{ NULL, NULL }
};
@@ -443,6 +447,23 @@ extract_metadata (MetadataExtractor *extractor,
g_return_if_fail (metadata != NULL);
if (extractor->tagcache) {
+ if (extractor->mime == EXTRACT_MIME_3GPP) {
+ gchar *video_codec = NULL, *audio_codec = NULL;
+
+ gst_tag_list_get_string (extractor->tagcache, GST_TAG_VIDEO_CODEC, &video_codec);
+ gst_tag_list_get_string (extractor->tagcache, GST_TAG_AUDIO_CODEC, &audio_codec);
+
+ if (audio_codec && !video_codec) {
+ extractor->mime = EXTRACT_MIME_AUDIO;
+ } else {
+ /* default to video */
+ extractor->mime = EXTRACT_MIME_VIDEO;
+ }
+
+ g_free (video_codec);
+ g_free (audio_codec);
+ }
+
/* General */
if (extractor->mime == EXTRACT_MIME_AUDIO || extractor->mime == EXTRACT_MIME_VIDEO) {
gchar *performer = NULL, *artist = NULL;
@@ -964,6 +985,12 @@ extract_gstreamer_image (const gchar *uri, TrackerSparqlBuilder *metadata)
tracker_extract_gstreamer (uri, metadata, EXTRACT_MIME_IMAGE);
}
+static void
+extract_gstreamer_3gpp (const gchar *uri, TrackerSparqlBuilder *metadata)
+{
+ tracker_extract_gstreamer (uri, metadata, EXTRACT_MIME_3GPP);
+}
+
TrackerExtractData *
tracker_get_extract_data (void)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]