00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "taglist.h"
00021 #include "../QGlib/string_p.h"
00022 #include <gst/gsttaglist.h>
00023 #include <gst/gstvalue.h>
00024
00025 #include <QtCore/QDebug>
00026 #include <QtCore/QDate>
00027 #include <QGst/Buffer>
00028
00029 namespace QGst {
00030
00031 QString getStringTag(GstTagList * list, const gchar * tag, int index)
00032 {
00033 gchar * value;
00034 if (gst_tag_list_get_string_index(list, tag, index, &value)) {
00035 return QGlib::Private::stringFromGCharPtr(value);
00036 }
00037 return QString::null;
00038 }
00039
00040 quint32 getUintTag(GstTagList * list, const gchar * tag, int index)
00041 {
00042 guint value = 0;
00043 gst_tag_list_get_uint_index(list, tag, index, &value);
00044 return value;
00045 }
00046
00047 double getDoubleTag(GstTagList * list, const gchar * tag, int index)
00048 {
00049 double value = 0;
00050 gst_tag_list_get_double_index(list, tag, index, &value);
00051 return value;
00052 }
00053
00054 QGst::BufferPtr getBufferTag(GstTagList * list, const gchar * tag, int index)
00055 {
00056 GstBuffer * value = 0;
00057 gst_tag_list_get_buffer_index(list, tag, index, &value);
00058
00059 return QGst::BufferPtr::wrap(value, false);
00060 }
00061
00062 #ifndef DOXYGEN_RUN
00063
00064 struct QTGSTREAMER_NO_EXPORT TagList::Data : public QSharedData
00065 {
00066 Data();
00067 Data(const GstTagList *tl);
00068 Data(const Data & other);
00069 ~Data();
00070
00071 GstTagList *taglist;
00072 };
00073
00074 TagList::Data::Data()
00075 : QSharedData()
00076 {
00077 taglist = gst_tag_list_new();
00078 }
00079
00080 TagList::Data::Data(const GstTagList *tl)
00081 : QSharedData()
00082 {
00083 if (tl && gst_is_tag_list(tl)) {
00084 taglist = gst_tag_list_copy(tl);
00085 } else {
00086 taglist = gst_tag_list_new();
00087 }
00088 }
00089
00090 TagList::Data::Data(const TagList::Data & other)
00091 : QSharedData(other)
00092 {
00093 taglist = gst_tag_list_copy(other.taglist);
00094 }
00095
00096 TagList::Data::~Data()
00097 {
00098 gst_tag_list_free(taglist);
00099 }
00100
00101 #endif //DOXYGEN_RUN
00102
00103 TagList::TagList()
00104 : d(new Data)
00105 {
00106 }
00107
00108 TagList::TagList(const GstTagList *taglist)
00109 : d(new Data(taglist))
00110 {
00111 }
00112
00113 TagList::~TagList()
00114 {
00115 }
00116
00117 TagList::TagList(const TagList & other)
00118 : d(other.d)
00119 {
00120 }
00121
00122 TagList & TagList::operator=(const TagList & other)
00123 {
00124 d = other.d;
00125 return *this;
00126 }
00127
00128 bool TagList::isEmpty() const
00129 {
00130 return gst_tag_list_is_empty(d->taglist);
00131 }
00132
00133 void TagList::insert(const TagList & other, TagMergeMode mode)
00134 {
00135 gst_tag_list_insert(d->taglist, other.d->taglist, static_cast<GstTagMergeMode>(mode));
00136 }
00137
00138
00139 TagList TagList::merge(const TagList & firstList, const TagList & secondList, TagMergeMode mode)
00140 {
00141 GstTagList *taglist = gst_tag_list_merge(firstList, secondList,
00142 static_cast<GstTagMergeMode>(mode));
00143
00144
00145 TagList tl;
00146 gst_tag_list_free(tl.d->taglist);
00147 tl.d->taglist = taglist;
00148 return tl;
00149 }
00150
00151 QGlib::Value TagList::tagValue(const char *tag, int index) const
00152 {
00153 return QGlib::Value(gst_tag_list_get_value_index(d->taglist, tag, index));
00154 }
00155
00156 void TagList::setTagValue(const char *tag, const QGlib::Value & value, TagMergeMode mode)
00157 {
00158 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode), tag, value);
00159 }
00160
00161 int TagList::tagValueCount(const char *tag) const
00162 {
00163 return gst_tag_list_get_tag_size(d->taglist, tag);
00164 }
00165
00166 void TagList::clear()
00167 {
00168 gst_tag_list_free(d->taglist);
00169 d->taglist = gst_tag_list_new();
00170 }
00171
00172 void TagList::removeTag(const char *tag)
00173 {
00174 gst_tag_list_remove_tag(d->taglist, tag);
00175 }
00176
00177 TagList::operator GstTagList*()
00178 {
00179 return d->taglist;
00180 }
00181
00182 TagList::operator const GstTagList*() const
00183 {
00184 return d->taglist;
00185 }
00186
00187 QString TagList::title(int index) const
00188 {
00189 return getStringTag(d->taglist, GST_TAG_TITLE, index);
00190 }
00191
00192 void TagList::setTitle(const QString & value, TagMergeMode mode)
00193 {
00194 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00195 GST_TAG_TITLE, QGlib::Value::create(value));
00196 }
00197
00198 int TagList::titleCount() const
00199 {
00200 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_TITLE);
00201 }
00202
00203 QString TagList::titleSortName() const
00204 {
00205 return getStringTag(d->taglist, GST_TAG_TITLE_SORTNAME, 0);
00206 }
00207
00208 void TagList::setTitleSortName(const QString & value)
00209 {
00210 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00211 GST_TAG_TITLE_SORTNAME, QGlib::Value::create(value));
00212 }
00213
00214 QString TagList::artist(int index) const
00215 {
00216 return getStringTag(d->taglist, GST_TAG_ARTIST, index);
00217 }
00218
00219 void TagList::setArtist(const QString & value, TagMergeMode mode)
00220 {
00221 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00222 GST_TAG_ARTIST, QGlib::Value::create(value));
00223 }
00224
00225 int TagList::artistCount() const
00226 {
00227 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_ARTIST);
00228 }
00229
00230 QString TagList::artistSortName() const
00231 {
00232 return getStringTag(d->taglist, GST_TAG_ARTIST_SORTNAME, 0);
00233 }
00234
00235 void TagList::setArtistSortName(const QString & value)
00236 {
00237 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00238 GST_TAG_ARTIST_SORTNAME, QGlib::Value::create(value));
00239 }
00240
00241 QString TagList::composer(int index) const
00242 {
00243 return getStringTag(d->taglist, GST_TAG_COMPOSER, index);
00244 }
00245
00246 void TagList::setComposer(const QString & value, TagMergeMode mode)
00247 {
00248 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00249 GST_TAG_COMPOSER, QGlib::Value::create(value));
00250 }
00251
00252 int TagList::composerCount() const
00253 {
00254 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_COMPOSER);
00255 }
00256
00257 QDate TagList::date() const
00258 {
00259 GDate * value;
00260 if (gst_tag_list_get_date(d->taglist, GST_TAG_DATE, &value)) {
00261 QDate ret = QDate::fromJulianDay(g_date_get_julian(value));
00262 g_date_free(value);
00263 return ret;
00264 }
00265 return QDate();
00266 }
00267
00268 void TagList::setDate(const QDate & value)
00269 {
00270 GDate * date = g_date_new_julian(value.toJulianDay());
00271 gst_tag_list_add (d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_DATE, date, NULL);
00272 }
00273
00274 QString TagList::genre(int index) const
00275 {
00276 return getStringTag(d->taglist, GST_TAG_GENRE, index);
00277 }
00278
00279 void TagList::setGenre(const QString & value, TagMergeMode mode)
00280 {
00281 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00282 GST_TAG_GENRE, QGlib::Value::create(value));
00283 }
00284
00285 int TagList::genreCount() const
00286 {
00287 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_GENRE);
00288 }
00289
00290 QString TagList::comment(int index) const
00291 {
00292 return getStringTag(d->taglist, GST_TAG_COMMENT, index);
00293 }
00294
00295 void TagList::setComment(const QString & value, TagMergeMode mode)
00296 {
00297 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00298 GST_TAG_COMMENT, QGlib::Value::create(value));
00299 }
00300
00301 int TagList::commentCount() const
00302 {
00303 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_COMMENT);
00304 }
00305
00306 QString TagList::extendedComment(int index) const
00307 {
00308 return getStringTag(d->taglist, GST_TAG_EXTENDED_COMMENT, index);
00309 }
00310
00311 void TagList::setExtendedComment(const QString & value, TagMergeMode mode)
00312 {
00313 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00314 GST_TAG_EXTENDED_COMMENT, QGlib::Value::create(value));
00315 }
00316
00317 int TagList::extendedCommentCount() const
00318 {
00319 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_EXTENDED_COMMENT);
00320 }
00321
00322 quint32 TagList::trackNumber() const
00323 {
00324 return getUintTag(d->taglist, GST_TAG_TRACK_NUMBER, 0);
00325 }
00326
00327 void TagList::setTrackNumber(quint32 value)
00328 {
00329 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_TRACK_NUMBER, value, NULL);
00330 }
00331
00332 quint32 TagList::trackCount() const
00333 {
00334 return getUintTag(d->taglist, GST_TAG_TRACK_COUNT, 0);
00335 }
00336
00337 void TagList::setTrackCount(quint32 value)
00338 {
00339 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_TRACK_COUNT, value, NULL);
00340 }
00341
00342 quint32 TagList::albumVolumeNumber() const
00343 {
00344 return getUintTag(d->taglist, GST_TAG_ALBUM_VOLUME_NUMBER, 0);
00345 }
00346
00347 void TagList::setAlbumVolumeNumber(quint32 value)
00348 {
00349 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_ALBUM_VOLUME_NUMBER, value, NULL);
00350 }
00351
00352 quint32 TagList::albumVolumeCount() const
00353 {
00354 return getUintTag(d->taglist, GST_TAG_ALBUM_VOLUME_COUNT, 0);
00355 }
00356
00357 void TagList::setAlbumVolumeCount(quint32 value)
00358 {
00359 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_ALBUM_VOLUME_COUNT, value, NULL);
00360 }
00361
00362 QString TagList::location(int index) const
00363 {
00364 return getStringTag(d->taglist, GST_TAG_LOCATION, index);
00365 }
00366
00367 void TagList::setLocation(const QString & value, TagMergeMode mode)
00368 {
00369 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00370 GST_TAG_LOCATION, QGlib::Value::create(value));
00371 }
00372
00373 int TagList::locationCount() const
00374 {
00375 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_LOCATION);
00376 }
00377
00378 QString TagList::homepage(int index) const
00379 {
00380 return getStringTag(d->taglist, GST_TAG_HOMEPAGE, index);
00381 }
00382
00383 void TagList::setHomepage(const QString & value, TagMergeMode mode)
00384 {
00385 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00386 GST_TAG_HOMEPAGE, QGlib::Value::create(value));
00387 }
00388
00389 int TagList::homepageCount() const
00390 {
00391 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_HOMEPAGE);
00392 }
00393
00394 QString TagList::description(int index) const
00395 {
00396 return getStringTag(d->taglist, GST_TAG_DESCRIPTION, index);
00397 }
00398
00399 void TagList::setDescription(const QString & value, TagMergeMode mode)
00400 {
00401 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00402 GST_TAG_DESCRIPTION, QGlib::Value::create(value));
00403 }
00404
00405 int TagList::descriptionCount() const
00406 {
00407 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_DESCRIPTION);
00408 }
00409
00410 QString TagList::version() const
00411 {
00412 return getStringTag(d->taglist, GST_TAG_VERSION, 0);
00413 }
00414
00415 void TagList::setVersion(const QString & value)
00416 {
00417 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00418 GST_TAG_VERSION, QGlib::Value::create(value));
00419 }
00420
00421 QString TagList::isrc() const
00422 {
00423 return getStringTag(d->taglist, GST_TAG_ISRC, 0);
00424 }
00425
00426 void TagList::setIsrc(const QString & value)
00427 {
00428 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00429 GST_TAG_ISRC, QGlib::Value::create(value));
00430 }
00431
00432 QString TagList::organization(int index) const
00433 {
00434 return getStringTag(d->taglist, GST_TAG_ORGANIZATION, index);
00435 }
00436
00437 void TagList::setOrganization(const QString & value, TagMergeMode mode)
00438 {
00439 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00440 GST_TAG_ORGANIZATION, QGlib::Value::create(value));
00441 }
00442
00443 int TagList::organizationCount() const
00444 {
00445 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_ORGANIZATION);
00446 }
00447
00448 QString TagList::copyright() const
00449 {
00450 return getStringTag(d->taglist, GST_TAG_COPYRIGHT, 0);
00451 }
00452
00453 void TagList::setCopyright(const QString & value)
00454 {
00455 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00456 GST_TAG_COPYRIGHT, QGlib::Value::create(value));
00457 }
00458
00459 QString TagList::copyrightUri() const
00460 {
00461 return getStringTag(d->taglist, GST_TAG_COPYRIGHT_URI, 0);
00462 }
00463
00464 void TagList::setCopyrightUri(const QString & value)
00465 {
00466 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00467 GST_TAG_COPYRIGHT_URI, QGlib::Value::create(value));
00468 }
00469
00470 QString TagList::contact(int index) const
00471 {
00472 return getStringTag(d->taglist, GST_TAG_CONTACT, index);
00473 }
00474
00475 void TagList::setContact(const QString & value, TagMergeMode mode)
00476 {
00477 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00478 GST_TAG_CONTACT, QGlib::Value::create(value));
00479 }
00480
00481 int TagList::contactCount() const
00482 {
00483 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_CONTACT);
00484 }
00485
00486 QString TagList::license() const
00487 {
00488 return getStringTag(d->taglist, GST_TAG_LICENSE, 0);
00489 }
00490
00491 void TagList::setLicense(const QString & value)
00492 {
00493 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00494 GST_TAG_LICENSE, QGlib::Value::create(value));
00495 }
00496
00497 QString TagList::licenseUri() const
00498 {
00499 return getStringTag(d->taglist, GST_TAG_LICENSE_URI, 0);
00500 }
00501
00502 void TagList::setLicenseUri(const QString & value)
00503 {
00504 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00505 GST_TAG_LICENSE_URI, QGlib::Value::create(value));
00506 }
00507
00508 QString TagList::performer(int index) const
00509 {
00510 return getStringTag(d->taglist, GST_TAG_PERFORMER, index);
00511 }
00512
00513 void TagList::setPerformer(const QString & value, TagMergeMode mode)
00514 {
00515 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00516 GST_TAG_PERFORMER, QGlib::Value::create(value));
00517 }
00518
00519 int TagList::performerCount() const
00520 {
00521 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_PERFORMER);
00522 }
00523
00524 quint64 TagList::duration() const
00525 {
00526 guint64 value = 0;
00527 gst_tag_list_get_uint64_index(d->taglist, GST_TAG_DURATION, 0, &value);
00528 return value;
00529 }
00530
00531 void TagList::setDuration(quint64 value)
00532 {
00533 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_DURATION, value, NULL);
00534 }
00535
00536 QString TagList::codec() const
00537 {
00538 return getStringTag(d->taglist, GST_TAG_CODEC, 0);
00539 }
00540
00541 void TagList::setCodec(const QString & value)
00542 {
00543 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00544 GST_TAG_CODEC, QGlib::Value::create(value));
00545 }
00546
00547 QString TagList::videoCodec() const
00548 {
00549 return getStringTag(d->taglist, GST_TAG_VIDEO_CODEC, 0);
00550 }
00551
00552 void TagList::setVideoCodec(const QString & value)
00553 {
00554 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00555 GST_TAG_VIDEO_CODEC, QGlib::Value::create(value));
00556 }
00557
00558 QString TagList::audioCodec() const
00559 {
00560 return getStringTag(d->taglist, GST_TAG_AUDIO_CODEC, 0);
00561 }
00562
00563 void TagList::setAudioCodec(const QString & value)
00564 {
00565 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00566 GST_TAG_AUDIO_CODEC, QGlib::Value::create(value));
00567 }
00568
00569 QString TagList::subtitleCodec() const
00570 {
00571 return getStringTag(d->taglist, GST_TAG_SUBTITLE_CODEC, 0);
00572 }
00573
00574 void TagList::setSubtitleCodec(const QString & value)
00575 {
00576 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00577 GST_TAG_SUBTITLE_CODEC, QGlib::Value::create(value));
00578 }
00579
00580 QString TagList::containerFormat() const
00581 {
00582 return getStringTag(d->taglist, GST_TAG_CONTAINER_FORMAT, 0);
00583 }
00584
00585 void TagList::setContainerFormat(const QString & value)
00586 {
00587 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00588 GST_TAG_CONTAINER_FORMAT, QGlib::Value::create(value));
00589 }
00590
00591 quint32 TagList::bitrate() const
00592 {
00593 return getUintTag(d->taglist, GST_TAG_BITRATE, 0);
00594 }
00595
00596 void TagList::setBitrate(quint32 value)
00597 {
00598 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_BITRATE, value, NULL);
00599 }
00600
00601 quint32 TagList::nominalBitrate() const
00602 {
00603 return getUintTag(d->taglist, GST_TAG_NOMINAL_BITRATE, 0);
00604 }
00605
00606 void TagList::setNominalBitrate(quint32 value)
00607 {
00608 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_NOMINAL_BITRATE, value, NULL);
00609 }
00610
00611 quint32 TagList::minimumBitrate() const
00612 {
00613 return getUintTag(d->taglist, GST_TAG_MINIMUM_BITRATE, 0);
00614 }
00615
00616 void TagList::setMinimumBitrate(quint32 value)
00617 {
00618 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_MINIMUM_BITRATE, value, NULL);
00619 }
00620
00621 quint32 TagList::maximumBitrate() const
00622 {
00623 return getUintTag(d->taglist, GST_TAG_MAXIMUM_BITRATE, 0);
00624 }
00625
00626 void TagList::setMaximumBitrate(quint32 value)
00627 {
00628 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_MAXIMUM_BITRATE, value, NULL);
00629 }
00630
00631 quint32 TagList::serial() const
00632 {
00633 return getUintTag(d->taglist, GST_TAG_SERIAL, 0);
00634 }
00635
00636 void TagList::setSerial(quint32 value)
00637 {
00638 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_SERIAL, value, NULL);
00639 }
00640
00641 QString TagList::encoder() const
00642 {
00643 return getStringTag(d->taglist, GST_TAG_ENCODER, 0);
00644 }
00645
00646 void TagList::setEncoder(const QString & value)
00647 {
00648 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00649 GST_TAG_ENCODER, QGlib::Value::create(value));
00650 }
00651
00652 quint32 TagList::encoderVersion() const
00653 {
00654 return getUintTag(d->taglist, GST_TAG_ENCODER_VERSION, 0);
00655 }
00656
00657 void TagList::setEncoderVersion(quint32 value)
00658 {
00659 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_ENCODER_VERSION, value, NULL);
00660 }
00661
00662 double TagList::trackGain() const
00663 {
00664 return getDoubleTag(d->taglist, GST_TAG_TRACK_GAIN, 0);
00665 }
00666
00667 void TagList::setTrackGain(double value)
00668 {
00669 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_TRACK_GAIN, value, NULL);
00670 }
00671
00672 double TagList::trackPeak() const
00673 {
00674 return getDoubleTag(d->taglist, GST_TAG_TRACK_PEAK, 0);
00675 }
00676
00677 void TagList::setTrackPeak(double value)
00678 {
00679 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_TRACK_PEAK, value, NULL);
00680 }
00681
00682 double TagList::albumGain() const
00683 {
00684 return getDoubleTag(d->taglist, GST_TAG_ALBUM_GAIN, 0);
00685 }
00686
00687 void TagList::setAlbumGain(double value)
00688 {
00689 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_ALBUM_GAIN, value, NULL);
00690 }
00691
00692 double TagList::albumPeak() const
00693 {
00694 return getDoubleTag(d->taglist, GST_TAG_ALBUM_PEAK, 0);
00695 }
00696
00697 void TagList::setAlbumPeak(double value)
00698 {
00699 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_ALBUM_PEAK, value, NULL);
00700 }
00701
00702 double TagList::referenceLevel() const
00703 {
00704 return getDoubleTag(d->taglist, GST_TAG_REFERENCE_LEVEL, 0);
00705 }
00706
00707 void TagList::setReferenceLevel(double value)
00708 {
00709 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_REFERENCE_LEVEL, value, NULL);
00710 }
00711
00712 QString TagList::languageCode() const
00713 {
00714 return getStringTag(d->taglist, GST_TAG_LANGUAGE_CODE, 0);
00715 }
00716
00717 void TagList::setLanguageCode(const QString & value)
00718 {
00719 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00720 GST_TAG_LANGUAGE_CODE, QGlib::Value::create(value));
00721 }
00722
00723 BufferPtr TagList::image(int index) const
00724 {
00725 return getBufferTag(d->taglist, GST_TAG_IMAGE, index);
00726 }
00727
00728 void TagList::setImage(const BufferPtr & value, TagMergeMode mode)
00729 {
00730 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00731 GST_TAG_IMAGE, QGlib::Value::create(value));
00732 }
00733
00734 int TagList::imageCount() const
00735 {
00736 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_IMAGE);
00737 }
00738
00739 BufferPtr TagList::previewImage() const
00740 {
00741 return getBufferTag(d->taglist, GST_TAG_PREVIEW_IMAGE, 0);
00742 }
00743
00744 void TagList::setPreviewImage(const BufferPtr & value)
00745 {
00746 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00747 GST_TAG_PREVIEW_IMAGE, QGlib::Value::create(value));
00748 }
00749
00750 BufferPtr TagList::attachment(int index) const
00751 {
00752 return getBufferTag(d->taglist, GST_TAG_ATTACHMENT, index);
00753 }
00754
00755 void TagList::setAttachment(const BufferPtr & value, TagMergeMode mode)
00756 {
00757 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00758 GST_TAG_ATTACHMENT, QGlib::Value::create(value));
00759 }
00760
00761 int TagList::attachmentCount() const
00762 {
00763 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_ATTACHMENT);
00764 }
00765
00766 double TagList::beatsPerMinute() const
00767 {
00768 return getDoubleTag(d->taglist, GST_TAG_BEATS_PER_MINUTE, 0);
00769 }
00770
00771 void TagList::setBeatsPerMinute(double value)
00772 {
00773 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_BEATS_PER_MINUTE, value, NULL);
00774 }
00775
00776 QString TagList::keywords(int index) const
00777 {
00778 return getStringTag(d->taglist, GST_TAG_KEYWORDS, index);
00779 }
00780
00781 void TagList::setKeywords(const QString & value, TagMergeMode mode)
00782 {
00783 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00784 GST_TAG_KEYWORDS, QGlib::Value::create(value));
00785 }
00786
00787 int TagList::keywordsCount() const
00788 {
00789 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_KEYWORDS);
00790 }
00791
00792 QString TagList::geoLocationName() const
00793 {
00794 return getStringTag(d->taglist, GST_TAG_GEO_LOCATION_NAME, 0);
00795 }
00796
00797 void TagList::seGeoLocationName(const QString & value)
00798 {
00799 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00800 GST_TAG_GEO_LOCATION_NAME, QGlib::Value::create(value));
00801 }
00802
00803 double TagList::geoLocationLatitude() const
00804 {
00805 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_LATITUDE, 0);
00806 }
00807
00808 void TagList::setGeoLocationLatitude(double value)
00809 {
00810 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00811 GST_TAG_GEO_LOCATION_LATITUDE, value, NULL);
00812 }
00813
00814 double TagList::geoLocationLongitude() const
00815 {
00816 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_LONGITUDE, 0);
00817 }
00818
00819 void TagList::setGeoLocationLongitude(double value)
00820 {
00821 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00822 GST_TAG_GEO_LOCATION_LONGITUDE, value, NULL);
00823 }
00824
00825 double TagList::geoLocationElevation() const
00826 {
00827 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_ELEVATION, 0);
00828 }
00829
00830 void TagList::setGeoLocationElevation(double value)
00831 {
00832 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00833 GST_TAG_GEO_LOCATION_ELEVATION, value, NULL);
00834 }
00835
00836 QString TagList::geoLocationCountry() const
00837 {
00838 return getStringTag(d->taglist, GST_TAG_GEO_LOCATION_COUNTRY, 0);
00839 }
00840
00841 void TagList::setGeoLocationCountry(const QString & value)
00842 {
00843 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00844 GST_TAG_GEO_LOCATION_COUNTRY, QGlib::Value::create(value));
00845 }
00846
00847 QString TagList::geoLocationCity() const
00848 {
00849 return getStringTag(d->taglist, GST_TAG_GEO_LOCATION_CITY, 0);
00850 }
00851
00852 void TagList::setGeoLocationCity(const QString & value)
00853 {
00854 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00855 GST_TAG_GEO_LOCATION_CITY, QGlib::Value::create(value));
00856 }
00857
00858 QString TagList::geoLocationSublocation() const
00859 {
00860 return getStringTag(d->taglist, GST_TAG_GEO_LOCATION_SUBLOCATION, 0);
00861 }
00862
00863 void TagList::setGeoLocationSublocation(const QString & value)
00864 {
00865 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00866 GST_TAG_GEO_LOCATION_SUBLOCATION, QGlib::Value::create(value));
00867 }
00868
00869 double TagList::geoLocationMovementSpeed() const
00870 {
00871 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_MOVEMENT_SPEED, 0);
00872 }
00873
00874 void TagList::setGeoLocationMovementSpeed(double value)
00875 {
00876 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00877 GST_TAG_GEO_LOCATION_MOVEMENT_SPEED, value, NULL);
00878 }
00879
00880 double TagList::geoLocationMovementDirection() const
00881 {
00882 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION, 0);
00883 }
00884
00885 void TagList::setGeoLocationMovementDirection(double value)
00886 {
00887 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00888 GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION, value, NULL);
00889 }
00890
00891 double TagList::geoLocationCaptureDirection() const
00892 {
00893 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, 0);
00894 }
00895
00896 void TagList::setGeoLocationCaptureDirector(double value)
00897 {
00898 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00899 GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, value, NULL);
00900 }
00901
00902 QString TagList::showName(int index) const
00903 {
00904 return getStringTag(d->taglist, GST_TAG_SHOW_NAME, index);
00905 }
00906
00907 void TagList::setShowName(const QString & value, TagMergeMode mode)
00908 {
00909 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00910 GST_TAG_SHOW_NAME, QGlib::Value::create(value));
00911 }
00912
00913 int TagList::showNameCount() const
00914 {
00915 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_SHOW_NAME);
00916 }
00917
00918 QString TagList::showSortName() const
00919 {
00920 return getStringTag(d->taglist, GST_TAG_SHOW_SORTNAME, 0);
00921 }
00922
00923 void TagList::setShowSortName(const QString & value)
00924 {
00925 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00926 GST_TAG_SHOW_SORTNAME, QGlib::Value::create(value));
00927 }
00928
00929 quint32 TagList::showEpisodeNumber() const
00930 {
00931 return getUintTag(d->taglist, GST_TAG_SHOW_EPISODE_NUMBER, 0);
00932 }
00933
00934 void TagList::setShowEpisodeNumber(quint32 value)
00935 {
00936 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_SHOW_EPISODE_NUMBER, value, NULL);
00937 }
00938
00939 quint32 TagList::showSeasonNumber() const
00940 {
00941 return getUintTag(d->taglist, GST_TAG_SHOW_SEASON_NUMBER, 0);
00942 }
00943
00944 void TagList::setShowSeasonNumber(quint32 value)
00945 {
00946 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_SHOW_SEASON_NUMBER, value, NULL);
00947 }
00948
00949 QString TagList::lyrics(int index) const
00950 {
00951 return getStringTag(d->taglist, GST_TAG_LYRICS, index);
00952 }
00953
00954 void TagList::setLyrics(const QString & value, TagMergeMode mode)
00955 {
00956 gst_tag_list_add_value(d->taglist, static_cast<GstTagMergeMode>(mode),
00957 GST_TAG_LYRICS, QGlib::Value::create(value));
00958 }
00959
00960 int TagList::lyricsCount() const
00961 {
00962 return gst_tag_list_get_tag_size(d->taglist, GST_TAG_LYRICS);
00963 }
00964
00965 QString TagList::composerSortName() const
00966 {
00967 return getStringTag(d->taglist, GST_TAG_COMPOSER_SORTNAME, 0);
00968 }
00969
00970 void TagList::setComposerSortName(const QString & value)
00971 {
00972 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00973 GST_TAG_COMPOSER_SORTNAME, QGlib::Value::create(value));
00974 }
00975
00976 QString TagList::grouping() const
00977 {
00978 return getStringTag(d->taglist, GST_TAG_GROUPING, 0);
00979 }
00980
00981 void TagList::setGrouping(const QString & value)
00982 {
00983 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
00984 GST_TAG_GROUPING, QGlib::Value::create(value));
00985 }
00986
00987 quint32 TagList::userRating() const
00988 {
00989 return getUintTag(d->taglist, GST_TAG_USER_RATING, 0);
00990 }
00991
00992 void TagList::setUserRating(quint32 value)
00993 {
00994 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_USER_RATING, value, NULL);
00995 }
00996
00997 QString TagList::deviceManufacturer() const
00998 {
00999 return getStringTag(d->taglist, GST_TAG_DEVICE_MANUFACTURER, 0);
01000 }
01001
01002 void TagList::setDeviceManufacturer(const QString & value)
01003 {
01004 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01005 GST_TAG_DEVICE_MANUFACTURER, QGlib::Value::create(value));
01006 }
01007
01008 QString TagList::deviceModel() const
01009 {
01010 return getStringTag(d->taglist, GST_TAG_DEVICE_MODEL, 0);
01011 }
01012
01013 void TagList::setDeviceModel(const QString & value)
01014 {
01015 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01016 GST_TAG_DEVICE_MODEL, QGlib::Value::create(value));
01017 }
01018
01019 QString TagList::imageOrientation() const
01020 {
01021 return getStringTag(d->taglist, GST_TAG_IMAGE_ORIENTATION, 0);
01022 }
01023
01024 void TagList::setImageOrientation(const QString & value)
01025 {
01026 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01027 GST_TAG_IMAGE_ORIENTATION, QGlib::Value::create(value));
01028 }
01029
01030 double TagList::geoLocationHorizontalError() const
01031 {
01032 return getDoubleTag(d->taglist, GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR, 0);
01033 }
01034
01035 void TagList::setGeoLocationHorizontalError(double value)
01036 {
01037 gst_tag_list_add(d->taglist, GST_TAG_MERGE_REPLACE_ALL, GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR, value, NULL);
01038 }
01039
01040 QString TagList::applicationName() const
01041 {
01042 return getStringTag(d->taglist, GST_TAG_APPLICATION_NAME, 0);
01043 }
01044
01045 void TagList::setApplicationName(const QString & value)
01046 {
01047 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01048 GST_TAG_APPLICATION_NAME, QGlib::Value::create(value));
01049 }
01050
01051 BufferPtr TagList::applicationData() const
01052 {
01053 return getBufferTag(d->taglist, GST_TAG_APPLICATION_DATA, 0);
01054 }
01055
01056 void TagList::setApplicationData(const BufferPtr & value)
01057 {
01058 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01059 GST_TAG_APPLICATION_DATA, QGlib::Value::create(value));
01060 }
01061
01062 QDateTime TagList::dateTime() const
01063 {
01064 return tagValue(GST_TAG_DATE_TIME).get<QDateTime>();
01065 }
01066
01067 void TagList::setDateTime(const QDateTime & value)
01068 {
01069 gst_tag_list_add_value(d->taglist, GST_TAG_MERGE_REPLACE_ALL,
01070 GST_TAG_DATE_TIME, QGlib::Value::create(value));
01071 }
01072
01073
01074 QDebug operator<<(QDebug debug, const TagList & taglist)
01075 {
01076 debug.nospace() << "QGst::TagList("
01077 << QGlib::Private::stringFromGCharPtr(gst_structure_to_string(taglist)) << ")";
01078 return debug.space();
01079 }
01080
01081 }