1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 /* 25 * Conversion parameters: 26 * inFile = gstreamer-GstTagList.html 27 * outPack = gstreamer 28 * outFile = TagList 29 * strct = GstTagList 30 * realStrct= 31 * ctorStrct= 32 * clss = TagList 33 * interf = 34 * class Code: No 35 * interface Code: No 36 * template for: 37 * extend = 38 * implements: 39 * prefixes: 40 * - gst_tag_list_ 41 * - gst_tag_ 42 * omit structs: 43 * omit prefixes: 44 * omit code: 45 * omit signals: 46 * imports: 47 * - glib.Str 48 * - glib.Date 49 * - gobject.Value 50 * - gstreamer.DateTime 51 * - gstreamer.Sample 52 * structWrap: 53 * - GDate* -> Date 54 * - GValue* -> Value 55 * - GstDateTime* -> DateTime 56 * - GstSample* -> Sample 57 * - GstTagList* -> TagList 58 * module aliases: 59 * local aliases: 60 * overrides: 61 * - toString 62 */ 63 64 module gstreamer.TagList; 65 66 public import gstreamerc.gstreamertypes; 67 68 private import gstreamerc.gstreamer; 69 private import glib.ConstructionException; 70 private import gobject.ObjectG; 71 72 73 private import glib.Str; 74 private import glib.Date; 75 private import gobject.Value; 76 private import gstreamer.DateTime; 77 private import gstreamer.Sample; 78 79 80 81 82 /** 83 * List of tags and values used to describe media metadata. 84 * 85 * Strings must be in ASCII or UTF-8 encoding. No other encodings are allowed. 86 * 87 * Last reviewed on 2009-06-09 (0.10.23) 88 */ 89 public class TagList 90 { 91 92 /** the main Gtk struct */ 93 protected GstTagList* gstTagList; 94 95 96 public GstTagList* getTagListStruct() 97 { 98 return gstTagList; 99 } 100 101 102 /** the main Gtk struct as a void* */ 103 protected void* getStruct() 104 { 105 return cast(void*)gstTagList; 106 } 107 108 /** 109 * Sets our main struct and passes it to the parent class 110 */ 111 public this (GstTagList* gstTagList) 112 { 113 this.gstTagList = gstTagList; 114 } 115 116 /** 117 */ 118 119 /** 120 * Registers a new tag type for the use with GStreamer's type system. If a type 121 * with that name is already registered, that one is used. 122 * The old registration may have used a different type however. So don't rely 123 * on your supplied values. 124 * Important: if you do not supply a merge function the implication will be 125 * that there can only be one single value for this tag in a tag list and 126 * any additional values will silenty be discarded when being added (unless 127 * GST_TAG_MERGE_REPLACE, GST_TAG_MERGE_REPLACE_ALL, or 128 * GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new 129 * value will replace the old one in the list). 130 * The merge function will be called from gst_tag_list_copy_value() when 131 * it is required that one or more values for a tag be condensed into 132 * one single value. This may happen from gst_tag_list_get_string(), 133 * gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen 134 * exactly in that case depends on how the tag was registered and if a 135 * merge function was supplied and if so which one. 136 * Two default merge functions are provided: gst_tag_merge_use_first() and 137 * gst_tag_merge_strings_with_comma(). 138 * Params: 139 * name = the name or identifier string 140 * flag = a flag describing the type of tag info 141 * type = the type this data is in 142 * nick = human-readable name 143 * blurb = a human-readable description about this tag 144 * func = function for merging multiple values of this tag, or NULL. [allow-none] 145 */ 146 public static void register(string name, GstTagFlag flag, GType type, string nick, string blurb, GstTagMergeFunc func) 147 { 148 // void gst_tag_register (const gchar *name, GstTagFlag flag, GType type, const gchar *nick, const gchar *blurb, GstTagMergeFunc func); 149 gst_tag_register(Str.toStringz(name), flag, type, Str.toStringz(nick), Str.toStringz(blurb), func); 150 } 151 152 /** 153 * Registers a new tag type for the use with GStreamer's type system. 154 * Same as gst_tag_register(), but name, nick, and blurb must be 155 * static strings or inlined strings, as they will not be copied. (GStreamer 156 * plugins will be made resident once loaded, so this function can be used 157 * even from dynamically loaded plugins.) 158 * Params: 159 * name = the name or identifier string (string constant) 160 * flag = a flag describing the type of tag info 161 * type = the type this data is in 162 * nick = human-readable name or short description (string constant) 163 * blurb = a human-readable description for this tag (string constant) 164 * func = function for merging multiple values of this tag, or NULL. [allow-none] 165 */ 166 public static void registerStatic(string name, GstTagFlag flag, GType type, string nick, string blurb, GstTagMergeFunc func) 167 { 168 // void gst_tag_register_static (const gchar *name, GstTagFlag flag, GType type, const gchar *nick, const gchar *blurb, GstTagMergeFunc func); 169 gst_tag_register_static(Str.toStringz(name), flag, type, Str.toStringz(nick), Str.toStringz(blurb), func); 170 } 171 172 /** 173 * This is a convenience function for the func argument of gst_tag_register(). 174 * It creates a copy of the first value from the list. 175 * Params: 176 * dest = uninitialized GValue to store result in. [out caller-allocates] 177 * src = GValue to copy from 178 */ 179 public static void mergeUseFirst(Value dest, Value src) 180 { 181 // void gst_tag_merge_use_first (GValue *dest, const GValue *src); 182 gst_tag_merge_use_first((dest is null) ? null : dest.getValueStruct(), (src is null) ? null : src.getValueStruct()); 183 } 184 185 /** 186 * This is a convenience function for the func argument of gst_tag_register(). 187 * It concatenates all given strings using a comma. The tag must be registered 188 * as a G_TYPE_STRING or this function will fail. 189 * Params: 190 * dest = uninitialized GValue to store result in. [out caller-allocates] 191 * src = GValue to copy from 192 */ 193 public static void mergeStringsWithComma(Value dest, Value src) 194 { 195 // void gst_tag_merge_strings_with_comma (GValue *dest, const GValue *src); 196 gst_tag_merge_strings_with_comma((dest is null) ? null : dest.getValueStruct(), (src is null) ? null : src.getValueStruct()); 197 } 198 199 /** 200 * Checks if the given type is already registered. 201 * Params: 202 * tag = name of the tag 203 * Returns: TRUE if the type is already registered 204 */ 205 public static int exists(string tag) 206 { 207 // gboolean gst_tag_exists (const gchar *tag); 208 return gst_tag_exists(Str.toStringz(tag)); 209 } 210 211 /** 212 * Gets the GType used for this tag. 213 * Params: 214 * tag = the tag 215 * Returns: the GType of this tag 216 */ 217 public static GType getType(string tag) 218 { 219 // GType gst_tag_get_type (const gchar *tag); 220 return gst_tag_get_type(Str.toStringz(tag)); 221 } 222 223 /** 224 * Returns the human-readable name of this tag, You must not change or free 225 * this string. 226 * Params: 227 * tag = the tag 228 * Returns: the human-readable name of this tag 229 */ 230 public static string getNick(string tag) 231 { 232 // const gchar * gst_tag_get_nick (const gchar *tag); 233 return Str.toString(gst_tag_get_nick(Str.toStringz(tag))); 234 } 235 236 /** 237 * Returns the human-readable description of this tag, You must not change or 238 * free this string. 239 * Params: 240 * tag = the tag 241 * Returns: the human-readable description of this tag 242 */ 243 public static string getDescription(string tag) 244 { 245 // const gchar * gst_tag_get_description (const gchar *tag); 246 return Str.toString(gst_tag_get_description(Str.toStringz(tag))); 247 } 248 249 /** 250 * Gets the flag of tag. 251 * Params: 252 * tag = the tag 253 * Returns: the flag of this tag. 254 */ 255 public static GstTagFlag getFlag(string tag) 256 { 257 // GstTagFlag gst_tag_get_flag (const gchar *tag); 258 return gst_tag_get_flag(Str.toStringz(tag)); 259 } 260 261 /** 262 * Checks if the given tag is fixed. A fixed tag can only contain one value. 263 * Unfixed tags can contain lists of values. 264 * Params: 265 * tag = tag to check 266 * Returns: TRUE, if the given tag is fixed. 267 */ 268 public static int isFixed(string tag) 269 { 270 // gboolean gst_tag_is_fixed (const gchar *tag); 271 return gst_tag_is_fixed(Str.toStringz(tag)); 272 } 273 274 /** 275 * Creates a new empty GstTagList. 276 * Free-function: gst_tag_list_unref 277 * Throws: ConstructionException GTK+ fails to create the object. 278 */ 279 public this () 280 { 281 // GstTagList * gst_tag_list_new_empty (void); 282 auto p = gst_tag_list_new_empty(); 283 if(p is null) 284 { 285 throw new ConstructionException("null returned by gst_tag_list_new_empty()"); 286 } 287 this(cast(GstTagList*) p); 288 } 289 290 /** 291 * Just like gst_tag_list_new(), only that it takes a va_list argument. 292 * Useful mostly for language bindings. 293 * Free-function: gst_tag_list_unref 294 * Params: 295 * varArgs = tag / value pairs to set 296 * Throws: ConstructionException GTK+ fails to create the object. 297 */ 298 public this (void* varArgs) 299 { 300 // GstTagList * gst_tag_list_new_valist (va_list var_args); 301 auto p = gst_tag_list_new_valist(varArgs); 302 if(p is null) 303 { 304 throw new ConstructionException("null returned by gst_tag_list_new_valist(varArgs)"); 305 } 306 this(cast(GstTagList*) p); 307 } 308 309 /** 310 * Deserializes a tag list. 311 * Params: 312 * str = a string created with gst_tag_list_to_string() 313 * Throws: ConstructionException GTK+ fails to create the object. 314 */ 315 public this (string str) 316 { 317 // GstTagList * gst_tag_list_new_from_string (const gchar *str); 318 auto p = gst_tag_list_new_from_string(Str.toStringz(str)); 319 if(p is null) 320 { 321 throw new ConstructionException("null returned by gst_tag_list_new_from_string(Str.toStringz(str))"); 322 } 323 this(cast(GstTagList*) p); 324 } 325 326 /** 327 * Gets the scope of list. 328 * Returns: The scope of list 329 */ 330 public GstTagScope getScope() 331 { 332 // GstTagScope gst_tag_list_get_scope (const GstTagList *list); 333 return gst_tag_list_get_scope(gstTagList); 334 } 335 336 /** 337 * Sets the scope of list to scope. By default the scope 338 * of a taglist is stream scope. 339 */ 340 public void setScope(GstTagScope scop) 341 { 342 // void gst_tag_list_set_scope (GstTagList *list, GstTagScope scope); 343 gst_tag_list_set_scope(gstTagList, scop); 344 } 345 346 /** 347 * Serializes a tag list to a string. 348 * Returns: a newly-allocated string, or NULL in case of an error. The string must be freed with g_free() when no longer needed. 349 */ 350 public override string toString() 351 { 352 // gchar * gst_tag_list_to_string (const GstTagList *list); 353 return Str.toString(gst_tag_list_to_string(gstTagList)); 354 } 355 356 /** 357 * Checks if the given taglist is empty. 358 * Returns: TRUE if the taglist is empty, otherwise FALSE. 359 */ 360 public int isEmpty() 361 { 362 // gboolean gst_tag_list_is_empty (const GstTagList *list); 363 return gst_tag_list_is_empty(gstTagList); 364 } 365 366 /** 367 * Checks if the two given taglists are equal. 368 * Params: 369 * list2 = a GstTagList. 370 * Returns: TRUE if the taglists are equal, otherwise FALSE 371 */ 372 public int isEqual(TagList list2) 373 { 374 // gboolean gst_tag_list_is_equal (const GstTagList *list1, const GstTagList *list2); 375 return gst_tag_list_is_equal(gstTagList, (list2 is null) ? null : list2.getTagListStruct()); 376 } 377 378 /** 379 * Creates a new GstTagList as a copy of the old taglist. The new taglist 380 * will have a refcount of 1, owned by the caller, and will be writable as 381 * a result. 382 * Note that this function is the semantic equivalent of a gst_tag_list_ref() 383 * followed by a gst_tag_list_make_writable(). If you only want to hold on to a 384 * reference to the data, you should use gst_tag_list_ref(). 385 * When you are finished with the taglist, call gst_tag_list_unref() on it. 386 * Returns: the new GstTagList 387 */ 388 public TagList copy() 389 { 390 // GstTagList * gst_tag_list_copy (const GstTagList *taglist); 391 auto p = gst_tag_list_copy(gstTagList); 392 393 if(p is null) 394 { 395 return null; 396 } 397 398 return ObjectG.getDObject!(TagList)(cast(GstTagList*) p); 399 } 400 401 /** 402 * Add a reference to a GstTagList mini object. 403 * From this point on, until the caller calls gst_tag_list_unref() or 404 * gst_tag_list_make_writable(), it is guaranteed that the taglist object will 405 * not change. To use a GstTagList object, you must always have a refcount on 406 * it -- either the one made implicitly by e.g. gst_tag_list_new(), or via 407 * taking one explicitly with this function. 408 * Returns: the same GstTagList mini object. 409 */ 410 public TagList doref() 411 { 412 // GstTagList * gst_tag_list_ref (GstTagList *taglist); 413 auto p = gst_tag_list_ref(gstTagList); 414 415 if(p is null) 416 { 417 return null; 418 } 419 420 return ObjectG.getDObject!(TagList)(cast(GstTagList*) p); 421 } 422 423 /** 424 * Unref a GstTagList, and and free all its memory when the refcount reaches 0. 425 */ 426 public void unref() 427 { 428 // void gst_tag_list_unref (GstTagList *taglist); 429 gst_tag_list_unref(gstTagList); 430 } 431 432 /** 433 * Inserts the tags of the from list into the first list using the given mode. 434 * Params: 435 * from = list to merge from 436 * mode = the mode to use 437 */ 438 public void insert(TagList from, GstTagMergeMode mode) 439 { 440 // void gst_tag_list_insert (GstTagList *into, const GstTagList *from, GstTagMergeMode mode); 441 gst_tag_list_insert(gstTagList, (from is null) ? null : from.getTagListStruct(), mode); 442 } 443 444 /** 445 * Merges the two given lists into a new list. If one of the lists is NULL, a 446 * copy of the other is returned. If both lists are NULL, NULL is returned. 447 * Free-function: gst_tag_list_unref 448 * Params: 449 * list2 = second list to merge 450 * mode = the mode to use 451 * Returns: the new list. [transfer full] 452 */ 453 public TagList merge(TagList list2, GstTagMergeMode mode) 454 { 455 // GstTagList * gst_tag_list_merge (const GstTagList *list1, const GstTagList *list2, GstTagMergeMode mode); 456 auto p = gst_tag_list_merge(gstTagList, (list2 is null) ? null : list2.getTagListStruct(), mode); 457 458 if(p is null) 459 { 460 return null; 461 } 462 463 return ObjectG.getDObject!(TagList)(cast(GstTagList*) p); 464 } 465 466 /** 467 * Checks how many value are stored in this tag list for the given tag. 468 * Params: 469 * tag = the tag to query 470 * Returns: The number of tags stored 471 */ 472 public uint getTagSize(string tag) 473 { 474 // guint gst_tag_list_get_tag_size (const GstTagList *list, const gchar *tag); 475 return gst_tag_list_get_tag_size(gstTagList, Str.toStringz(tag)); 476 } 477 478 /** 479 * Get the number of tags in list. 480 * Returns: The number of tags in list. 481 */ 482 public int nTags() 483 { 484 // gint gst_tag_list_n_tags (const GstTagList *list); 485 return gst_tag_list_n_tags(gstTagList); 486 } 487 488 /** 489 * Get the name of the tag in list at index. 490 * Params: 491 * index = the index 492 * Returns: The name of the tag at index. 493 */ 494 public string nthTagName(uint index) 495 { 496 // const gchar * gst_tag_list_nth_tag_name (const GstTagList *list, guint index); 497 return Str.toString(gst_tag_list_nth_tag_name(gstTagList, index)); 498 } 499 500 /** 501 * Sets the GValue for a given tag using the specified mode. 502 * Params: 503 * mode = the mode to use 504 * tag = tag 505 * value = GValue for this tag 506 */ 507 public void addValue(GstTagMergeMode mode, string tag, Value value) 508 { 509 // void gst_tag_list_add_value (GstTagList *list, GstTagMergeMode mode, const gchar *tag, const GValue *value); 510 gst_tag_list_add_value(gstTagList, mode, Str.toStringz(tag), (value is null) ? null : value.getValueStruct()); 511 } 512 513 /** 514 * Sets the values for the given tags using the specified mode. 515 * Params: 516 * list = list to set tags in 517 * mode = the mode to use 518 * tag = tag 519 * varArgs = tag / value pairs to set 520 */ 521 public void addValist(GstTagMergeMode mode, string tag, void* varArgs) 522 { 523 // void gst_tag_list_add_valist (GstTagList *list, GstTagMergeMode mode, const gchar *tag, va_list var_args); 524 gst_tag_list_add_valist(gstTagList, mode, Str.toStringz(tag), varArgs); 525 } 526 527 /** 528 * Sets the GValues for the given tags using the specified mode. 529 * Params: 530 * list = list to set tags in 531 * mode = the mode to use 532 * tag = tag 533 * varArgs = tag / GValue pairs to set 534 */ 535 public void addValistValues(GstTagMergeMode mode, string tag, void* varArgs) 536 { 537 // void gst_tag_list_add_valist_values (GstTagList *list, GstTagMergeMode mode, const gchar *tag, va_list var_args); 538 gst_tag_list_add_valist_values(gstTagList, mode, Str.toStringz(tag), varArgs); 539 } 540 541 /** 542 * Removes the given tag from the taglist. 543 * Params: 544 * tag = tag to remove 545 */ 546 public void removeTag(string tag) 547 { 548 // void gst_tag_list_remove_tag (GstTagList *list, const gchar *tag); 549 gst_tag_list_remove_tag(gstTagList, Str.toStringz(tag)); 550 } 551 552 /** 553 * Calls the given function for each tag inside the tag list. Note that if there 554 * is no tag, the function won't be called at all. 555 * Params: 556 * func = function to be called for each tag. [scope call] 557 * userData = user specified data. [closure] 558 */ 559 public void foreac(GstTagForeachFunc func, void* userData) 560 { 561 // void gst_tag_list_foreach (const GstTagList *list, GstTagForeachFunc func, gpointer user_data); 562 gst_tag_list_foreach(gstTagList, func, userData); 563 } 564 565 /** 566 * Gets the value that is at the given index for the given tag in the given 567 * list. 568 * Params: 569 * tag = tag to read out 570 * index = number of entry to read out 571 * Returns: The GValue for the specified entry or NULL if the tag wasn't available or the tag doesn't have as many entries. [transfer none] 572 */ 573 public Value getValueIndex(string tag, uint index) 574 { 575 // const GValue * gst_tag_list_get_value_index (const GstTagList *list, const gchar *tag, guint index); 576 auto p = gst_tag_list_get_value_index(gstTagList, Str.toStringz(tag), index); 577 578 if(p is null) 579 { 580 return null; 581 } 582 583 return ObjectG.getDObject!(Value)(cast(GValue*) p); 584 } 585 586 /** 587 * Copies the contents for the given tag into the value, 588 * merging multiple values into one if multiple values are associated 589 * with the tag. 590 * You must g_value_unset() the value after use. 591 * Params: 592 * dest = uninitialized GValue to copy into. [out caller-allocates] 593 * list = list to get the tag from 594 * tag = tag to read out 595 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 596 */ 597 public static int copyValue(Value dest, TagList list, string tag) 598 { 599 // gboolean gst_tag_list_copy_value (GValue *dest, const GstTagList *list, const gchar *tag); 600 return gst_tag_list_copy_value((dest is null) ? null : dest.getValueStruct(), (list is null) ? null : list.getTagListStruct(), Str.toStringz(tag)); 601 } 602 603 /** 604 * Copies the contents for the given tag into the value, merging multiple values 605 * into one if multiple values are associated with the tag. 606 * Params: 607 * tag = tag to read out 608 * value = location for the result. [out] 609 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 610 */ 611 public int getBoolean(string tag, out int value) 612 { 613 // gboolean gst_tag_list_get_boolean (const GstTagList *list, const gchar *tag, gboolean *value); 614 return gst_tag_list_get_boolean(gstTagList, Str.toStringz(tag), &value); 615 } 616 617 /** 618 * Gets the value that is at the given index for the given tag in the given 619 * list. 620 * Params: 621 * tag = tag to read out 622 * index = number of entry to read out 623 * value = location for the result. [out] 624 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 625 */ 626 public int getBooleanIndex(string tag, uint index, out int value) 627 { 628 // gboolean gst_tag_list_get_boolean_index (const GstTagList *list, const gchar *tag, guint index, gboolean *value); 629 return gst_tag_list_get_boolean_index(gstTagList, Str.toStringz(tag), index, &value); 630 } 631 632 /** 633 * Copies the contents for the given tag into the value, merging multiple values 634 * into one if multiple values are associated with the tag. 635 * Params: 636 * tag = tag to read out 637 * value = location for the result. [out] 638 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 639 */ 640 public int getInt(string tag, out int value) 641 { 642 // gboolean gst_tag_list_get_int (const GstTagList *list, const gchar *tag, gint *value); 643 return gst_tag_list_get_int(gstTagList, Str.toStringz(tag), &value); 644 } 645 646 /** 647 * Gets the value that is at the given index for the given tag in the given 648 * list. 649 * Params: 650 * tag = tag to read out 651 * index = number of entry to read out 652 * value = location for the result. [out] 653 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 654 */ 655 public int getIntIndex(string tag, uint index, out int value) 656 { 657 // gboolean gst_tag_list_get_int_index (const GstTagList *list, const gchar *tag, guint index, gint *value); 658 return gst_tag_list_get_int_index(gstTagList, Str.toStringz(tag), index, &value); 659 } 660 661 /** 662 * Copies the contents for the given tag into the value, merging multiple values 663 * into one if multiple values are associated with the tag. 664 * Params: 665 * tag = tag to read out 666 * value = location for the result. [out] 667 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 668 */ 669 public int getUint(string tag, out uint value) 670 { 671 // gboolean gst_tag_list_get_uint (const GstTagList *list, const gchar *tag, guint *value); 672 return gst_tag_list_get_uint(gstTagList, Str.toStringz(tag), &value); 673 } 674 675 /** 676 * Gets the value that is at the given index for the given tag in the given 677 * list. 678 * Params: 679 * tag = tag to read out 680 * index = number of entry to read out 681 * value = location for the result. [out] 682 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 683 */ 684 public int getUintIndex(string tag, uint index, out uint value) 685 { 686 // gboolean gst_tag_list_get_uint_index (const GstTagList *list, const gchar *tag, guint index, guint *value); 687 return gst_tag_list_get_uint_index(gstTagList, Str.toStringz(tag), index, &value); 688 } 689 690 /** 691 */ 692 public int getInt64(string tag, out long value) 693 { 694 // gboolean gst_tag_list_get_int64 (const GstTagList *list, const gchar *tag, gint64 *value); 695 return gst_tag_list_get_int64(gstTagList, Str.toStringz(tag), &value); 696 } 697 698 /** 699 * Gets the value that is at the given index for the given tag in the given 700 * list. 701 * Params: 702 * tag = tag to read out 703 * index = number of entry to read out 704 * value = location for the result. [out] 705 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 706 */ 707 public int getInt64_Index(string tag, uint index, out long value) 708 { 709 // gboolean gst_tag_list_get_int64_index (const GstTagList *list, const gchar *tag, guint index, gint64 *value); 710 return gst_tag_list_get_int64_index(gstTagList, Str.toStringz(tag), index, &value); 711 } 712 713 /** 714 * Copies the contents for the given tag into the value, merging multiple values 715 * into one if multiple values are associated with the tag. 716 * Params: 717 * tag = tag to read out 718 * value = location for the result. [out] 719 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 720 */ 721 public int getUint64(string tag, out ulong value) 722 { 723 // gboolean gst_tag_list_get_uint64 (const GstTagList *list, const gchar *tag, guint64 *value); 724 return gst_tag_list_get_uint64(gstTagList, Str.toStringz(tag), &value); 725 } 726 727 /** 728 * Gets the value that is at the given index for the given tag in the given 729 * list. 730 * Params: 731 * tag = tag to read out 732 * index = number of entry to read out 733 * value = location for the result. [out] 734 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 735 */ 736 public int getUint64_Index(string tag, uint index, out ulong value) 737 { 738 // gboolean gst_tag_list_get_uint64_index (const GstTagList *list, const gchar *tag, guint index, guint64 *value); 739 return gst_tag_list_get_uint64_index(gstTagList, Str.toStringz(tag), index, &value); 740 } 741 742 /** 743 * Copies the contents for the given tag into the value, merging multiple values 744 * into one if multiple values are associated with the tag. 745 * Params: 746 * tag = tag to read out 747 * value = location for the result. [out] 748 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 749 */ 750 public int getFloat(string tag, out float value) 751 { 752 // gboolean gst_tag_list_get_float (const GstTagList *list, const gchar *tag, gfloat *value); 753 return gst_tag_list_get_float(gstTagList, Str.toStringz(tag), &value); 754 } 755 756 /** 757 * Gets the value that is at the given index for the given tag in the given 758 * list. 759 * Params: 760 * tag = tag to read out 761 * index = number of entry to read out 762 * value = location for the result. [out] 763 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 764 */ 765 public int getFloatIndex(string tag, uint index, out float value) 766 { 767 // gboolean gst_tag_list_get_float_index (const GstTagList *list, const gchar *tag, guint index, gfloat *value); 768 return gst_tag_list_get_float_index(gstTagList, Str.toStringz(tag), index, &value); 769 } 770 771 /** 772 * Copies the contents for the given tag into the value, merging multiple values 773 * into one if multiple values are associated with the tag. 774 * Params: 775 * tag = tag to read out 776 * value = location for the result. [out] 777 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 778 */ 779 public int getDouble(string tag, out double value) 780 { 781 // gboolean gst_tag_list_get_double (const GstTagList *list, const gchar *tag, gdouble *value); 782 return gst_tag_list_get_double(gstTagList, Str.toStringz(tag), &value); 783 } 784 785 /** 786 * Gets the value that is at the given index for the given tag in the given 787 * list. 788 * Params: 789 * tag = tag to read out 790 * index = number of entry to read out 791 * value = location for the result. [out] 792 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 793 */ 794 public int getDoubleIndex(string tag, uint index, out double value) 795 { 796 // gboolean gst_tag_list_get_double_index (const GstTagList *list, const gchar *tag, guint index, gdouble *value); 797 return gst_tag_list_get_double_index(gstTagList, Str.toStringz(tag), index, &value); 798 } 799 800 /** 801 * Copies the contents for the given tag into the value, possibly merging 802 * multiple values into one if multiple values are associated with the tag. 803 * Use gst_tag_list_get_string_index (list, tag, 0, value) if you want 804 * to retrieve the first string associated with this tag unmodified. 805 * The resulting string in value will be in UTF-8 encoding and should be 806 * freed by the caller using g_free when no longer needed. The 807 * returned string is also guaranteed to be non-NULL and non-empty. 808 * Free-function: g_free 809 * Params: 810 * tag = tag to read out 811 * value = location for the result. [out callee-allocates][transfer full] 812 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 813 */ 814 public int getString(string tag, out string value) 815 { 816 // gboolean gst_tag_list_get_string (const GstTagList *list, const gchar *tag, gchar **value); 817 char* outvalue = null; 818 819 auto p = gst_tag_list_get_string(gstTagList, Str.toStringz(tag), &outvalue); 820 821 value = Str.toString(outvalue); 822 return p; 823 } 824 825 /** 826 * Gets the value that is at the given index for the given tag in the given 827 * list. 828 * The resulting string in value will be in UTF-8 encoding and should be 829 * freed by the caller using g_free when no longer needed. The 830 * returned string is also guaranteed to be non-NULL and non-empty. 831 * Free-function: g_free 832 * Params: 833 * tag = tag to read out 834 * index = number of entry to read out 835 * value = location for the result. [out callee-allocates][transfer full] 836 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 837 */ 838 public int getStringIndex(string tag, uint index, out string value) 839 { 840 // gboolean gst_tag_list_get_string_index (const GstTagList *list, const gchar *tag, guint index, gchar **value); 841 char* outvalue = null; 842 843 auto p = gst_tag_list_get_string_index(gstTagList, Str.toStringz(tag), index, &outvalue); 844 845 value = Str.toString(outvalue); 846 return p; 847 } 848 849 /** 850 * Peeks at the value that is at the given index for the given tag in the given 851 * list. 852 * The resulting string in value will be in UTF-8 encoding and doesn't need 853 * to be freed by the caller. The returned string is also guaranteed to 854 * be non-NULL and non-empty. 855 * Params: 856 * tag = tag to read out 857 * index = number of entry to read out 858 * value = location for the result. [out][transfer none] 859 * Returns: TRUE, if a value was set, FALSE if the tag didn't exist in the given list. 860 */ 861 public int peekStringIndex(string tag, uint index, out string value) 862 { 863 // gboolean gst_tag_list_peek_string_index (const GstTagList *list, const gchar *tag, guint index, const gchar **value); 864 char* outvalue = null; 865 866 auto p = gst_tag_list_peek_string_index(gstTagList, Str.toStringz(tag), index, &outvalue); 867 868 value = Str.toString(outvalue); 869 return p; 870 } 871 872 /** 873 * Copies the contents for the given tag into the value, merging multiple values 874 * into one if multiple values are associated with the tag. 875 * Params: 876 * tag = tag to read out 877 * value = location for the result. [out][transfer none] 878 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 879 */ 880 public int getPointer(string tag, out void* value) 881 { 882 // gboolean gst_tag_list_get_pointer (const GstTagList *list, const gchar *tag, gpointer *value); 883 return gst_tag_list_get_pointer(gstTagList, Str.toStringz(tag), &value); 884 } 885 886 /** 887 * Gets the value that is at the given index for the given tag in the given 888 * list. 889 * Params: 890 * tag = tag to read out 891 * index = number of entry to read out 892 * value = location for the result. [out][transfer none] 893 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list. 894 */ 895 public int getPointerIndex(string tag, uint index, out void* value) 896 { 897 // gboolean gst_tag_list_get_pointer_index (const GstTagList *list, const gchar *tag, guint index, gpointer *value); 898 return gst_tag_list_get_pointer_index(gstTagList, Str.toStringz(tag), index, &value); 899 } 900 901 /** 902 * Copies the first date for the given tag in the taglist into the variable 903 * pointed to by value. Free the date with g_date_free() when it is no longer 904 * needed. 905 * Free-function: g_date_free 906 * Params: 907 * tag = tag to read out 908 * value = address of a GDate pointer 909 * variable to store the result into. [out callee-allocates][transfer full] 910 * Returns: TRUE, if a date was copied, FALSE if the tag didn't exist in the given list or if it was NULL. 911 */ 912 public int getDate(string tag, out Date value) 913 { 914 // gboolean gst_tag_list_get_date (const GstTagList *list, const gchar *tag, GDate **value); 915 GDate* outvalue = null; 916 917 auto p = gst_tag_list_get_date(gstTagList, Str.toStringz(tag), &outvalue); 918 919 value = ObjectG.getDObject!(Date)(outvalue); 920 return p; 921 } 922 923 /** 924 * Gets the date that is at the given index for the given tag in the given 925 * list and copies it into the variable pointed to by value. Free the date 926 * with g_date_free() when it is no longer needed. 927 * Free-function: g_date_free 928 * Params: 929 * tag = tag to read out 930 * index = number of entry to read out 931 * value = location for the result. [out callee-allocates][transfer full] 932 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list or if it was NULL. 933 */ 934 public int getDateIndex(string tag, uint index, out Date value) 935 { 936 // gboolean gst_tag_list_get_date_index (const GstTagList *list, const gchar *tag, guint index, GDate **value); 937 GDate* outvalue = null; 938 939 auto p = gst_tag_list_get_date_index(gstTagList, Str.toStringz(tag), index, &outvalue); 940 941 value = ObjectG.getDObject!(Date)(outvalue); 942 return p; 943 } 944 945 /** 946 * Copies the first datetime for the given tag in the taglist into the variable 947 * pointed to by value. Unref the date with gst_date_time_unref() when 948 * it is no longer needed. 949 * Free-function: gst_date_time_unref 950 * Params: 951 * tag = tag to read out 952 * value = address of a GstDateTime 953 * pointer variable to store the result into. [out callee-allocates][transfer full] 954 * Returns: TRUE, if a datetime was copied, FALSE if the tag didn't exist in thegiven list or if it was NULL. 955 */ 956 public int getDateTime(string tag, out DateTime value) 957 { 958 // gboolean gst_tag_list_get_date_time (const GstTagList *list, const gchar *tag, GstDateTime **value); 959 GstDateTime* outvalue = null; 960 961 auto p = gst_tag_list_get_date_time(gstTagList, Str.toStringz(tag), &outvalue); 962 963 value = ObjectG.getDObject!(DateTime)(outvalue); 964 return p; 965 } 966 967 /** 968 * Gets the datetime that is at the given index for the given tag in the given 969 * list and copies it into the variable pointed to by value. Unref the datetime 970 * with gst_date_time_unref() when it is no longer needed. 971 * Free-function: gst_date_time_unref 972 * Params: 973 * tag = tag to read out 974 * index = number of entry to read out 975 * value = location for the result. [out callee-allocates][transfer full] 976 * Returns: TRUE, if a value was copied, FALSE if the tag didn't exist in the given list or if it was NULL. 977 */ 978 public int getDateTimeIndex(string tag, uint index, out DateTime value) 979 { 980 // gboolean gst_tag_list_get_date_time_index (const GstTagList *list, const gchar *tag, guint index, GstDateTime **value); 981 GstDateTime* outvalue = null; 982 983 auto p = gst_tag_list_get_date_time_index(gstTagList, Str.toStringz(tag), index, &outvalue); 984 985 value = ObjectG.getDObject!(DateTime)(outvalue); 986 return p; 987 } 988 989 /** 990 * Copies the first sample for the given tag in the taglist into the variable 991 * pointed to by sample. Free the sample with gst_sample_unref() when it is 992 * no longer needed. You can retrieve the buffer from the sample using 993 * gst_sample_get_buffer() and the associated caps (if any) with 994 * gst_sample_get_caps(). 995 * Free-function: gst_sample_unref 996 * Params: 997 * tag = tag to read out 998 * sample = address of a GstSample 999 * pointer variable to store the result into. [out callee-allocates][transfer full] 1000 * Returns: TRUE, if a sample was returned, FALSE if the tag didn't exist in the given list or if it was NULL. 1001 */ 1002 public int getSample(string tag, out Sample sample) 1003 { 1004 // gboolean gst_tag_list_get_sample (const GstTagList *list, const gchar *tag, GstSample **sample); 1005 GstSample* outsample = null; 1006 1007 auto p = gst_tag_list_get_sample(gstTagList, Str.toStringz(tag), &outsample); 1008 1009 sample = ObjectG.getDObject!(Sample)(outsample); 1010 return p; 1011 } 1012 1013 /** 1014 * Gets the sample that is at the given index for the given tag in the given 1015 * list and copies it into the variable pointed to by smple. Free the sample 1016 * with gst_sample_unref() when it is no longer needed. You can retrieve the 1017 * buffer from the sample using gst_sample_get_buffer() and the associated 1018 * caps (if any) with gst_sample_get_caps(). 1019 * Free-function: gst_sample_unref 1020 * Params: 1021 * tag = tag to read out 1022 * index = number of entry to read out 1023 * sample = address of a GstSample 1024 * pointer variable to store the result into. [out callee-allocates][transfer full] 1025 * Returns: TRUE, if a sample was copied, FALSE if the tag didn't exist in the given list or if it was NULL. 1026 */ 1027 public int getSampleIndex(string tag, uint index, out Sample sample) 1028 { 1029 // gboolean gst_tag_list_get_sample_index (const GstTagList *list, const gchar *tag, guint index, GstSample **sample); 1030 GstSample* outsample = null; 1031 1032 auto p = gst_tag_list_get_sample_index(gstTagList, Str.toStringz(tag), index, &outsample); 1033 1034 sample = ObjectG.getDObject!(Sample)(outsample); 1035 return p; 1036 } 1037 }