diff options
Diffstat (limited to 'app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch')
| -rw-r--r-- | app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch b/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch new file mode 100644 index 00000000000..ee1bfc02602 --- /dev/null +++ b/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch @@ -0,0 +1,166 @@ +diff -ruN strigi-0.7.5.orig/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp strigi-0.7.5/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp +--- strigi-0.7.5.orig/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp 2011-06-02 11:29:26.000000000 +0200 ++++ strigi-0.7.5/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp 2011-08-02 23:25:04.936181179 +0200 +@@ -1,6 +1,7 @@ + /* This file is part of Strigi Desktop Search + * + * Copyright (C) 2010 Evgeny Egorochkin <phreedom.stdin@gmail.com> ++ * Copyright (C) 2011 Tirtha Chatterjee <tirtha.p.chatterjee@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public +@@ -348,7 +349,7 @@ + if ((size = in->size()) >= 0) + ar.addValue(factory->durationProperty, (uint32_t)(size/(fc->bit_rate/8))); + } +- if(fc->nb_streams==1 && fc->streams[0]->codec->codec_type == CODEC_TYPE_AUDIO) { ++ if(fc->nb_streams==1 && fc->streams[0]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { + ar.addValue(factory->typeProperty, NFO "Audio"); + ar.addValue(factory->typeProperty, NMM_DRAFT "MusicPiece"); + } else { +@@ -359,7 +360,7 @@ + const AVStream &stream = *fc->streams[i]; + const AVCodecContext &codec = *stream.codec; + +- if (codec.codec_type == CODEC_TYPE_AUDIO || codec.codec_type == CODEC_TYPE_VIDEO) { ++ if (codec.codec_type == AVMEDIA_TYPE_AUDIO || codec.codec_type == AVMEDIA_TYPE_VIDEO) { + const string streamuri = ar.newAnonymousUri(); + ar.addValue(factory->hasPartProperty, streamuri); + ar.addTriplet(streamuri, partOfPropertyName, ar.path()); +@@ -370,8 +371,16 @@ + outs << (stream.duration * stream.time_base.num / stream.time_base.den); + ar.addTriplet(streamuri, durationPropertyName,outs.str()); + } +- if (size_t len = strlen(stream.language)) { +- ar.addTriplet(streamuri, languagePropertyName, string(stream.language, len)); ++ ++ //FIXME we must stop using the deprecated fuction av_metadata_get and use ++ // av_dict_get once we are able to detect the version of FFMpeg being used ++ // using version macros. same goes for all occurences of this function. ++ AVMetadataTag *entry = av_metadata_get(stream.metadata, "language", NULL, 0); ++ if (entry != NULL) { ++ const char *languageValue = entry->value; ++ if (size_t len = strlen(languageValue)) { ++ ar.addTriplet(streamuri, languagePropertyName, string(languageValue, len)); ++ } + } + const AVCodec *p = avcodec_find_decoder(codec.codec_id); + if (p) { +@@ -408,7 +417,7 @@ + ar.addTriplet(streamuri, bitratePropertyName, outs.str()); + } + +- if (codec.codec_type == CODEC_TYPE_AUDIO) { ++ if (codec.codec_type == AVMEDIA_TYPE_AUDIO) { + + ar.addTriplet(streamuri, typePropertyName, audioClassName); + if (codec.channels) { +@@ -458,36 +467,83 @@ + } + + // Tags +- +- if (int32_t len = strlen(fc->title)) { +- ar.addValue(factory->titleProperty, string(fc->title, len) ); ++ ++ AVMetadataTag *entry = av_metadata_get(fc->metadata, "title", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *titleValue = entry->value; ++ if (int32_t len = strlen(titleValue)) { ++ ar.addValue(factory->titleProperty, string(titleValue, len) ); ++ } ++ } ++ ++ entry = av_metadata_get(fc->metadata, "author", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *authorValue = entry->value; ++ if (int32_t len = strlen(authorValue)) { ++ const string creatoruri = ar.newAnonymousUri(); ++ ar.addValue(factory->creatorProperty, creatoruri); ++ ar.addTriplet(creatoruri, typePropertyName, contactClassName); ++ ar.addTriplet(creatoruri, fullnamePropertyName, string(authorValue, len) ); ++ } ++ } ++ ++ entry = av_metadata_get(fc->metadata, "copyright", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *copyrightValue = entry->value; ++ if (int32_t len = strlen(copyrightValue)) { ++ ar.addValue(factory->copyrightProperty, string(copyrightValue, len) ); ++ } + } +- if (int32_t len = strlen(fc->author)) { +- const string creatoruri = ar.newAnonymousUri(); +- ar.addValue(factory->creatorProperty, creatoruri); +- ar.addTriplet(creatoruri, typePropertyName, contactClassName); +- ar.addTriplet(creatoruri, fullnamePropertyName, string(fc->author, len) ); +- } +- if (int32_t len = strlen(fc->copyright)) { +- ar.addValue(factory->copyrightProperty, string(fc->copyright, len) ); +- } +- if (int32_t len = strlen(fc->comment)) { +- ar.addValue(factory->commentProperty, string(fc->comment, len) ); +- } +- if (int32_t len = strlen(fc->album)) { +- const string album = ar.newAnonymousUri(); +- ar.addValue(factory->albumProperty, album); ++ ++ entry = av_metadata_get(fc->metadata, "comment", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *commentValue = entry->value; ++ if (int32_t len = strlen(commentValue)) { ++ ar.addValue(factory->commentProperty, string(commentValue, len) ); ++ } ++ } ++ ++ entry = av_metadata_get(fc->metadata, "album", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *albumValue = entry->value; ++ if (int32_t len = strlen(albumValue)) { ++ const string album = ar.newAnonymousUri(); ++ ar.addValue(factory->albumProperty, album); + ar.addTriplet(album, typePropertyName, albumClassName); +- ar.addTriplet(album, titlePropertyName, string(fc->album, len) ); ++ ar.addTriplet(album, titlePropertyName, string(albumValue, len) ); ++ } + } +- if (int32_t len = strlen(fc->genre)) { +- ar.addValue(factory->genreProperty, string(fc->genre, len) ); ++ ++ entry = av_metadata_get(fc->metadata, "genre", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *genreValue = entry->value; ++ if (int32_t len = strlen(genreValue)) { ++ ar.addValue(factory->genreProperty, string(genreValue, len) ); ++ } + } +- if (fc->track) { +- ar.addValue(factory->trackProperty, fc->track); ++ ++ entry = av_metadata_get(fc->metadata, "track", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *trackValue = entry->value; ++ if (int32_t len = strlen(trackValue)) { ++ ar.addValue(factory->trackProperty, string(trackValue, len) ); ++ } + } +- if (fc->year) { +- ar.addValue(factory->createdProperty, fc->year); ++ ++ entry = av_metadata_get(fc->metadata, "year", NULL, 0); ++ if (entry != NULL) ++ { ++ const char *yearValue = entry->value; ++ if (int32_t len = strlen(yearValue)) { ++ ar.addValue(factory->createdProperty, string(yearValue, len) ); ++ } + } + + av_close_input_stream(fc); |
