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 module gstreamer.c.types; 26 27 public import glib.c.types; 28 public import gobject.c.types; 29 30 31 /** 32 * A datatype to hold the handle to an outstanding sync or async clock callback. 33 */ 34 public alias void* GstClockID; 35 36 /** 37 * A datatype to hold a time, measured in nanoseconds. 38 */ 39 public alias ulong GstClockTime; 40 41 /** 42 * A datatype to hold a time difference, measured in nanoseconds. 43 */ 44 public alias long GstClockTimeDiff; 45 46 public alias ulong GstElementFactoryListType; 47 48 /** 49 * Flags for allocators. 50 */ 51 public enum GstAllocatorFlags 52 { 53 /** 54 * The allocator has a custom alloc function. 55 */ 56 CUSTOM_ALLOC = 16, 57 /** 58 * first flag that can be used for custom purposes 59 */ 60 LAST = 1048576, 61 } 62 alias GstAllocatorFlags AllocatorFlags; 63 64 /** 65 * GstBinFlags are a set of flags specific to bins. Most are set/used 66 * internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro, 67 * and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET (). 68 */ 69 public enum GstBinFlags 70 { 71 /** 72 * don't resync a state change when elements are 73 * added or linked in the bin (Since 1.0.5) 74 */ 75 NO_RESYNC = 16384, 76 /** 77 * Indicates whether the bin can handle elements 78 * that add/remove source pads at any point in time without 79 * first posting a no-more-pads signal (Since 1.10) 80 */ 81 STREAMS_AWARE = 32768, 82 /** 83 * the last enum in the series of flags for bins. 84 * Derived classes can use this as first value in a list of flags. 85 */ 86 LAST = 524288, 87 } 88 alias GstBinFlags BinFlags; 89 90 /** 91 * A set of flags that can be provided to the gst_buffer_copy_into() 92 * function to specify which items should be copied. 93 */ 94 public enum GstBufferCopyFlags 95 { 96 /** 97 * copy nothing 98 */ 99 NONE = 0, 100 /** 101 * flag indicating that buffer flags should be copied 102 */ 103 FLAGS = 1, 104 /** 105 * flag indicating that buffer pts, dts, 106 * duration, offset and offset_end should be copied 107 */ 108 TIMESTAMPS = 2, 109 /** 110 * flag indicating that buffer meta should be 111 * copied 112 */ 113 META = 4, 114 /** 115 * flag indicating that buffer memory should be reffed 116 * and appended to already existing memory. Unless the memory is marked as 117 * NO_SHARE, no actual copy of the memory is made but it is simply reffed. 118 * Add @GST_BUFFER_COPY_DEEP to force a real copy. 119 */ 120 MEMORY = 8, 121 /** 122 * flag indicating that buffer memory should be 123 * merged 124 */ 125 MERGE = 16, 126 /** 127 * flag indicating that memory should always be 128 * copied instead of reffed (Since 1.2) 129 */ 130 DEEP = 32, 131 } 132 alias GstBufferCopyFlags BufferCopyFlags; 133 134 /** 135 * A set of buffer flags used to describe properties of a #GstBuffer. 136 */ 137 public enum GstBufferFlags 138 { 139 /** 140 * the buffer is live data and should be discarded in 141 * the PAUSED state. 142 */ 143 LIVE = 16, 144 /** 145 * the buffer contains data that should be dropped 146 * because it will be clipped against the segment 147 * boundaries or because it does not contain data 148 * that should be shown to the user. 149 */ 150 DECODE_ONLY = 32, 151 /** 152 * the buffer marks a data discontinuity in the stream. 153 * This typically occurs after a seek or a dropped buffer 154 * from a live or network source. 155 */ 156 DISCONT = 64, 157 /** 158 * the buffer timestamps might have a discontinuity 159 * and this buffer is a good point to resynchronize. 160 */ 161 RESYNC = 128, 162 /** 163 * the buffer data is corrupted. 164 */ 165 CORRUPTED = 256, 166 /** 167 * the buffer contains a media specific marker. for 168 * video this is typically the end of a frame boundary, for audio 169 * this is usually the start of a talkspurt. 170 */ 171 MARKER = 512, 172 /** 173 * the buffer contains header information that is 174 * needed to decode the following data. 175 */ 176 HEADER = 1024, 177 /** 178 * the buffer has been created to fill a gap in the 179 * stream and contains media neutral data (elements can 180 * switch to optimized code path that ignores the buffer 181 * content). 182 */ 183 GAP = 2048, 184 /** 185 * the buffer can be dropped without breaking the 186 * stream, for example to reduce bandwidth. 187 */ 188 DROPPABLE = 4096, 189 /** 190 * this unit cannot be decoded independently. 191 */ 192 DELTA_UNIT = 8192, 193 /** 194 * this flag is set when memory of the buffer 195 * is added/removed 196 */ 197 TAG_MEMORY = 16384, 198 /** 199 * Elements which write to disk or permanent 200 * storage should ensure the data is synced after 201 * writing the contents of this buffer. (Since 1.6) 202 */ 203 SYNC_AFTER = 32768, 204 /** 205 * additional media specific flags can be added starting from 206 * this flag. 207 */ 208 LAST = 1048576, 209 } 210 alias GstBufferFlags BufferFlags; 211 212 /** 213 * Additional flags to control the allocation of a buffer 214 */ 215 public enum GstBufferPoolAcquireFlags 216 { 217 /** 218 * no flags 219 */ 220 NONE = 0, 221 /** 222 * buffer is keyframe 223 */ 224 KEY_UNIT = 1, 225 /** 226 * when the bufferpool is empty, acquire_buffer 227 * will by default block until a buffer is released into the pool again. Setting 228 * this flag makes acquire_buffer return #GST_FLOW_EOS instead of blocking. 229 */ 230 DONTWAIT = 2, 231 /** 232 * buffer is discont 233 */ 234 DISCONT = 4, 235 /** 236 * last flag, subclasses can use private flags 237 * starting from this value. 238 */ 239 LAST = 65536, 240 } 241 alias GstBufferPoolAcquireFlags BufferPoolAcquireFlags; 242 243 /** 244 * The different types of buffering methods. 245 */ 246 public enum GstBufferingMode 247 { 248 /** 249 * a small amount of data is buffered 250 */ 251 STREAM = 0, 252 /** 253 * the stream is being downloaded 254 */ 255 DOWNLOAD = 1, 256 /** 257 * the stream is being downloaded in a ringbuffer 258 */ 259 TIMESHIFT = 2, 260 /** 261 * the stream is a live stream 262 */ 263 LIVE = 3, 264 } 265 alias GstBufferingMode BufferingMode; 266 267 /** 268 * The standard flags that a bus may have. 269 */ 270 public enum GstBusFlags 271 { 272 /** 273 * The bus is currently dropping all messages 274 */ 275 FLUSHING = 16, 276 /** 277 * offset to define more flags 278 */ 279 FLAG_LAST = 32, 280 } 281 alias GstBusFlags BusFlags; 282 283 /** 284 * The result values for a GstBusSyncHandler. 285 */ 286 public enum GstBusSyncReply 287 { 288 /** 289 * drop the message 290 */ 291 DROP = 0, 292 /** 293 * pass the message to the async queue 294 */ 295 PASS = 1, 296 /** 297 * pass message to async queue, continue if message is handled 298 */ 299 ASYNC = 2, 300 } 301 alias GstBusSyncReply BusSyncReply; 302 303 /** 304 * Extra flags for a caps. 305 */ 306 public enum GstCapsFlags 307 { 308 /** 309 * Caps has no specific content, but can contain 310 * anything. 311 */ 312 ANY = 16, 313 } 314 alias GstCapsFlags CapsFlags; 315 316 /** 317 * Modes of caps intersection 318 * 319 * @GST_CAPS_INTERSECT_ZIG_ZAG tries to preserve overall order of both caps 320 * by iterating on the caps' structures as the following matrix shows: 321 * |[ 322 * caps1 323 * +------------- 324 * | 1 2 4 7 325 * caps2 | 3 5 8 10 326 * | 6 9 11 12 327 * ]| 328 * Used when there is no explicit precedence of one caps over the other. e.g. 329 * tee's sink pad getcaps function, it will probe its src pad peers' for their 330 * caps and intersect them with this mode. 331 * 332 * @GST_CAPS_INTERSECT_FIRST is useful when an element wants to preserve 333 * another element's caps priority order when intersecting with its own caps. 334 * Example: If caps1 is [A, B, C] and caps2 is [E, B, D, A], the result 335 * would be [A, B], maintaining the first caps priority on the intersection. 336 */ 337 public enum GstCapsIntersectMode 338 { 339 /** 340 * Zig-zags over both caps. 341 */ 342 ZIG_ZAG = 0, 343 /** 344 * Keeps the first caps order. 345 */ 346 FIRST = 1, 347 } 348 alias GstCapsIntersectMode CapsIntersectMode; 349 350 /** 351 * The type of the clock entry 352 */ 353 public enum GstClockEntryType 354 { 355 /** 356 * a single shot timeout 357 */ 358 SINGLE = 0, 359 /** 360 * a periodic timeout request 361 */ 362 PERIODIC = 1, 363 } 364 alias GstClockEntryType ClockEntryType; 365 366 /** 367 * The capabilities of this clock 368 */ 369 public enum GstClockFlags 370 { 371 /** 372 * clock can do a single sync timeout request 373 */ 374 CAN_DO_SINGLE_SYNC = 16, 375 /** 376 * clock can do a single async timeout request 377 */ 378 CAN_DO_SINGLE_ASYNC = 32, 379 /** 380 * clock can do sync periodic timeout requests 381 */ 382 CAN_DO_PERIODIC_SYNC = 64, 383 /** 384 * clock can do async periodic timeout callbacks 385 */ 386 CAN_DO_PERIODIC_ASYNC = 128, 387 /** 388 * clock's resolution can be changed 389 */ 390 CAN_SET_RESOLUTION = 256, 391 /** 392 * clock can be slaved to a master clock 393 */ 394 CAN_SET_MASTER = 512, 395 /** 396 * clock needs to be synced before it can be used 397 * (Since 1.6) 398 */ 399 NEEDS_STARTUP_SYNC = 1024, 400 /** 401 * subclasses can add additional flags starting from this flag 402 */ 403 LAST = 4096, 404 } 405 alias GstClockFlags ClockFlags; 406 407 /** 408 * The return value of a clock operation. 409 */ 410 public enum GstClockReturn 411 { 412 /** 413 * The operation succeeded. 414 */ 415 OK = 0, 416 /** 417 * The operation was scheduled too late. 418 */ 419 EARLY = 1, 420 /** 421 * The clockID was unscheduled 422 */ 423 UNSCHEDULED = 2, 424 /** 425 * The ClockID is busy 426 */ 427 BUSY = 3, 428 /** 429 * A bad time was provided to a function. 430 */ 431 BADTIME = 4, 432 /** 433 * An error occurred 434 */ 435 ERROR = 5, 436 /** 437 * Operation is not supported 438 */ 439 UNSUPPORTED = 6, 440 /** 441 * The ClockID is done waiting 442 */ 443 DONE = 7, 444 } 445 alias GstClockReturn ClockReturn; 446 447 /** 448 * The different kind of clocks. 449 */ 450 public enum GstClockType 451 { 452 /** 453 * time since Epoch 454 */ 455 REALTIME = 0, 456 /** 457 * monotonic time since some unspecified starting 458 * point 459 */ 460 MONOTONIC = 1, 461 /** 462 * some other time source is used (Since 1.0.5) 463 */ 464 OTHER = 2, 465 } 466 alias GstClockType ClockType; 467 468 /** 469 * Core errors are errors inside the core GStreamer library. 470 */ 471 public enum GstCoreError 472 { 473 /** 474 * a general error which doesn't fit in any other 475 * category. Make sure you add a custom message to the error call. 476 */ 477 FAILED = 1, 478 /** 479 * do not use this except as a placeholder for 480 * deciding where to go while developing code. 481 */ 482 TOO_LAZY = 2, 483 /** 484 * use this when you do not want to implement 485 * this functionality yet. 486 */ 487 NOT_IMPLEMENTED = 3, 488 /** 489 * used for state change errors. 490 */ 491 STATE_CHANGE = 4, 492 /** 493 * used for pad-related errors. 494 */ 495 PAD = 5, 496 /** 497 * used for thread-related errors. 498 */ 499 THREAD = 6, 500 /** 501 * used for negotiation-related errors. 502 */ 503 NEGOTIATION = 7, 504 /** 505 * used for event-related errors. 506 */ 507 EVENT = 8, 508 /** 509 * used for seek-related errors. 510 */ 511 SEEK = 9, 512 /** 513 * used for caps-related errors. 514 */ 515 CAPS = 10, 516 /** 517 * used for negotiation-related errors. 518 */ 519 TAG = 11, 520 /** 521 * used if a plugin is missing. 522 */ 523 MISSING_PLUGIN = 12, 524 /** 525 * used for clock related errors. 526 */ 527 CLOCK = 13, 528 /** 529 * used if functionality has been disabled at 530 * compile time. 531 */ 532 DISABLED = 14, 533 /** 534 * the number of core error types. 535 */ 536 NUM_ERRORS = 15, 537 } 538 alias GstCoreError CoreError; 539 540 /** 541 * These are some terminal style flags you can use when creating your 542 * debugging categories to make them stand out in debugging output. 543 */ 544 public enum GstDebugColorFlags 545 { 546 /** 547 * Use black as foreground color. 548 */ 549 FG_BLACK = 0, 550 /** 551 * Use red as foreground color. 552 */ 553 FG_RED = 1, 554 /** 555 * Use green as foreground color. 556 */ 557 FG_GREEN = 2, 558 /** 559 * Use yellow as foreground color. 560 */ 561 FG_YELLOW = 3, 562 /** 563 * Use blue as foreground color. 564 */ 565 FG_BLUE = 4, 566 /** 567 * Use magenta as foreground color. 568 */ 569 FG_MAGENTA = 5, 570 /** 571 * Use cyan as foreground color. 572 */ 573 FG_CYAN = 6, 574 /** 575 * Use white as foreground color. 576 */ 577 FG_WHITE = 7, 578 /** 579 * Use black as background color. 580 */ 581 BG_BLACK = 0, 582 /** 583 * Use red as background color. 584 */ 585 BG_RED = 16, 586 /** 587 * Use green as background color. 588 */ 589 BG_GREEN = 32, 590 /** 591 * Use yellow as background color. 592 */ 593 BG_YELLOW = 48, 594 /** 595 * Use blue as background color. 596 */ 597 BG_BLUE = 64, 598 /** 599 * Use magenta as background color. 600 */ 601 BG_MAGENTA = 80, 602 /** 603 * Use cyan as background color. 604 */ 605 BG_CYAN = 96, 606 /** 607 * Use white as background color. 608 */ 609 BG_WHITE = 112, 610 /** 611 * Make the output bold. 612 */ 613 BOLD = 256, 614 /** 615 * Underline the output. 616 */ 617 UNDERLINE = 512, 618 } 619 alias GstDebugColorFlags DebugColorFlags; 620 621 public enum GstDebugColorMode 622 { 623 /** 624 * Do not use colors in logs. 625 */ 626 OFF = 0, 627 /** 628 * Paint logs in a platform-specific way. 629 */ 630 ON = 1, 631 /** 632 * Paint logs with UNIX terminal color codes 633 * no matter what platform GStreamer is running on. 634 */ 635 UNIX = 2, 636 } 637 alias GstDebugColorMode DebugColorMode; 638 639 /** 640 * Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE() 641 * and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(). 642 */ 643 public enum GstDebugGraphDetails 644 { 645 /** 646 * show caps-name on edges 647 */ 648 MEDIA_TYPE = 1, 649 /** 650 * show caps-details on edges 651 */ 652 CAPS_DETAILS = 2, 653 /** 654 * show modified parameters on 655 * elements 656 */ 657 NON_DEFAULT_PARAMS = 4, 658 /** 659 * show element states 660 */ 661 STATES = 8, 662 /** 663 * show full element parameter values even 664 * if they are very long 665 */ 666 FULL_PARAMS = 16, 667 /** 668 * show all the typical details that one might want 669 */ 670 ALL = 15, 671 /** 672 * show all details regardless of how large or 673 * verbose they make the resulting output 674 */ 675 VERBOSE = -1, 676 } 677 alias GstDebugGraphDetails DebugGraphDetails; 678 679 /** 680 * The level defines the importance of a debugging message. The more important a 681 * message is, the greater the probability that the debugging system outputs it. 682 */ 683 public enum GstDebugLevel 684 { 685 /** 686 * No debugging level specified or desired. Used to deactivate 687 * debugging output. 688 */ 689 NONE = 0, 690 /** 691 * Error messages are to be used only when an error occurred 692 * that stops the application from keeping working correctly. 693 * An examples is gst_element_error, which outputs a message with this priority. 694 * It does not mean that the application is terminating as with g_error. 695 */ 696 ERROR = 1, 697 /** 698 * Warning messages are to inform about abnormal behaviour 699 * that could lead to problems or weird behaviour later on. An example of this 700 * would be clocking issues ("your computer is pretty slow") or broken input 701 * data ("Can't synchronize to stream.") 702 */ 703 WARNING = 2, 704 /** 705 * Fixme messages are messages that indicate that something 706 * in the executed code path is not fully implemented or handled yet. Note 707 * that this does not replace proper error handling in any way, the purpose 708 * of this message is to make it easier to spot incomplete/unfinished pieces 709 * of code when reading the debug log. 710 */ 711 FIXME = 3, 712 /** 713 * Informational messages should be used to keep the developer 714 * updated about what is happening. 715 * Examples where this should be used are when a typefind function has 716 * successfully determined the type of the stream or when an mp3 plugin detects 717 * the format to be used. ("This file has mono sound.") 718 */ 719 INFO = 4, 720 /** 721 * Debugging messages should be used when something common 722 * happens that is not the expected default behavior, or something that's 723 * useful to know but doesn't happen all the time (ie. per loop iteration or 724 * buffer processed or event handled). 725 * An example would be notifications about state changes or receiving/sending 726 * of events. 727 */ 728 DEBUG = 5, 729 /** 730 * Log messages are messages that are very common but might be 731 * useful to know. As a rule of thumb a pipeline that is running as expected 732 * should never output anything else but LOG messages whilst processing data. 733 * Use this log level to log recurring information in chain functions and 734 * loop functions, for example. 735 */ 736 LOG = 6, 737 /** 738 * Tracing-related messages. 739 * Examples for this are referencing/dereferencing of objects. 740 */ 741 TRACE = 7, 742 /** 743 * memory dump messages are used to log (small) chunks of 744 * data as memory dumps in the log. They will be displayed as hexdump with 745 * ASCII characters. 746 */ 747 MEMDUMP = 9, 748 /** 749 * The number of defined debugging levels. 750 */ 751 COUNT = 10, 752 } 753 alias GstDebugLevel DebugLevel; 754 755 /** 756 * The standard flags that an element may have. 757 */ 758 public enum GstElementFlags 759 { 760 /** 761 * ignore state changes from parent 762 */ 763 LOCKED_STATE = 16, 764 /** 765 * the element is a sink 766 */ 767 SINK = 32, 768 /** 769 * the element is a source. 770 */ 771 SOURCE = 64, 772 /** 773 * the element can provide a clock 774 */ 775 PROVIDE_CLOCK = 128, 776 /** 777 * the element requires a clock 778 */ 779 REQUIRE_CLOCK = 256, 780 /** 781 * the element can use an index 782 */ 783 INDEXABLE = 512, 784 /** 785 * offset to define more flags 786 */ 787 LAST = 16384, 788 } 789 alias GstElementFlags ElementFlags; 790 791 /** 792 * #GstEventType lists the standard event types that can be sent in a pipeline. 793 * 794 * The custom event types can be used for private messages between elements 795 * that can't be expressed using normal 796 * GStreamer buffer passing semantics. Custom events carry an arbitrary 797 * #GstStructure. 798 * Specific custom events are distinguished by the name of the structure. 799 */ 800 public enum GstEventType 801 { 802 /** 803 * unknown event. 804 */ 805 UNKNOWN = 0, 806 /** 807 * Start a flush operation. This event clears all data 808 * from the pipeline and unblock all streaming threads. 809 */ 810 FLUSH_START = 2563, 811 /** 812 * Stop a flush operation. This event resets the 813 * running-time of the pipeline. 814 */ 815 FLUSH_STOP = 5127, 816 /** 817 * Event to mark the start of a new stream. Sent before any 818 * other serialized event and only sent at the start of a new stream, 819 * not after flushing seeks. 820 */ 821 STREAM_START = 10254, 822 /** 823 * #GstCaps event. Notify the pad of a new media type. 824 */ 825 CAPS = 12814, 826 /** 827 * A new media segment follows in the dataflow. The 828 * segment events contains information for clipping buffers and 829 * converting buffer timestamps to running-time and 830 * stream-time. 831 */ 832 SEGMENT = 17934, 833 /** 834 * A new #GstStreamCollection is available (Since 1.10) 835 */ 836 STREAM_COLLECTION = 19230, 837 /** 838 * A new set of metadata tags has been found in the stream. 839 */ 840 TAG = 20510, 841 /** 842 * Notification of buffering requirements. Currently not 843 * used yet. 844 */ 845 BUFFERSIZE = 23054, 846 /** 847 * An event that sinks turn into a message. Used to 848 * send messages that should be emitted in sync with 849 * rendering. 850 */ 851 SINK_MESSAGE = 25630, 852 /** 853 * Indicates that there is no more data for 854 * the stream group ID in the message. Sent before EOS 855 * in some instances and should be handled mostly the same. (Since 1.10) 856 */ 857 STREAM_GROUP_DONE = 26894, 858 /** 859 * End-Of-Stream. No more data is to be expected to follow 860 * without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT 861 * event. 862 */ 863 EOS = 28174, 864 /** 865 * An event which indicates that a new table of contents (TOC) 866 * was found or updated. 867 */ 868 TOC = 30750, 869 /** 870 * An event which indicates that new or updated 871 * encryption information has been found in the stream. 872 */ 873 PROTECTION = 33310, 874 /** 875 * Marks the end of a segment playback. 876 */ 877 SEGMENT_DONE = 38406, 878 /** 879 * Marks a gap in the datastream. 880 */ 881 GAP = 40966, 882 /** 883 * A quality message. Used to indicate to upstream elements 884 * that the downstream elements should adjust their processing 885 * rate. 886 */ 887 QOS = 48641, 888 /** 889 * A request for a new playback position and rate. 890 */ 891 SEEK = 51201, 892 /** 893 * Navigation events are usually used for communicating 894 * user requests, such as mouse or keyboard movements, 895 * to upstream elements. 896 */ 897 NAVIGATION = 53761, 898 /** 899 * Notification of new latency adjustment. Sinks will use 900 * the latency information to adjust their synchronisation. 901 */ 902 LATENCY = 56321, 903 /** 904 * A request for stepping through the media. Sinks will usually 905 * execute the step operation. 906 */ 907 STEP = 58881, 908 /** 909 * A request for upstream renegotiating caps and reconfiguring. 910 */ 911 RECONFIGURE = 61441, 912 /** 913 * A request for a new playback position based on TOC 914 * entry's UID. 915 */ 916 TOC_SELECT = 64001, 917 /** 918 * A request to select one or more streams (Since 1.10) 919 */ 920 SELECT_STREAMS = 66561, 921 /** 922 * Upstream custom event 923 */ 924 CUSTOM_UPSTREAM = 69121, 925 /** 926 * Downstream custom event that travels in the 927 * data flow. 928 */ 929 CUSTOM_DOWNSTREAM = 71686, 930 /** 931 * Custom out-of-band downstream event. 932 */ 933 CUSTOM_DOWNSTREAM_OOB = 74242, 934 /** 935 * Custom sticky downstream event. 936 */ 937 CUSTOM_DOWNSTREAM_STICKY = 76830, 938 /** 939 * Custom upstream or downstream event. 940 * In-band when travelling downstream. 941 */ 942 CUSTOM_BOTH = 79367, 943 /** 944 * Custom upstream or downstream out-of-band event. 945 */ 946 CUSTOM_BOTH_OOB = 81923, 947 } 948 alias GstEventType EventType; 949 950 /** 951 * #GstEventTypeFlags indicate the aspects of the different #GstEventType 952 * values. You can get the type flags of a #GstEventType with the 953 * gst_event_type_get_flags() function. 954 */ 955 public enum GstEventTypeFlags 956 { 957 /** 958 * Set if the event can travel upstream. 959 */ 960 UPSTREAM = 1, 961 /** 962 * Set if the event can travel downstream. 963 */ 964 DOWNSTREAM = 2, 965 /** 966 * Set if the event should be serialized with data 967 * flow. 968 */ 969 SERIALIZED = 4, 970 /** 971 * Set if the event is sticky on the pads. 972 */ 973 STICKY = 8, 974 /** 975 * Multiple sticky events can be on a pad, each 976 * identified by the event name. 977 */ 978 STICKY_MULTI = 16, 979 } 980 alias GstEventTypeFlags EventTypeFlags; 981 982 /** 983 * The result of passing data to a pad. 984 * 985 * Note that the custom return values should not be exposed outside of the 986 * element scope. 987 */ 988 public enum GstFlowReturn 989 { 990 /** 991 * Pre-defined custom success code. 992 */ 993 CUSTOM_SUCCESS_2 = 102, 994 /** 995 * Pre-defined custom success code (define your 996 * custom success code to this to avoid compiler 997 * warnings). 998 */ 999 CUSTOM_SUCCESS_1 = 101, 1000 /** 1001 * Elements can use values starting from 1002 * this (and higher) to define custom success 1003 * codes. 1004 */ 1005 CUSTOM_SUCCESS = 100, 1006 /** 1007 * Data passing was ok. 1008 */ 1009 OK = 0, 1010 /** 1011 * Pad is not linked. 1012 */ 1013 NOT_LINKED = -1, 1014 /** 1015 * Pad is flushing. 1016 */ 1017 FLUSHING = -2, 1018 /** 1019 * Pad is EOS. 1020 */ 1021 EOS = -3, 1022 /** 1023 * Pad is not negotiated. 1024 */ 1025 NOT_NEGOTIATED = -4, 1026 /** 1027 * Some (fatal) error occurred. Element generating 1028 * this error should post an error message with more 1029 * details. 1030 */ 1031 ERROR = -5, 1032 /** 1033 * This operation is not supported. 1034 */ 1035 NOT_SUPPORTED = -6, 1036 /** 1037 * Elements can use values starting from 1038 * this (and lower) to define custom error codes. 1039 */ 1040 CUSTOM_ERROR = -100, 1041 /** 1042 * Pre-defined custom error code (define your 1043 * custom error code to this to avoid compiler 1044 * warnings). 1045 */ 1046 CUSTOM_ERROR_1 = -101, 1047 /** 1048 * Pre-defined custom error code. 1049 */ 1050 CUSTOM_ERROR_2 = -102, 1051 } 1052 alias GstFlowReturn FlowReturn; 1053 1054 /** 1055 * Standard predefined formats 1056 */ 1057 public enum GstFormat 1058 { 1059 /** 1060 * undefined format 1061 */ 1062 UNDEFINED = 0, 1063 /** 1064 * the default format of the pad/element. This can be 1065 * samples for raw audio, frames/fields for raw video (some, but not all, 1066 * elements support this; use @GST_FORMAT_TIME if you don't have a good 1067 * reason to query for samples/frames) 1068 */ 1069 DEFAULT = 1, 1070 /** 1071 * bytes 1072 */ 1073 BYTES = 2, 1074 /** 1075 * time in nanoseconds 1076 */ 1077 TIME = 3, 1078 /** 1079 * buffers (few, if any, elements implement this as of 1080 * May 2009) 1081 */ 1082 BUFFERS = 4, 1083 /** 1084 * percentage of stream (few, if any, elements implement 1085 * this as of May 2009) 1086 */ 1087 PERCENT = 5, 1088 } 1089 alias GstFormat Format; 1090 1091 /** 1092 * The result of a #GstIteratorItemFunction. 1093 */ 1094 public enum GstIteratorItem 1095 { 1096 /** 1097 * Skip this item 1098 */ 1099 SKIP = 0, 1100 /** 1101 * Return item 1102 */ 1103 PASS = 1, 1104 /** 1105 * Stop after this item. 1106 */ 1107 END = 2, 1108 } 1109 alias GstIteratorItem IteratorItem; 1110 1111 /** 1112 * The result of gst_iterator_next(). 1113 */ 1114 public enum GstIteratorResult 1115 { 1116 /** 1117 * No more items in the iterator 1118 */ 1119 DONE = 0, 1120 /** 1121 * An item was retrieved 1122 */ 1123 OK = 1, 1124 /** 1125 * Datastructure changed while iterating 1126 */ 1127 RESYNC = 2, 1128 /** 1129 * An error happened 1130 */ 1131 ERROR = 3, 1132 } 1133 alias GstIteratorResult IteratorResult; 1134 1135 /** 1136 * Library errors are for errors from the library being used by elements 1137 * (initializing, finalizing, settings, ...) 1138 */ 1139 public enum GstLibraryError 1140 { 1141 /** 1142 * a general error which doesn't fit in any other 1143 * category. Make sure you add a custom message to the error call. 1144 */ 1145 FAILED = 1, 1146 /** 1147 * do not use this except as a placeholder for 1148 * deciding where to go while developing code. 1149 */ 1150 TOO_LAZY = 2, 1151 /** 1152 * used when the library could not be opened. 1153 */ 1154 INIT = 3, 1155 /** 1156 * used when the library could not be closed. 1157 */ 1158 SHUTDOWN = 4, 1159 /** 1160 * used when the library doesn't accept settings. 1161 */ 1162 SETTINGS = 5, 1163 /** 1164 * used when the library generated an encoding error. 1165 */ 1166 ENCODE = 6, 1167 /** 1168 * the number of library error types. 1169 */ 1170 NUM_ERRORS = 7, 1171 } 1172 alias GstLibraryError LibraryError; 1173 1174 /** 1175 * Flags used when locking miniobjects 1176 */ 1177 public enum GstLockFlags 1178 { 1179 /** 1180 * lock for read access 1181 */ 1182 READ = 1, 1183 /** 1184 * lock for write access 1185 */ 1186 WRITE = 2, 1187 /** 1188 * lock for exclusive access 1189 */ 1190 EXCLUSIVE = 4, 1191 /** 1192 * first flag that can be used for custom purposes 1193 */ 1194 LAST = 256, 1195 } 1196 alias GstLockFlags LockFlags; 1197 1198 /** 1199 * Flags used when mapping memory 1200 */ 1201 public enum GstMapFlags 1202 { 1203 /** 1204 * map for read access 1205 */ 1206 READ = 1, 1207 /** 1208 * map for write access 1209 */ 1210 WRITE = 2, 1211 /** 1212 * first flag that can be used for custom purposes 1213 */ 1214 FLAG_LAST = 65536, 1215 } 1216 alias GstMapFlags MapFlags; 1217 1218 /** 1219 * Flags for wrapped memory. 1220 */ 1221 public enum GstMemoryFlags 1222 { 1223 /** 1224 * memory is readonly. It is not allowed to map the 1225 * memory with #GST_MAP_WRITE. 1226 */ 1227 READONLY = 2, 1228 /** 1229 * memory must not be shared. Copies will have to be 1230 * made when this memory needs to be shared between buffers. 1231 */ 1232 NO_SHARE = 16, 1233 /** 1234 * the memory prefix is filled with 0 bytes 1235 */ 1236 ZERO_PREFIXED = 32, 1237 /** 1238 * the memory padding is filled with 0 bytes 1239 */ 1240 ZERO_PADDED = 64, 1241 /** 1242 * the memory is physically contiguous. (Since 1.2) 1243 */ 1244 PHYSICALLY_CONTIGUOUS = 128, 1245 /** 1246 * the memory can't be mapped via gst_memory_map() without any preconditions. (Since 1.2) 1247 */ 1248 NOT_MAPPABLE = 256, 1249 /** 1250 * first flag that can be used for custom purposes 1251 */ 1252 LAST = 1048576, 1253 } 1254 alias GstMemoryFlags MemoryFlags; 1255 1256 /** 1257 * The different message types that are available. 1258 */ 1259 public enum GstMessageType : uint 1260 { 1261 /** 1262 * an undefined message 1263 */ 1264 UNKNOWN = 0, 1265 /** 1266 * end-of-stream reached in a pipeline. The application will 1267 * only receive this message in the PLAYING state and every time it sets a 1268 * pipeline to PLAYING that is in the EOS state. The application can perform a 1269 * flushing seek in the pipeline, which will undo the EOS state again. 1270 */ 1271 EOS = 1, 1272 /** 1273 * an error occurred. When the application receives an error 1274 * message it should stop playback of the pipeline and not assume that more 1275 * data will be played. 1276 */ 1277 ERROR = 2, 1278 /** 1279 * a warning occurred. 1280 */ 1281 WARNING = 4, 1282 /** 1283 * an info message occurred 1284 */ 1285 INFO = 8, 1286 /** 1287 * a tag was found. 1288 */ 1289 TAG = 16, 1290 /** 1291 * the pipeline is buffering. When the application 1292 * receives a buffering message in the PLAYING state for a non-live pipeline it 1293 * must PAUSE the pipeline until the buffering completes, when the percentage 1294 * field in the message is 100%. For live pipelines, no action must be 1295 * performed and the buffering percentage can be used to inform the user about 1296 * the progress. 1297 */ 1298 BUFFERING = 32, 1299 /** 1300 * a state change happened 1301 */ 1302 STATE_CHANGED = 64, 1303 /** 1304 * an element changed state in a streaming thread. 1305 * This message is deprecated. 1306 */ 1307 STATE_DIRTY = 128, 1308 /** 1309 * a stepping operation finished. 1310 */ 1311 STEP_DONE = 256, 1312 /** 1313 * an element notifies its capability of providing 1314 * a clock. This message is used internally and 1315 * never forwarded to the application. 1316 */ 1317 CLOCK_PROVIDE = 512, 1318 /** 1319 * The current clock as selected by the pipeline became 1320 * unusable. The pipeline will select a new clock on 1321 * the next PLAYING state change. The application 1322 * should set the pipeline to PAUSED and back to 1323 * PLAYING when this message is received. 1324 */ 1325 CLOCK_LOST = 1024, 1326 /** 1327 * a new clock was selected in the pipeline. 1328 */ 1329 NEW_CLOCK = 2048, 1330 /** 1331 * the structure of the pipeline changed. This 1332 * message is used internally and never forwarded to the application. 1333 */ 1334 STRUCTURE_CHANGE = 4096, 1335 /** 1336 * status about a stream, emitted when it starts, 1337 * stops, errors, etc.. 1338 */ 1339 STREAM_STATUS = 8192, 1340 /** 1341 * message posted by the application, possibly 1342 * via an application-specific element. 1343 */ 1344 APPLICATION = 16384, 1345 /** 1346 * element-specific message, see the specific element's 1347 * documentation 1348 */ 1349 ELEMENT = 32768, 1350 /** 1351 * pipeline started playback of a segment. This 1352 * message is used internally and never forwarded to the application. 1353 */ 1354 SEGMENT_START = 65536, 1355 /** 1356 * pipeline completed playback of a segment. This 1357 * message is forwarded to the application after all elements that posted 1358 * @GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message. 1359 */ 1360 SEGMENT_DONE = 131072, 1361 /** 1362 * The duration of a pipeline changed. The 1363 * application can get the new duration with a duration query. 1364 */ 1365 DURATION_CHANGED = 262144, 1366 /** 1367 * Posted by elements when their latency changes. The 1368 * application should recalculate and distribute a new latency. 1369 */ 1370 LATENCY = 524288, 1371 /** 1372 * Posted by elements when they start an ASYNC 1373 * #GstStateChange. This message is not forwarded to the application but is used 1374 * internally. 1375 */ 1376 ASYNC_START = 1048576, 1377 /** 1378 * Posted by elements when they complete an ASYNC 1379 * #GstStateChange. The application will only receive this message from the toplevel 1380 * pipeline. 1381 */ 1382 ASYNC_DONE = 2097152, 1383 /** 1384 * Posted by elements when they want the pipeline to 1385 * change state. This message is a suggestion to the application which can 1386 * decide to perform the state change on (part of) the pipeline. 1387 */ 1388 REQUEST_STATE = 4194304, 1389 /** 1390 * A stepping operation was started. 1391 */ 1392 STEP_START = 8388608, 1393 /** 1394 * A buffer was dropped or an element changed its processing 1395 * strategy for Quality of Service reasons. 1396 */ 1397 QOS = 16777216, 1398 /** 1399 * A progress message. 1400 */ 1401 PROGRESS = 33554432, 1402 /** 1403 * A new table of contents (TOC) was found or previously found TOC 1404 * was updated. 1405 */ 1406 TOC = 67108864, 1407 /** 1408 * Message to request resetting the pipeline's 1409 * running time from the pipeline. This is an internal message which 1410 * applications will likely never receive. 1411 */ 1412 RESET_TIME = 134217728, 1413 /** 1414 * Message indicating start of a new stream. Useful 1415 * e.g. when using playbin in gapless playback mode, to get notified when 1416 * the next title actually starts playing (which will be some time after 1417 * the URI for the next title has been set). 1418 */ 1419 STREAM_START = 268435456, 1420 /** 1421 * Message indicating that an element wants a specific context (Since 1.2) 1422 */ 1423 NEED_CONTEXT = 536870912, 1424 /** 1425 * Message indicating that an element created a context (Since 1.2) 1426 */ 1427 HAVE_CONTEXT = 1073741824, 1428 /** 1429 * Message is an extended message type (see below). 1430 * These extended message IDs can't be used directly with mask-based API 1431 * like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still 1432 * filter for GST_MESSAGE_EXTENDED and then check the result for the 1433 * specific type. (Since 1.4) 1434 */ 1435 EXTENDED = 2147483648, 1436 /** 1437 * Message indicating a #GstDevice was added to 1438 * a #GstDeviceProvider (Since 1.4) 1439 */ 1440 DEVICE_ADDED = 2147483649, 1441 /** 1442 * Message indicating a #GstDevice was removed 1443 * from a #GstDeviceProvider (Since 1.4) 1444 */ 1445 DEVICE_REMOVED = 2147483650, 1446 /** 1447 * Message indicating a #GObject property has 1448 * changed (Since 1.10) 1449 */ 1450 PROPERTY_NOTIFY = 2147483651, 1451 /** 1452 * Message indicating a new #GstStreamCollection 1453 * is available (Since 1.10) 1454 */ 1455 STREAM_COLLECTION = 2147483652, 1456 /** 1457 * Message indicating the active selection of 1458 * #GstStreams has changed (Since 1.10) 1459 */ 1460 STREAMS_SELECTED = 2147483653, 1461 /** 1462 * Message indicating to request the application to 1463 * try to play the given URL(s). Useful if for example a HTTP 302/303 1464 * response is received with a non-HTTP URL inside. (Since 1.10) 1465 */ 1466 REDIRECT = 2147483654, 1467 /** 1468 * mask for all of the above messages. 1469 */ 1470 ANY = 4294967295, 1471 } 1472 alias GstMessageType MessageType; 1473 1474 /** 1475 * Extra metadata flags. 1476 */ 1477 public enum GstMetaFlags 1478 { 1479 /** 1480 * no flags 1481 */ 1482 NONE = 0, 1483 /** 1484 * metadata should not be modified 1485 */ 1486 READONLY = 1, 1487 /** 1488 * metadata is managed by a bufferpool 1489 */ 1490 POOLED = 2, 1491 /** 1492 * metadata should not be removed 1493 */ 1494 LOCKED = 4, 1495 /** 1496 * additional flags can be added starting from this flag. 1497 */ 1498 LAST = 65536, 1499 } 1500 alias GstMetaFlags MetaFlags; 1501 1502 /** 1503 * Flags for the mini object 1504 */ 1505 public enum GstMiniObjectFlags 1506 { 1507 /** 1508 * the object can be locked and unlocked with 1509 * gst_mini_object_lock() and gst_mini_object_unlock(). 1510 */ 1511 LOCKABLE = 1, 1512 /** 1513 * the object is permanently locked in 1514 * READONLY mode. Only read locks can be performed on the object. 1515 */ 1516 LOCK_READONLY = 2, 1517 /** 1518 * the object is expected to stay alive 1519 * even after gst_deinit() has been called and so should be ignored by leak 1520 * detection tools. (Since 1.10) 1521 */ 1522 MAY_BE_LEAKED = 4, 1523 /** 1524 * first flag that can be used by subclasses. 1525 */ 1526 LAST = 16, 1527 } 1528 alias GstMiniObjectFlags MiniObjectFlags; 1529 1530 /** 1531 * The standard flags that an gstobject may have. 1532 */ 1533 public enum GstObjectFlags 1534 { 1535 /** 1536 * the object is expected to stay alive even 1537 * after gst_deinit() has been called and so should be ignored by leak 1538 * detection tools. (Since 1.10) 1539 */ 1540 MAY_BE_LEAKED = 1, 1541 /** 1542 * subclasses can add additional flags starting from this flag 1543 */ 1544 LAST = 16, 1545 } 1546 alias GstObjectFlags ObjectFlags; 1547 1548 /** 1549 * The direction of a pad. 1550 */ 1551 public enum GstPadDirection 1552 { 1553 /** 1554 * direction is unknown. 1555 */ 1556 UNKNOWN = 0, 1557 /** 1558 * the pad is a source pad. 1559 */ 1560 SRC = 1, 1561 /** 1562 * the pad is a sink pad. 1563 */ 1564 SINK = 2, 1565 } 1566 alias GstPadDirection PadDirection; 1567 1568 /** 1569 * Pad state flags 1570 */ 1571 public enum GstPadFlags 1572 { 1573 /** 1574 * is dataflow on a pad blocked 1575 */ 1576 BLOCKED = 16, 1577 /** 1578 * is pad flushing 1579 */ 1580 FLUSHING = 32, 1581 /** 1582 * is pad in EOS state 1583 */ 1584 EOS = 64, 1585 /** 1586 * is pad currently blocking on a buffer or event 1587 */ 1588 BLOCKING = 128, 1589 /** 1590 * ensure that there is a parent object before calling 1591 * into the pad callbacks. 1592 */ 1593 NEED_PARENT = 256, 1594 /** 1595 * the pad should be reconfigured/renegotiated. 1596 * The flag has to be unset manually after 1597 * reconfiguration happened. 1598 */ 1599 NEED_RECONFIGURE = 512, 1600 /** 1601 * the pad has pending events 1602 */ 1603 PENDING_EVENTS = 1024, 1604 /** 1605 * the pad is using fixed caps. This means that 1606 * once the caps are set on the pad, the default caps query function 1607 * will only return those caps. 1608 */ 1609 FIXED_CAPS = 2048, 1610 /** 1611 * the default event and query handler will forward 1612 * all events and queries to the internally linked pads 1613 * instead of discarding them. 1614 */ 1615 PROXY_CAPS = 4096, 1616 /** 1617 * the default query handler will forward 1618 * allocation queries to the internally linked pads 1619 * instead of discarding them. 1620 */ 1621 PROXY_ALLOCATION = 8192, 1622 /** 1623 * the default query handler will forward 1624 * scheduling queries to the internally linked pads 1625 * instead of discarding them. 1626 */ 1627 PROXY_SCHEDULING = 16384, 1628 /** 1629 * the default accept-caps handler will check 1630 * it the caps intersect the query-caps result instead 1631 * of checking for a subset. This is interesting for 1632 * parsers that can accept incompletely specified caps. 1633 */ 1634 ACCEPT_INTERSECT = 32768, 1635 /** 1636 * the default accept-caps handler will use 1637 * the template pad caps instead of query caps to 1638 * compare with the accept caps. Use this in combination 1639 * with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since 1.6) 1640 */ 1641 ACCEPT_TEMPLATE = 65536, 1642 /** 1643 * offset to define more flags 1644 */ 1645 LAST = 1048576, 1646 } 1647 alias GstPadFlags PadFlags; 1648 1649 /** 1650 * The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS 1651 * and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are 1652 * specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed. 1653 * 1654 * > Only disable some of the checks if you are 100% certain you know the link 1655 * > will not fail because of hierarchy/caps compatibility failures. If uncertain, 1656 * > use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods 1657 * > for linking the pads. 1658 */ 1659 public enum GstPadLinkCheck 1660 { 1661 /** 1662 * Don't check hierarchy or caps compatibility. 1663 */ 1664 NOTHING = 0, 1665 /** 1666 * Check the pads have same parents/grandparents. 1667 * Could be omitted if it is already known that the two elements that own the 1668 * pads are in the same bin. 1669 */ 1670 HIERARCHY = 1, 1671 /** 1672 * Check if the pads are compatible by using 1673 * their template caps. This is much faster than @GST_PAD_LINK_CHECK_CAPS, but 1674 * would be unsafe e.g. if one pad has %GST_CAPS_ANY. 1675 */ 1676 TEMPLATE_CAPS = 2, 1677 /** 1678 * Check if the pads are compatible by comparing the 1679 * caps returned by gst_pad_query_caps(). 1680 */ 1681 CAPS = 4, 1682 /** 1683 * Disables pushing a reconfigure event when pads are 1684 * linked. 1685 */ 1686 NO_RECONFIGURE = 8, 1687 /** 1688 * The default checks done when linking 1689 * pads (i.e. the ones used by gst_pad_link()). 1690 */ 1691 DEFAULT = 5, 1692 } 1693 alias GstPadLinkCheck PadLinkCheck; 1694 1695 /** 1696 * Result values from gst_pad_link and friends. 1697 */ 1698 public enum GstPadLinkReturn 1699 { 1700 /** 1701 * link succeeded 1702 */ 1703 OK = 0, 1704 /** 1705 * pads have no common grandparent 1706 */ 1707 WRONG_HIERARCHY = -1, 1708 /** 1709 * pad was already linked 1710 */ 1711 WAS_LINKED = -2, 1712 /** 1713 * pads have wrong direction 1714 */ 1715 WRONG_DIRECTION = -3, 1716 /** 1717 * pads do not have common format 1718 */ 1719 NOFORMAT = -4, 1720 /** 1721 * pads cannot cooperate in scheduling 1722 */ 1723 NOSCHED = -5, 1724 /** 1725 * refused for some reason 1726 */ 1727 REFUSED = -6, 1728 } 1729 alias GstPadLinkReturn PadLinkReturn; 1730 1731 /** 1732 * The status of a GstPad. After activating a pad, which usually happens when the 1733 * parent element goes from READY to PAUSED, the GstPadMode defines if the 1734 * pad operates in push or pull mode. 1735 */ 1736 public enum GstPadMode 1737 { 1738 /** 1739 * Pad will not handle dataflow 1740 */ 1741 NONE = 0, 1742 /** 1743 * Pad handles dataflow in downstream push mode 1744 */ 1745 PUSH = 1, 1746 /** 1747 * Pad handles dataflow in upstream pull mode 1748 */ 1749 PULL = 2, 1750 } 1751 alias GstPadMode PadMode; 1752 1753 /** 1754 * Indicates when this pad will become available. 1755 */ 1756 public enum GstPadPresence 1757 { 1758 /** 1759 * the pad is always available 1760 */ 1761 ALWAYS = 0, 1762 /** 1763 * the pad will become available depending on the media stream 1764 */ 1765 SOMETIMES = 1, 1766 /** 1767 * the pad is only available on request with 1768 * gst_element_request_pad(). 1769 */ 1770 REQUEST = 2, 1771 } 1772 alias GstPadPresence PadPresence; 1773 1774 /** 1775 * Different return values for the #GstPadProbeCallback. 1776 */ 1777 public enum GstPadProbeReturn 1778 { 1779 /** 1780 * drop data in data probes. For push mode this means that 1781 * the data item is not sent downstream. For pull mode, it means that 1782 * the data item is not passed upstream. In both cases, no other probes 1783 * are called for this item and %GST_FLOW_OK or %TRUE is returned to the 1784 * caller. 1785 */ 1786 DROP = 0, 1787 /** 1788 * normal probe return value. This leaves the probe in 1789 * place, and defers decisions about dropping or passing data to other 1790 * probes, if any. If there are no other probes, the default behaviour 1791 * for the probe type applies ('block' for blocking probes, 1792 * and 'pass' for non-blocking probes). 1793 */ 1794 OK = 1, 1795 /** 1796 * remove this probe. 1797 */ 1798 REMOVE = 2, 1799 /** 1800 * pass the data item in the block probe and block on the 1801 * next item. 1802 */ 1803 PASS = 3, 1804 /** 1805 * Data has been handled in the probe and will not be 1806 * forwarded further. For events and buffers this is the same behaviour as 1807 * %GST_PAD_PROBE_DROP (except that in this case you need to unref the buffer 1808 * or event yourself). For queries it will also return %TRUE to the caller. 1809 * The probe can also modify the #GstFlowReturn value by using the 1810 * #GST_PAD_PROBE_INFO_FLOW_RETURN() accessor. 1811 * Note that the resulting query must contain valid entries. 1812 * Since: 1.6 1813 */ 1814 HANDLED = 4, 1815 } 1816 alias GstPadProbeReturn PadProbeReturn; 1817 1818 /** 1819 * The different probing types that can occur. When either one of 1820 * @GST_PAD_PROBE_TYPE_IDLE or @GST_PAD_PROBE_TYPE_BLOCK is used, the probe will be a 1821 * blocking probe. 1822 */ 1823 public enum GstPadProbeType 1824 { 1825 /** 1826 * invalid probe type 1827 */ 1828 INVALID = 0, 1829 /** 1830 * probe idle pads and block while the callback is called 1831 */ 1832 IDLE = 1, 1833 /** 1834 * probe and block pads 1835 */ 1836 BLOCK = 2, 1837 /** 1838 * probe buffers 1839 */ 1840 BUFFER = 16, 1841 /** 1842 * probe buffer lists 1843 */ 1844 BUFFER_LIST = 32, 1845 /** 1846 * probe downstream events 1847 */ 1848 EVENT_DOWNSTREAM = 64, 1849 /** 1850 * probe upstream events 1851 */ 1852 EVENT_UPSTREAM = 128, 1853 /** 1854 * probe flush events. This probe has to be 1855 * explicitly enabled and is not included in the 1856 * @@GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM or 1857 * @@GST_PAD_PROBE_TYPE_EVENT_UPSTREAM probe types. 1858 */ 1859 EVENT_FLUSH = 256, 1860 /** 1861 * probe downstream queries 1862 */ 1863 QUERY_DOWNSTREAM = 512, 1864 /** 1865 * probe upstream queries 1866 */ 1867 QUERY_UPSTREAM = 1024, 1868 /** 1869 * probe push 1870 */ 1871 PUSH = 4096, 1872 /** 1873 * probe pull 1874 */ 1875 PULL = 8192, 1876 /** 1877 * probe and block at the next opportunity, at data flow or when idle 1878 */ 1879 BLOCKING = 3, 1880 /** 1881 * probe downstream data (buffers, buffer lists, and events) 1882 */ 1883 DATA_DOWNSTREAM = 112, 1884 /** 1885 * probe upstream data (events) 1886 */ 1887 DATA_UPSTREAM = 128, 1888 /** 1889 * probe upstream and downstream data (buffers, buffer lists, and events) 1890 */ 1891 DATA_BOTH = 240, 1892 /** 1893 * probe and block downstream data (buffers, buffer lists, and events) 1894 */ 1895 BLOCK_DOWNSTREAM = 114, 1896 /** 1897 * probe and block upstream data (events) 1898 */ 1899 BLOCK_UPSTREAM = 130, 1900 /** 1901 * probe upstream and downstream events 1902 */ 1903 EVENT_BOTH = 192, 1904 /** 1905 * probe upstream and downstream queries 1906 */ 1907 QUERY_BOTH = 1536, 1908 /** 1909 * probe upstream events and queries and downstream buffers, buffer lists, events and queries 1910 */ 1911 ALL_BOTH = 1776, 1912 /** 1913 * probe push and pull 1914 */ 1915 SCHEDULING = 12288, 1916 } 1917 alias GstPadProbeType PadProbeType; 1918 1919 /** 1920 * Flags for the padtemplate 1921 */ 1922 public enum GstPadTemplateFlags 1923 { 1924 /** 1925 * first flag that can be used by subclasses. 1926 */ 1927 LAST = 256, 1928 } 1929 alias GstPadTemplateFlags PadTemplateFlags; 1930 1931 /** 1932 * The different parsing errors that can occur. 1933 */ 1934 public enum GstParseError 1935 { 1936 /** 1937 * A syntax error occurred. 1938 */ 1939 SYNTAX = 0, 1940 /** 1941 * The description contained an unknown element 1942 */ 1943 NO_SUCH_ELEMENT = 1, 1944 /** 1945 * An element did not have a specified property 1946 */ 1947 NO_SUCH_PROPERTY = 2, 1948 /** 1949 * There was an error linking two pads. 1950 */ 1951 LINK = 3, 1952 /** 1953 * There was an error setting a property 1954 */ 1955 COULD_NOT_SET_PROPERTY = 4, 1956 /** 1957 * An empty bin was specified. 1958 */ 1959 EMPTY_BIN = 5, 1960 /** 1961 * An empty description was specified 1962 */ 1963 EMPTY = 6, 1964 /** 1965 * A delayed link did not get resolved. 1966 */ 1967 DELAYED_LINK = 7, 1968 } 1969 alias GstParseError ParseError; 1970 1971 /** 1972 * Parsing options. 1973 */ 1974 public enum GstParseFlags 1975 { 1976 /** 1977 * Do not use any special parsing options. 1978 */ 1979 NONE = 0, 1980 /** 1981 * Always return %NULL when an error occurs 1982 * (default behaviour is to return partially constructed bins or elements 1983 * in some cases) 1984 */ 1985 FATAL_ERRORS = 1, 1986 /** 1987 * If a bin only has a single element, 1988 * just return the element. 1989 */ 1990 NO_SINGLE_ELEMENT_BINS = 2, 1991 /** 1992 * If more than one toplevel element is described 1993 * by the pipeline description string, put them in a #GstBin instead of a 1994 * #GstPipeline. (Since 1.10) 1995 */ 1996 PLACE_IN_BIN = 4, 1997 } 1998 alias GstParseFlags ParseFlags; 1999 2000 /** 2001 * Pipeline flags 2002 */ 2003 public enum GstPipelineFlags 2004 { 2005 /** 2006 * this pipeline works with a fixed clock 2007 */ 2008 FIXED_CLOCK = 524288, 2009 /** 2010 * offset to define more flags 2011 */ 2012 LAST = 8388608, 2013 } 2014 alias GstPipelineFlags PipelineFlags; 2015 2016 /** 2017 * Flags used in connection with gst_plugin_add_dependency(). 2018 */ 2019 public enum GstPluginDependencyFlags 2020 { 2021 /** 2022 * no special flags 2023 */ 2024 NONE = 0, 2025 /** 2026 * recurse into subdirectories 2027 */ 2028 RECURSE = 1, 2029 /** 2030 * use paths 2031 * argument only if none of the environment variables is set 2032 */ 2033 PATHS_ARE_DEFAULT_ONLY = 2, 2034 /** 2035 * interpret 2036 * filename argument as filter suffix and check all matching files in 2037 * the directory 2038 */ 2039 FILE_NAME_IS_SUFFIX = 4, 2040 /** 2041 * interpret 2042 * filename argument as filter prefix and check all matching files in 2043 * the directory. Since 1.8. 2044 */ 2045 FILE_NAME_IS_PREFIX = 8, 2046 } 2047 alias GstPluginDependencyFlags PluginDependencyFlags; 2048 2049 /** 2050 * The plugin loading errors 2051 */ 2052 public enum GstPluginError 2053 { 2054 /** 2055 * The plugin could not be loaded 2056 */ 2057 MODULE = 0, 2058 /** 2059 * The plugin has unresolved dependencies 2060 */ 2061 DEPENDENCIES = 1, 2062 /** 2063 * The plugin has already be loaded from a different file 2064 */ 2065 NAME_MISMATCH = 2, 2066 } 2067 alias GstPluginError PluginError; 2068 2069 /** 2070 * The plugin loading state 2071 */ 2072 public enum GstPluginFlags 2073 { 2074 /** 2075 * Temporarily loaded plugins 2076 */ 2077 CACHED = 16, 2078 /** 2079 * The plugin won't be scanned (again) 2080 */ 2081 BLACKLISTED = 32, 2082 } 2083 alias GstPluginFlags PluginFlags; 2084 2085 /** 2086 * The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the 2087 * application of the status of asynchronous tasks. 2088 */ 2089 public enum GstProgressType 2090 { 2091 /** 2092 * A new task started. 2093 */ 2094 START = 0, 2095 /** 2096 * A task completed and a new one continues. 2097 */ 2098 CONTINUE = 1, 2099 /** 2100 * A task completed. 2101 */ 2102 COMPLETE = 2, 2103 /** 2104 * A task was canceled. 2105 */ 2106 CANCELED = 3, 2107 /** 2108 * A task caused an error. An error message is also 2109 * posted on the bus. 2110 */ 2111 ERROR = 4, 2112 } 2113 alias GstProgressType ProgressType; 2114 2115 /** 2116 * The different types of QoS events that can be given to the 2117 * gst_event_new_qos() method. 2118 */ 2119 public enum GstQOSType 2120 { 2121 /** 2122 * The QoS event type that is produced when upstream 2123 * elements are producing data too quickly and the element can't keep up 2124 * processing the data. Upstream should reduce their production rate. This 2125 * type is also used when buffers arrive early or in time. 2126 */ 2127 OVERFLOW = 0, 2128 /** 2129 * The QoS event type that is produced when upstream 2130 * elements are producing data too slowly and need to speed up their 2131 * production rate. 2132 */ 2133 UNDERFLOW = 1, 2134 /** 2135 * The QoS event type that is produced when the 2136 * application enabled throttling to limit the data rate. 2137 */ 2138 THROTTLE = 2, 2139 } 2140 alias GstQOSType QOSType; 2141 2142 /** 2143 * Standard predefined Query types 2144 */ 2145 public enum GstQueryType 2146 { 2147 /** 2148 * unknown query type 2149 */ 2150 UNKNOWN = 0, 2151 /** 2152 * current position in stream 2153 */ 2154 POSITION = 2563, 2155 /** 2156 * total duration of the stream 2157 */ 2158 DURATION = 5123, 2159 /** 2160 * latency of stream 2161 */ 2162 LATENCY = 7683, 2163 /** 2164 * current jitter of stream 2165 */ 2166 JITTER = 10243, 2167 /** 2168 * current rate of the stream 2169 */ 2170 RATE = 12803, 2171 /** 2172 * seeking capabilities 2173 */ 2174 SEEKING = 15363, 2175 /** 2176 * segment start/stop positions 2177 */ 2178 SEGMENT = 17923, 2179 /** 2180 * convert values between formats 2181 */ 2182 CONVERT = 20483, 2183 /** 2184 * query supported formats for convert 2185 */ 2186 FORMATS = 23043, 2187 /** 2188 * query available media for efficient seeking. 2189 */ 2190 BUFFERING = 28163, 2191 /** 2192 * a custom application or element defined query. 2193 */ 2194 CUSTOM = 30723, 2195 /** 2196 * query the URI of the source or sink. 2197 */ 2198 URI = 33283, 2199 /** 2200 * the buffer allocation properties 2201 */ 2202 ALLOCATION = 35846, 2203 /** 2204 * the scheduling properties 2205 */ 2206 SCHEDULING = 38401, 2207 /** 2208 * the accept caps query 2209 */ 2210 ACCEPT_CAPS = 40963, 2211 /** 2212 * the caps query 2213 */ 2214 CAPS = 43523, 2215 /** 2216 * wait till all serialized data is consumed downstream 2217 */ 2218 DRAIN = 46086, 2219 /** 2220 * query the pipeline-local context from 2221 * downstream or upstream (since 1.2) 2222 */ 2223 CONTEXT = 48643, 2224 } 2225 alias GstQueryType QueryType; 2226 2227 /** 2228 * #GstQueryTypeFlags indicate the aspects of the different #GstQueryType 2229 * values. You can get the type flags of a #GstQueryType with the 2230 * gst_query_type_get_flags() function. 2231 */ 2232 public enum GstQueryTypeFlags 2233 { 2234 /** 2235 * Set if the query can travel upstream. 2236 */ 2237 UPSTREAM = 1, 2238 /** 2239 * Set if the query can travel downstream. 2240 */ 2241 DOWNSTREAM = 2, 2242 /** 2243 * Set if the query should be serialized with data 2244 * flow. 2245 */ 2246 SERIALIZED = 4, 2247 } 2248 alias GstQueryTypeFlags QueryTypeFlags; 2249 2250 /** 2251 * Element priority ranks. Defines the order in which the autoplugger (or 2252 * similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri()) 2253 * will choose this element over an alternative one with the same function. 2254 * 2255 * These constants serve as a rough guidance for defining the rank of a 2256 * #GstPluginFeature. Any value is valid, including values bigger than 2257 * @GST_RANK_PRIMARY. 2258 */ 2259 public enum GstRank 2260 { 2261 /** 2262 * will be chosen last or not at all 2263 */ 2264 NONE = 0, 2265 /** 2266 * unlikely to be chosen 2267 */ 2268 MARGINAL = 64, 2269 /** 2270 * likely to be chosen 2271 */ 2272 SECONDARY = 128, 2273 /** 2274 * will be chosen first 2275 */ 2276 PRIMARY = 256, 2277 } 2278 alias GstRank Rank; 2279 2280 /** 2281 * Resource errors are for any resource used by an element: 2282 * memory, files, network connections, process space, ... 2283 * They're typically used by source and sink elements. 2284 */ 2285 public enum GstResourceError 2286 { 2287 /** 2288 * a general error which doesn't fit in any other 2289 * category. Make sure you add a custom message to the error call. 2290 */ 2291 FAILED = 1, 2292 /** 2293 * do not use this except as a placeholder for 2294 * deciding where to go while developing code. 2295 */ 2296 TOO_LAZY = 2, 2297 /** 2298 * used when the resource could not be found. 2299 */ 2300 NOT_FOUND = 3, 2301 /** 2302 * used when resource is busy. 2303 */ 2304 BUSY = 4, 2305 /** 2306 * used when resource fails to open for reading. 2307 */ 2308 OPEN_READ = 5, 2309 /** 2310 * used when resource fails to open for writing. 2311 */ 2312 OPEN_WRITE = 6, 2313 /** 2314 * used when resource cannot be opened for 2315 * both reading and writing, or either (but unspecified which). 2316 */ 2317 OPEN_READ_WRITE = 7, 2318 /** 2319 * used when the resource can't be closed. 2320 */ 2321 CLOSE = 8, 2322 /** 2323 * used when the resource can't be read from. 2324 */ 2325 READ = 9, 2326 /** 2327 * used when the resource can't be written to. 2328 */ 2329 WRITE = 10, 2330 /** 2331 * used when a seek on the resource fails. 2332 */ 2333 SEEK = 11, 2334 /** 2335 * used when a synchronize on the resource fails. 2336 */ 2337 SYNC = 12, 2338 /** 2339 * used when settings can't be manipulated on. 2340 */ 2341 SETTINGS = 13, 2342 /** 2343 * used when the resource has no space left. 2344 */ 2345 NO_SPACE_LEFT = 14, 2346 /** 2347 * used when the resource can't be opened 2348 * due to missing authorization. 2349 * (Since 1.2.4) 2350 */ 2351 NOT_AUTHORIZED = 15, 2352 /** 2353 * the number of resource error types. 2354 */ 2355 NUM_ERRORS = 16, 2356 } 2357 alias GstResourceError ResourceError; 2358 2359 /** 2360 * The different scheduling flags. 2361 */ 2362 public enum GstSchedulingFlags 2363 { 2364 /** 2365 * if seeking is possible 2366 */ 2367 SEEKABLE = 1, 2368 /** 2369 * if sequential access is recommended 2370 */ 2371 SEQUENTIAL = 2, 2372 /** 2373 * if bandwidth is limited and buffering possible (since 1.2) 2374 */ 2375 BANDWIDTH_LIMITED = 4, 2376 } 2377 alias GstSchedulingFlags SchedulingFlags; 2378 2379 /** 2380 * The different search modes. 2381 */ 2382 public enum GstSearchMode 2383 { 2384 /** 2385 * Only search for exact matches. 2386 */ 2387 EXACT = 0, 2388 /** 2389 * Search for an exact match or the element just before. 2390 */ 2391 BEFORE = 1, 2392 /** 2393 * Search for an exact match or the element just after. 2394 */ 2395 AFTER = 2, 2396 } 2397 alias GstSearchMode SearchMode; 2398 2399 /** 2400 * Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags 2401 * can be used together. 2402 * 2403 * A non flushing seek might take some time to perform as the currently 2404 * playing data in the pipeline will not be cleared. 2405 * 2406 * An accurate seek might be slower for formats that don't have any indexes 2407 * or timestamp markers in the stream. Specifying this flag might require a 2408 * complete scan of the file in those cases. 2409 * 2410 * When performing a segment seek: after the playback of the segment completes, 2411 * no EOS will be emitted by the element that performed the seek, but a 2412 * %GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element. 2413 * When this message is posted, it is possible to send a new seek event to 2414 * continue playback. With this seek method it is possible to perform seamless 2415 * looping or simple linear editing. 2416 * 2417 * When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode 2418 * playback, the %GST_SEEK_FLAG_TRICKMODE flag can be used to instruct decoders 2419 * and demuxers to adjust the playback rate by skipping frames. This can improve 2420 * performance and decrease CPU usage because not all frames need to be decoded. 2421 * 2422 * Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to 2423 * request that decoders skip all frames except key units, and 2424 * %GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio 2425 * decoders do no decoding at all, and simple output silence. 2426 * 2427 * The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous 2428 * relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to 2429 * select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified, 2430 * the relevant location is a keyframe. If both flags are specified, the nearest 2431 * of these locations will be selected. If none are specified, the implementation is 2432 * free to select whichever it wants. 2433 * 2434 * The before and after here are in running time, so when playing backwards, 2435 * the next location refers to the one that will played in next, and not the 2436 * one that is located after in the actual source stream. 2437 * 2438 * Also see part-seeking.txt in the GStreamer design documentation for more 2439 * details on the meaning of these flags and the behaviour expected of 2440 * elements that handle them. 2441 */ 2442 public enum GstSeekFlags 2443 { 2444 /** 2445 * no flag 2446 */ 2447 NONE = 0, 2448 /** 2449 * flush pipeline 2450 */ 2451 FLUSH = 1, 2452 /** 2453 * accurate position is requested, this might 2454 * be considerably slower for some formats. 2455 */ 2456 ACCURATE = 2, 2457 /** 2458 * seek to the nearest keyframe. This might be 2459 * faster but less accurate. 2460 */ 2461 KEY_UNIT = 4, 2462 /** 2463 * perform a segment seek. 2464 */ 2465 SEGMENT = 8, 2466 /** 2467 * when doing fast forward or fast reverse playback, allow 2468 * elements to skip frames instead of generating all 2469 * frames. (Since 1.6) 2470 */ 2471 TRICKMODE = 16, 2472 /** 2473 * Deprecated backward compatibility flag, replaced 2474 * by %GST_SEEK_FLAG_TRICKMODE 2475 */ 2476 SKIP = 16, 2477 /** 2478 * go to a location before the requested position, 2479 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before 2480 * the requested position the one at or before the seek target. 2481 */ 2482 SNAP_BEFORE = 32, 2483 /** 2484 * go to a location after the requested position, 2485 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the 2486 * requested position. 2487 */ 2488 SNAP_AFTER = 64, 2489 /** 2490 * go to a position near the requested position, 2491 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest 2492 * to the requested position, if both keyframes are at an equal 2493 * distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE. 2494 */ 2495 SNAP_NEAREST = 96, 2496 /** 2497 * when doing fast forward or fast reverse 2498 * playback, request that elements only decode keyframes 2499 * and skip all other content, for formats that have 2500 * keyframes. (Since 1.6) 2501 */ 2502 TRICKMODE_KEY_UNITS = 128, 2503 /** 2504 * when doing fast forward or fast reverse 2505 * playback, request that audio decoder elements skip 2506 * decoding and output only gap events or silence. (Since 1.6) 2507 */ 2508 TRICKMODE_NO_AUDIO = 256, 2509 } 2510 alias GstSeekFlags SeekFlags; 2511 2512 /** 2513 * The different types of seek events. When constructing a seek event with 2514 * gst_event_new_seek() or when doing gst_segment_do_seek (). 2515 */ 2516 public enum GstSeekType 2517 { 2518 /** 2519 * no change in position is required 2520 */ 2521 NONE = 0, 2522 /** 2523 * absolute position is requested 2524 */ 2525 SET = 1, 2526 /** 2527 * relative position to duration is requested 2528 */ 2529 END = 2, 2530 } 2531 alias GstSeekType SeekType; 2532 2533 /** 2534 * Flags for the GstSegment structure. Currently mapped to the corresponding 2535 * values of the seek flags. 2536 */ 2537 public enum GstSegmentFlags 2538 { 2539 /** 2540 * no flags 2541 */ 2542 NONE = 0, 2543 /** 2544 * reset the pipeline running_time to the segment 2545 * running_time 2546 */ 2547 RESET = 1, 2548 /** 2549 * perform skip playback (Since 1.6) 2550 */ 2551 TRICKMODE = 16, 2552 /** 2553 * Deprecated backward compatibility flag, replaced 2554 * by @GST_SEGMENT_FLAG_TRICKMODE 2555 */ 2556 SKIP = 16, 2557 /** 2558 * send SEGMENT_DONE instead of EOS 2559 */ 2560 SEGMENT = 8, 2561 /** 2562 * Decode only keyframes, where 2563 * possible (Since 1.6) 2564 */ 2565 TRICKMODE_KEY_UNITS = 128, 2566 /** 2567 * Do not decode any audio, where 2568 * possible (Since 1.6) 2569 */ 2570 TRICKMODE_NO_AUDIO = 256, 2571 } 2572 alias GstSegmentFlags SegmentFlags; 2573 2574 public enum GstStackTraceFlags 2575 { 2576 /** 2577 * Try to retrieve as much information as 2578 * possible when getting the stack trace 2579 */ 2580 FULL = 1, 2581 } 2582 alias GstStackTraceFlags StackTraceFlags; 2583 2584 /** 2585 * The possible states an element can be in. States can be changed using 2586 * gst_element_set_state() and checked using gst_element_get_state(). 2587 */ 2588 public enum GstState 2589 { 2590 /** 2591 * no pending state. 2592 */ 2593 VOID_PENDING = 0, 2594 /** 2595 * the NULL state or initial state of an element. 2596 */ 2597 NULL = 1, 2598 /** 2599 * the element is ready to go to PAUSED. 2600 */ 2601 READY = 2, 2602 /** 2603 * the element is PAUSED, it is ready to accept and 2604 * process data. Sink elements however only accept one 2605 * buffer and then block. 2606 */ 2607 PAUSED = 3, 2608 /** 2609 * the element is PLAYING, the #GstClock is running and 2610 * the data is flowing. 2611 */ 2612 PLAYING = 4, 2613 } 2614 alias GstState State; 2615 2616 /** 2617 * These are the different state changes an element goes through. 2618 * %GST_STATE_NULL ⇒ %GST_STATE_PLAYING is called an upwards state change 2619 * and %GST_STATE_PLAYING ⇒ %GST_STATE_NULL a downwards state change. 2620 */ 2621 public enum GstStateChange 2622 { 2623 /** 2624 * state change from NULL to READY. 2625 * * The element must check if the resources it needs are available. Device 2626 * sinks and -sources typically try to probe the device to constrain their 2627 * caps. 2628 * * The element opens the device (in case feature need to be probed). 2629 */ 2630 NULL_TO_READY = 10, 2631 /** 2632 * state change from READY to PAUSED. 2633 * * The element pads are activated in order to receive data in PAUSED. 2634 * Streaming threads are started. 2635 * * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete 2636 * the state change when they have enough information. It is a requirement 2637 * for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change 2638 * when they receive the first buffer or %GST_EVENT_EOS (preroll). 2639 * Sinks also block the dataflow when in PAUSED. 2640 * * A pipeline resets the running_time to 0. 2641 * * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data. 2642 */ 2643 READY_TO_PAUSED = 19, 2644 /** 2645 * state change from PAUSED to PLAYING. 2646 * * Most elements ignore this state change. 2647 * * The pipeline selects a #GstClock and distributes this to all the children 2648 * before setting them to PLAYING. This means that it is only allowed to 2649 * synchronize on the #GstClock in the PLAYING state. 2650 * * The pipeline uses the #GstClock and the running_time to calculate the 2651 * base_time. The base_time is distributed to all children when performing 2652 * the state change. 2653 * * Sink elements stop blocking on the preroll buffer or event and start 2654 * rendering the data. 2655 * * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed 2656 * to post %GST_MESSAGE_EOS when not in the PLAYING state. 2657 * * While streaming in PAUSED or PLAYING elements can create and remove 2658 * sometimes pads. 2659 * * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS. 2660 */ 2661 PAUSED_TO_PLAYING = 28, 2662 /** 2663 * state change from PLAYING to PAUSED. 2664 * * Most elements ignore this state change. 2665 * * The pipeline calculates the running_time based on the last selected 2666 * #GstClock and the base_time. It stores this information to continue 2667 * playback when going back to the PLAYING state. 2668 * * Sinks unblock any #GstClock wait calls. 2669 * * When a sink does not have a pending buffer to play, it returns 2670 * #GST_STATE_CHANGE_ASYNC from this state change and completes the state 2671 * change when it receives a new buffer or an %GST_EVENT_EOS. 2672 * * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted 2673 * when going back to the PLAYING state. The EOS messages are queued in 2674 * #GstBin containers. 2675 * * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL. 2676 */ 2677 PLAYING_TO_PAUSED = 35, 2678 /** 2679 * state change from PAUSED to READY. 2680 * * Sinks unblock any waits in the preroll. 2681 * * Elements unblock any waits on devices 2682 * * Chain or get_range functions return %GST_FLOW_FLUSHING. 2683 * * The element pads are deactivated so that streaming becomes impossible and 2684 * all streaming threads are stopped. 2685 * * The sink forgets all negotiated formats 2686 * * Elements remove all sometimes pads 2687 */ 2688 PAUSED_TO_READY = 26, 2689 /** 2690 * state change from READY to NULL. 2691 * * Elements close devices 2692 * * Elements reset any internal state. 2693 */ 2694 READY_TO_NULL = 17, 2695 } 2696 alias GstStateChange StateChange; 2697 2698 /** 2699 * The possible return values from a state change function such as 2700 * gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure. 2701 */ 2702 public enum GstStateChangeReturn 2703 { 2704 /** 2705 * the state change failed 2706 */ 2707 FAILURE = 0, 2708 /** 2709 * the state change succeeded 2710 */ 2711 SUCCESS = 1, 2712 /** 2713 * the state change will happen asynchronously 2714 */ 2715 ASYNC = 2, 2716 /** 2717 * the state change succeeded but the element 2718 * cannot produce data in %GST_STATE_PAUSED. 2719 * This typically happens with live sources. 2720 */ 2721 NO_PREROLL = 3, 2722 } 2723 alias GstStateChangeReturn StateChangeReturn; 2724 2725 /** 2726 * Stream errors are for anything related to the stream being processed: 2727 * format errors, media type errors, ... 2728 * They're typically used by decoders, demuxers, converters, ... 2729 */ 2730 public enum GstStreamError 2731 { 2732 /** 2733 * a general error which doesn't fit in any other 2734 * category. Make sure you add a custom message to the error call. 2735 */ 2736 FAILED = 1, 2737 /** 2738 * do not use this except as a placeholder for 2739 * deciding where to go while developing code. 2740 */ 2741 TOO_LAZY = 2, 2742 /** 2743 * use this when you do not want to implement 2744 * this functionality yet. 2745 */ 2746 NOT_IMPLEMENTED = 3, 2747 /** 2748 * used when the element doesn't know the 2749 * stream's type. 2750 */ 2751 TYPE_NOT_FOUND = 4, 2752 /** 2753 * used when the element doesn't handle this type 2754 * of stream. 2755 */ 2756 WRONG_TYPE = 5, 2757 /** 2758 * used when there's no codec to handle the 2759 * stream's type. 2760 */ 2761 CODEC_NOT_FOUND = 6, 2762 /** 2763 * used when decoding fails. 2764 */ 2765 DECODE = 7, 2766 /** 2767 * used when encoding fails. 2768 */ 2769 ENCODE = 8, 2770 /** 2771 * used when demuxing fails. 2772 */ 2773 DEMUX = 9, 2774 /** 2775 * used when muxing fails. 2776 */ 2777 MUX = 10, 2778 /** 2779 * used when the stream is of the wrong format 2780 * (for example, wrong caps). 2781 */ 2782 FORMAT = 11, 2783 /** 2784 * used when the stream is encrypted and can't be 2785 * decrypted because this is not supported by the element. 2786 */ 2787 DECRYPT = 12, 2788 /** 2789 * used when the stream is encrypted and 2790 * can't be decrypted because no suitable key is available. 2791 */ 2792 DECRYPT_NOKEY = 13, 2793 /** 2794 * the number of stream error types. 2795 */ 2796 NUM_ERRORS = 14, 2797 } 2798 alias GstStreamError StreamError; 2799 2800 public enum GstStreamFlags 2801 { 2802 /** 2803 * This stream has no special attributes 2804 */ 2805 NONE = 0, 2806 /** 2807 * This stream is a sparse stream (e.g. a subtitle 2808 * stream), data may flow only in irregular intervals with large gaps in 2809 * between. 2810 */ 2811 SPARSE = 1, 2812 /** 2813 * This stream should be selected by default. This 2814 * flag may be used by demuxers to signal that a stream should be selected 2815 * by default in a playback scenario. 2816 */ 2817 SELECT = 2, 2818 /** 2819 * This stream should not be selected by default. 2820 * This flag may be used by demuxers to signal that a stream should not 2821 * be selected by default in a playback scenario, but only if explicitly 2822 * selected by the user (e.g. an audio track for the hard of hearing or 2823 * a director's commentary track). 2824 */ 2825 UNSELECT = 4, 2826 } 2827 alias GstStreamFlags StreamFlags; 2828 2829 /** 2830 * The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the 2831 * application of new streaming threads and their status. 2832 */ 2833 public enum GstStreamStatusType 2834 { 2835 /** 2836 * A new thread need to be created. 2837 */ 2838 CREATE = 0, 2839 /** 2840 * a thread entered its loop function 2841 */ 2842 ENTER = 1, 2843 /** 2844 * a thread left its loop function 2845 */ 2846 LEAVE = 2, 2847 /** 2848 * a thread is destroyed 2849 */ 2850 DESTROY = 3, 2851 /** 2852 * a thread is started 2853 */ 2854 START = 8, 2855 /** 2856 * a thread is paused 2857 */ 2858 PAUSE = 9, 2859 /** 2860 * a thread is stopped 2861 */ 2862 STOP = 10, 2863 } 2864 alias GstStreamStatusType StreamStatusType; 2865 2866 /** 2867 * #GstStreamType describes a high level classification set for 2868 * flows of data in #GstStream objects. 2869 * 2870 * Note that this is a flag, and therefore users should not assume it 2871 * will be a single value. Do not use the equality operator for checking 2872 * whether a stream is of a certain type. 2873 */ 2874 public enum GstStreamType 2875 { 2876 /** 2877 * The stream is of unknown (unclassified) type. 2878 */ 2879 UNKNOWN = 1, 2880 /** 2881 * The stream is of audio data 2882 */ 2883 AUDIO = 2, 2884 /** 2885 * The stream carries video data 2886 */ 2887 VIDEO = 4, 2888 /** 2889 * The stream is a muxed container type 2890 */ 2891 CONTAINER = 8, 2892 /** 2893 * The stream contains subtitle / subpicture data. 2894 */ 2895 TEXT = 16, 2896 } 2897 alias GstStreamType StreamType; 2898 2899 /** 2900 * The type of a %GST_MESSAGE_STRUCTURE_CHANGE. 2901 */ 2902 public enum GstStructureChangeType 2903 { 2904 /** 2905 * Pad linking is starting or done. 2906 */ 2907 LINK = 0, 2908 /** 2909 * Pad unlinking is starting or done. 2910 */ 2911 UNLINK = 1, 2912 } 2913 alias GstStructureChangeType StructureChangeType; 2914 2915 /** 2916 * Extra tag flags used when registering tags. 2917 */ 2918 public enum GstTagFlag 2919 { 2920 /** 2921 * undefined flag 2922 */ 2923 UNDEFINED = 0, 2924 /** 2925 * tag is meta data 2926 */ 2927 META = 1, 2928 /** 2929 * tag is encoded 2930 */ 2931 ENCODED = 2, 2932 /** 2933 * tag is decoded 2934 */ 2935 DECODED = 3, 2936 /** 2937 * number of tag flags 2938 */ 2939 COUNT = 4, 2940 } 2941 alias GstTagFlag TagFlag; 2942 2943 /** 2944 * The different tag merging modes are basically replace, overwrite and append, 2945 * but they can be seen from two directions. Given two taglists: (A) the tags 2946 * already in the element and (B) the ones that are supplied to the element ( 2947 * e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a 2948 * %GST_EVENT_TAG), how are these tags merged? 2949 * In the table below this is shown for the cases that a tag exists in the list 2950 * (A) or does not exists (!A) and combinations thereof. 2951 * 2952 * <table frame="all" colsep="1" rowsep="1"> 2953 * <title>merge mode</title> 2954 * <tgroup cols='5' align='left'> 2955 * <thead> 2956 * <row> 2957 * <entry>merge mode</entry> 2958 * <entry>A + B</entry> 2959 * <entry>A + !B</entry> 2960 * <entry>!A + B</entry> 2961 * <entry>!A + !B</entry> 2962 * </row> 2963 * </thead> 2964 * <tbody> 2965 * <row> 2966 * <entry>REPLACE_ALL</entry> 2967 * <entry>B</entry> 2968 * <entry>-</entry> 2969 * <entry>B</entry> 2970 * <entry>-</entry> 2971 * </row> 2972 * <row> 2973 * <entry>REPLACE</entry> 2974 * <entry>B</entry> 2975 * <entry>A</entry> 2976 * <entry>B</entry> 2977 * <entry>-</entry> 2978 * </row> 2979 * <row> 2980 * <entry>APPEND</entry> 2981 * <entry>A, B</entry> 2982 * <entry>A</entry> 2983 * <entry>B</entry> 2984 * <entry>-</entry> 2985 * </row> 2986 * <row> 2987 * <entry>PREPEND</entry> 2988 * <entry>B, A</entry> 2989 * <entry>A</entry> 2990 * <entry>B</entry> 2991 * <entry>-</entry> 2992 * </row> 2993 * <row> 2994 * <entry>KEEP</entry> 2995 * <entry>A</entry> 2996 * <entry>A</entry> 2997 * <entry>B</entry> 2998 * <entry>-</entry> 2999 * </row> 3000 * <row> 3001 * <entry>KEEP_ALL</entry> 3002 * <entry>A</entry> 3003 * <entry>A</entry> 3004 * <entry>-</entry> 3005 * <entry>-</entry> 3006 * </row> 3007 * </tbody> 3008 * </tgroup> 3009 * </table> 3010 */ 3011 public enum GstTagMergeMode 3012 { 3013 /** 3014 * undefined merge mode 3015 */ 3016 UNDEFINED = 0, 3017 /** 3018 * replace all tags (clear list and append) 3019 */ 3020 REPLACE_ALL = 1, 3021 /** 3022 * replace tags 3023 */ 3024 REPLACE = 2, 3025 /** 3026 * append tags 3027 */ 3028 APPEND = 3, 3029 /** 3030 * prepend tags 3031 */ 3032 PREPEND = 4, 3033 /** 3034 * keep existing tags 3035 */ 3036 KEEP = 5, 3037 /** 3038 * keep all existing tags 3039 */ 3040 KEEP_ALL = 6, 3041 /** 3042 * the number of merge modes 3043 */ 3044 COUNT = 7, 3045 } 3046 alias GstTagMergeMode TagMergeMode; 3047 3048 /** 3049 * GstTagScope specifies if a taglist applies to the complete 3050 * medium or only to one single stream. 3051 */ 3052 public enum GstTagScope 3053 { 3054 /** 3055 * tags specific to this single stream 3056 */ 3057 STREAM = 0, 3058 /** 3059 * global tags for the complete medium 3060 */ 3061 GLOBAL = 1, 3062 } 3063 alias GstTagScope TagScope; 3064 3065 /** 3066 * The different states a task can be in 3067 */ 3068 public enum GstTaskState 3069 { 3070 /** 3071 * the task is started and running 3072 */ 3073 STARTED = 0, 3074 /** 3075 * the task is stopped 3076 */ 3077 STOPPED = 1, 3078 /** 3079 * the task is paused 3080 */ 3081 PAUSED = 2, 3082 } 3083 alias GstTaskState TaskState; 3084 3085 /** 3086 * The different types of TOC entries (see #GstTocEntry). 3087 * 3088 * There are two types of TOC entries: alternatives or parts in a sequence. 3089 */ 3090 public enum GstTocEntryType 3091 { 3092 /** 3093 * entry is an angle (i.e. an alternative) 3094 */ 3095 ANGLE = -3, 3096 /** 3097 * entry is a version (i.e. alternative) 3098 */ 3099 VERSION = -2, 3100 /** 3101 * entry is an edition (i.e. alternative) 3102 */ 3103 EDITION = -1, 3104 /** 3105 * invalid entry type value 3106 */ 3107 INVALID = 0, 3108 /** 3109 * entry is a title (i.e. a part of a sequence) 3110 */ 3111 TITLE = 1, 3112 /** 3113 * entry is a track (i.e. a part of a sequence) 3114 */ 3115 TRACK = 2, 3116 /** 3117 * entry is a chapter (i.e. a part of a sequence) 3118 */ 3119 CHAPTER = 3, 3120 } 3121 alias GstTocEntryType TocEntryType; 3122 3123 /** 3124 * How a #GstTocEntry should be repeated. By default, entries are played a 3125 * single time. 3126 * 3127 * Since: 1.4 3128 */ 3129 public enum GstTocLoopType 3130 { 3131 /** 3132 * single forward playback 3133 */ 3134 NONE = 0, 3135 /** 3136 * repeat forward 3137 */ 3138 FORWARD = 1, 3139 /** 3140 * repeat backward 3141 */ 3142 REVERSE = 2, 3143 /** 3144 * repeat forward and backward 3145 */ 3146 PING_PONG = 3, 3147 } 3148 alias GstTocLoopType TocLoopType; 3149 3150 /** 3151 * The scope of a TOC. 3152 */ 3153 public enum GstTocScope 3154 { 3155 /** 3156 * global TOC representing all selectable options 3157 * (this is what applications are usually interested in) 3158 */ 3159 GLOBAL = 1, 3160 /** 3161 * TOC for the currently active/selected stream 3162 * (this is a TOC representing the current stream from start to EOS, 3163 * and is what a TOC writer / muxer is usually interested in; it will 3164 * usually be a subset of the global TOC, e.g. just the chapters of 3165 * the current title, or the chapters selected for playback from the 3166 * current title) 3167 */ 3168 CURRENT = 2, 3169 } 3170 alias GstTocScope TocScope; 3171 3172 /** 3173 * Flag that describe the value. These flags help applications processing the 3174 * logs to understand the values. 3175 */ 3176 public enum GstTracerValueFlags 3177 { 3178 /** 3179 * no flags 3180 */ 3181 NONE = 0, 3182 /** 3183 * the value is optional. When using this flag 3184 * one need to have an additional boolean arg before this value in the 3185 * var-args list passed to gst_tracer_record_log(). 3186 */ 3187 OPTIONAL = 1, 3188 /** 3189 * the value is a combined figure, since the 3190 * start of tracing. Examples are averages or timestamps. 3191 */ 3192 AGGREGATED = 2, 3193 } 3194 alias GstTracerValueFlags TracerValueFlags; 3195 3196 /** 3197 * Tracing record will contain fields that contain a meassured value or extra 3198 * meta-data. One such meta data are values that tell where a measurement was 3199 * taken. This enumerating declares to which scope such a meta data field 3200 * relates to. If it is e.g. %GST_TRACER_VALUE_SCOPE_PAD, then each of the log 3201 * events may contain values for different #GstPads. 3202 * 3203 * Since: 1.8 3204 */ 3205 public enum GstTracerValueScope 3206 { 3207 /** 3208 * the value is related to the process 3209 */ 3210 PROCESS = 0, 3211 /** 3212 * the value is related to a thread 3213 */ 3214 THREAD = 1, 3215 /** 3216 * the value is related to an #GstElement 3217 */ 3218 ELEMENT = 2, 3219 /** 3220 * the value is related to a #GstPad 3221 */ 3222 PAD = 3, 3223 } 3224 alias GstTracerValueScope TracerValueScope; 3225 3226 /** 3227 * The probability of the typefind function. Higher values have more certainty 3228 * in doing a reliable typefind. 3229 */ 3230 public enum GstTypeFindProbability 3231 { 3232 /** 3233 * type undetected. 3234 */ 3235 NONE = 0, 3236 /** 3237 * unlikely typefind. 3238 */ 3239 MINIMUM = 1, 3240 /** 3241 * possible type detected. 3242 */ 3243 POSSIBLE = 50, 3244 /** 3245 * likely a type was detected. 3246 */ 3247 LIKELY = 80, 3248 /** 3249 * nearly certain that a type was detected. 3250 */ 3251 NEARLY_CERTAIN = 99, 3252 /** 3253 * very certain a type was detected. 3254 */ 3255 MAXIMUM = 100, 3256 } 3257 alias GstTypeFindProbability TypeFindProbability; 3258 3259 /** 3260 * Different URI-related errors that can occur. 3261 */ 3262 public enum GstURIError 3263 { 3264 /** 3265 * The protocol is not supported 3266 */ 3267 UNSUPPORTED_PROTOCOL = 0, 3268 /** 3269 * There was a problem with the URI 3270 */ 3271 BAD_URI = 1, 3272 /** 3273 * Could not set or change the URI because the 3274 * URI handler was in a state where that is not possible or not permitted 3275 */ 3276 BAD_STATE = 2, 3277 /** 3278 * There was a problem with the entity that 3279 * the URI references 3280 */ 3281 BAD_REFERENCE = 3, 3282 } 3283 alias GstURIError URIError; 3284 3285 /** 3286 * The different types of URI direction. 3287 */ 3288 public enum GstURIType 3289 { 3290 /** 3291 * The URI direction is unknown 3292 */ 3293 UNKNOWN = 0, 3294 /** 3295 * The URI is a consumer. 3296 */ 3297 SINK = 1, 3298 /** 3299 * The URI is a producer. 3300 */ 3301 SRC = 2, 3302 } 3303 alias GstURIType URIType; 3304 3305 struct GstAllocationParams 3306 { 3307 /** 3308 * flags to control allocation 3309 */ 3310 GstMemoryFlags flags; 3311 /** 3312 * the desired alignment of the memory 3313 */ 3314 size_t alig; 3315 /** 3316 * the desired prefix 3317 */ 3318 size_t prefix; 3319 /** 3320 * the desired padding 3321 */ 3322 size_t padding; 3323 void*[4] GstReserved; 3324 } 3325 3326 struct GstAllocator 3327 { 3328 GstObject object; 3329 const(char)* memType; 3330 /** 3331 * the implementation of the GstMemoryMapFunction 3332 */ 3333 GstMemoryMapFunction memMap; 3334 /** 3335 * the implementation of the GstMemoryUnmapFunction 3336 */ 3337 GstMemoryUnmapFunction memUnmap; 3338 /** 3339 * the implementation of the GstMemoryCopyFunction 3340 */ 3341 GstMemoryCopyFunction memCopy; 3342 /** 3343 * the implementation of the GstMemoryShareFunction 3344 */ 3345 GstMemoryShareFunction memShare; 3346 /** 3347 * the implementation of the GstMemoryIsSpanFunction 3348 */ 3349 GstMemoryIsSpanFunction memIsSpan; 3350 /** 3351 * the implementation of the GstMemoryMapFullFunction. 3352 * Will be used instead of @mem_map if present. (Since 1.6) 3353 */ 3354 GstMemoryMapFullFunction memMapFull; 3355 /** 3356 * the implementation of the GstMemoryUnmapFullFunction. 3357 * Will be used instead of @mem_unmap if present. (Since 1.6) 3358 */ 3359 GstMemoryUnmapFullFunction memUnmapFull; 3360 void*[2] GstReserved; 3361 GstAllocatorPrivate* priv; 3362 } 3363 3364 /** 3365 * The #GstAllocator is used to create new memory. 3366 */ 3367 struct GstAllocatorClass 3368 { 3369 /** 3370 * Object parent class 3371 */ 3372 GstObjectClass objectClass; 3373 /** 3374 * 3375 * Params: 3376 * allocator = a #GstAllocator to use 3377 * size = size of the visible memory area 3378 * params = optional parameters 3379 * Returns: a new #GstMemory. 3380 */ 3381 extern(C) GstMemory* function(GstAllocator* allocator, size_t size, GstAllocationParams* params) alloc; 3382 /** */ 3383 extern(C) void function(GstAllocator* allocator, GstMemory* memory) free; 3384 void*[4] GstReserved; 3385 } 3386 3387 struct GstAllocatorPrivate; 3388 3389 struct GstAtomicQueue; 3390 3391 struct GstBin 3392 { 3393 GstElement element; 3394 /** 3395 * the number of children in this bin 3396 */ 3397 int numchildren; 3398 /** 3399 * the list of children in this bin 3400 */ 3401 GList* children; 3402 /** 3403 * updated whenever @children changes 3404 */ 3405 uint childrenCookie; 3406 /** 3407 * internal bus for handling child messages 3408 */ 3409 GstBus* childBus; 3410 /** 3411 * queued and cached messages 3412 */ 3413 GList* messages; 3414 /** 3415 * the bin is currently calculating its state 3416 */ 3417 bool polling; 3418 /** 3419 * the bin needs to recalculate its state (deprecated) 3420 */ 3421 bool stateDirty; 3422 /** 3423 * the bin needs to select a new clock 3424 */ 3425 bool clockDirty; 3426 /** 3427 * the last clock selected 3428 */ 3429 GstClock* providedClock; 3430 /** 3431 * the element that provided @provided_clock 3432 */ 3433 GstElement* clockProvider; 3434 GstBinPrivate* priv; 3435 void*[4] GstReserved; 3436 } 3437 3438 /** 3439 * Subclasses can override the @add_element and @remove_element to 3440 * update the list of children in the bin. 3441 * 3442 * The @handle_message method can be overridden to implement custom 3443 * message handling. @handle_message takes ownership of the message, just like 3444 * #gst_element_post_message. 3445 * 3446 * The @deep_element_added vfunc will be called when a new element has been 3447 * added to any bin inside this bin, so it will also be called if a new child 3448 * was added to a sub-bin of this bin. #GstBin implementations that override 3449 * this message should chain up to the parent class implementation so the 3450 * element-added-deep signal is emitted on all parents. 3451 */ 3452 struct GstBinClass 3453 { 3454 /** 3455 * bin parent class 3456 */ 3457 GstElementClass parentClass; 3458 GThreadPool* pool; 3459 /** */ 3460 extern(C) void function(GstBin* bin, GstElement* child) elementAdded; 3461 /** */ 3462 extern(C) void function(GstBin* bin, GstElement* child) elementRemoved; 3463 /** */ 3464 extern(C) int function(GstBin* bin, GstElement* element) addElement; 3465 /** */ 3466 extern(C) int function(GstBin* bin, GstElement* element) removeElement; 3467 /** */ 3468 extern(C) void function(GstBin* bin, GstMessage* message) handleMessage; 3469 /** */ 3470 extern(C) int function(GstBin* bin) doLatency; 3471 /** */ 3472 extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementAdded; 3473 /** */ 3474 extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementRemoved; 3475 void*[2] GstReserved; 3476 } 3477 3478 struct GstBinPrivate; 3479 3480 3481 struct GstBuffer 3482 { 3483 /** 3484 * the parent structure 3485 */ 3486 GstMiniObject miniObject; 3487 /** 3488 * pointer to the pool owner of the buffer 3489 */ 3490 GstBufferPool* pool; 3491 /** 3492 * presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3493 * pts is not known or relevant. The pts contains the timestamp when the 3494 * media should be presented to the user. 3495 */ 3496 GstClockTime pts; 3497 /** 3498 * decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3499 * dts is not known or relevant. The dts contains the timestamp when the 3500 * media should be processed. 3501 */ 3502 GstClockTime dts; 3503 /** 3504 * duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE 3505 * when the duration is not known or relevant. 3506 */ 3507 GstClockTime duration; 3508 /** 3509 * a media specific offset for the buffer data. 3510 * For video frames, this is the frame number of this buffer. 3511 * For audio samples, this is the offset of the first sample in this buffer. 3512 * For file data or compressed data this is the byte offset of the first 3513 * byte in this buffer. 3514 */ 3515 ulong offset; 3516 /** 3517 * the last offset contained in this buffer. It has the same 3518 * format as @offset. 3519 */ 3520 ulong offsetEnd; 3521 } 3522 3523 struct GstBufferList; 3524 3525 struct GstBufferPool 3526 { 3527 GstObject object; 3528 int flushing; 3529 GstBufferPoolPrivate* priv; 3530 void*[4] GstReserved; 3531 } 3532 3533 /** 3534 * Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the 3535 * allocation of the buffer. 3536 * 3537 * The default implementation ignores the @start and @stop members but other 3538 * implementations can use this extra information to decide what buffer to 3539 * return. 3540 */ 3541 struct GstBufferPoolAcquireParams 3542 { 3543 /** 3544 * the format of @start and @stop 3545 */ 3546 GstFormat format; 3547 /** 3548 * the start position 3549 */ 3550 long start; 3551 /** 3552 * the stop position 3553 */ 3554 long stop; 3555 /** 3556 * additional flags 3557 */ 3558 GstBufferPoolAcquireFlags flags; 3559 void*[4] GstReserved; 3560 } 3561 3562 /** 3563 * The GstBufferPool class. 3564 */ 3565 struct GstBufferPoolClass 3566 { 3567 /** 3568 * Object parent class 3569 */ 3570 GstObjectClass objectClass; 3571 /** 3572 * 3573 * Params: 3574 * pool = a #GstBufferPool 3575 * Returns: a %NULL terminated array 3576 * of strings. 3577 */ 3578 extern(C) char** function(GstBufferPool* pool) getOptions; 3579 /** 3580 * 3581 * Params: 3582 * pool = a #GstBufferPool 3583 * config = a #GstStructure 3584 * Returns: %TRUE when the configuration could be set. 3585 */ 3586 extern(C) int function(GstBufferPool* pool, GstStructure* config) setConfig; 3587 /** */ 3588 extern(C) int function(GstBufferPool* pool) start; 3589 /** */ 3590 extern(C) int function(GstBufferPool* pool) stop; 3591 /** 3592 * 3593 * Params: 3594 * pool = a #GstBufferPool 3595 * buffer = a location for a #GstBuffer 3596 * params = parameters. 3597 * Returns: a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is 3598 * inactive. 3599 */ 3600 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) acquireBuffer; 3601 /** */ 3602 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) allocBuffer; 3603 /** */ 3604 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) resetBuffer; 3605 /** */ 3606 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) releaseBuffer; 3607 /** */ 3608 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) freeBuffer; 3609 /** */ 3610 extern(C) void function(GstBufferPool* pool) flushStart; 3611 /** */ 3612 extern(C) void function(GstBufferPool* pool) flushStop; 3613 void*[2] GstReserved; 3614 } 3615 3616 struct GstBufferPoolPrivate; 3617 3618 struct GstBus 3619 { 3620 GstObject object; 3621 GstBusPrivate* priv; 3622 void*[4] GstReserved; 3623 } 3624 3625 struct GstBusClass 3626 { 3627 GstObjectClass parentClass; 3628 /** */ 3629 extern(C) void function(GstBus* bus, GstMessage* message) message; 3630 /** */ 3631 extern(C) void function(GstBus* bus, GstMessage* message) syncMessage; 3632 void*[4] GstReserved; 3633 } 3634 3635 struct GstBusPrivate; 3636 3637 struct GstCaps 3638 { 3639 /** 3640 * the parent type 3641 */ 3642 GstMiniObject miniObject; 3643 } 3644 3645 struct GstCapsFeatures; 3646 3647 struct GstChildProxy; 3648 3649 /** 3650 * #GstChildProxy interface. 3651 */ 3652 struct GstChildProxyInterface 3653 { 3654 /** 3655 * parent interface type. 3656 */ 3657 GTypeInterface parent; 3658 /** 3659 * 3660 * Params: 3661 * parent = the parent object to get the child from 3662 * name = the child's name 3663 * Returns: the child object or %NULL if 3664 * not found. Unref after usage. 3665 * 3666 * MT safe. 3667 */ 3668 extern(C) GObject* function(GstChildProxy* parent, const(char)* name) getChildByName; 3669 /** 3670 * 3671 * Params: 3672 * parent = the parent object to get the child from 3673 * index = the child's position in the child list 3674 * Returns: the child object or %NULL if 3675 * not found (index too high). Unref after usage. 3676 * 3677 * MT safe. 3678 */ 3679 extern(C) GObject* function(GstChildProxy* parent, uint index) getChildByIndex; 3680 /** 3681 * 3682 * Params: 3683 * parent = the parent object 3684 * Returns: the number of child objects 3685 * 3686 * MT safe. 3687 */ 3688 extern(C) uint function(GstChildProxy* parent) getChildrenCount; 3689 /** */ 3690 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childAdded; 3691 /** */ 3692 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childRemoved; 3693 void*[4] GstReserved; 3694 } 3695 3696 struct GstClock 3697 { 3698 GstObject object; 3699 GstClockPrivate* priv; 3700 void*[4] GstReserved; 3701 } 3702 3703 /** 3704 * GStreamer clock class. Override the vmethods to implement the clock 3705 * functionality. 3706 */ 3707 struct GstClockClass 3708 { 3709 /** 3710 * the parent class structure 3711 */ 3712 GstObjectClass parentClass; 3713 /** */ 3714 extern(C) GstClockTime function(GstClock* clock, GstClockTime oldResolution, GstClockTime newResolution) changeResolution; 3715 /** 3716 * 3717 * Params: 3718 * clock = a #GstClock 3719 * Returns: the resolution of the clock in units of #GstClockTime. 3720 * 3721 * MT safe. 3722 */ 3723 extern(C) GstClockTime function(GstClock* clock) getResolution; 3724 /** 3725 * 3726 * Params: 3727 * clock = a #GstClock to query 3728 * Returns: the internal time of the clock. Or GST_CLOCK_TIME_NONE when 3729 * given invalid input. 3730 * 3731 * MT safe. 3732 */ 3733 extern(C) GstClockTime function(GstClock* clock) getInternalTime; 3734 /** */ 3735 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry, GstClockTimeDiff* jitter) wait; 3736 /** */ 3737 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry) waitAsync; 3738 /** */ 3739 extern(C) void function(GstClock* clock, GstClockEntry* entry) unschedule; 3740 void*[4] GstReserved; 3741 } 3742 3743 /** 3744 * All pending timeouts or periodic notifies are converted into 3745 * an entry. 3746 * Note that GstClockEntry should be treated as an opaque structure. It must 3747 * not be extended or allocated using a custom allocator. 3748 */ 3749 struct GstClockEntry 3750 { 3751 /** 3752 * reference counter (read-only) 3753 */ 3754 int refcount; 3755 GstClock* clock; 3756 GstClockEntryType type; 3757 GstClockTime time; 3758 GstClockTime interval; 3759 GstClockReturn status; 3760 GstClockCallback func; 3761 void* userData; 3762 GDestroyNotify destroyData; 3763 bool unscheduled; 3764 bool wokenUp; 3765 void*[4] GstReserved; 3766 } 3767 3768 struct GstClockPrivate; 3769 3770 struct GstContext; 3771 3772 struct GstControlBinding 3773 { 3774 GstObject parent; 3775 /** 3776 * name of the property of this binding 3777 */ 3778 char* name; 3779 /** 3780 * #GParamSpec for this property 3781 */ 3782 GParamSpec* pspec; 3783 GstObject* object; 3784 bool disabled; 3785 union ABI 3786 { 3787 struct Abi 3788 { 3789 GstControlBindingPrivate* priv; 3790 } 3791 Abi abi; 3792 void*[4] GstReserved; 3793 } 3794 ABI abi; 3795 } 3796 3797 /** 3798 * The class structure of #GstControlBinding. 3799 */ 3800 struct GstControlBindingClass 3801 { 3802 /** 3803 * Parent class 3804 */ 3805 GstObjectClass parentClass; 3806 /** 3807 * 3808 * Params: 3809 * binding = the control binding 3810 * object = the object that has controlled properties 3811 * timestamp = the time that should be processed 3812 * lastSync = the last time this was called 3813 * Returns: %TRUE if the controller value could be applied to the object 3814 * property, %FALSE otherwise 3815 */ 3816 extern(C) int function(GstControlBinding* binding, GstObject* object, GstClockTime timestamp, GstClockTime lastSync) syncValues; 3817 /** 3818 * 3819 * Params: 3820 * binding = the control binding 3821 * timestamp = the time the control-change should be read from 3822 * Returns: the GValue of the property at the given time, 3823 * or %NULL if the property isn't controlled. 3824 */ 3825 extern(C) GValue* function(GstControlBinding* binding, GstClockTime timestamp) getValue; 3826 /** 3827 * 3828 * Params: 3829 * binding = the control binding 3830 * timestamp = the time that should be processed 3831 * interval = the time spacing between subsequent values 3832 * nValues = the number of values 3833 * values = array to put control-values in 3834 * Returns: %TRUE if the given array could be filled, %FALSE otherwise 3835 */ 3836 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, void* values) getValueArray; 3837 /** 3838 * 3839 * Params: 3840 * binding = the control binding 3841 * timestamp = the time that should be processed 3842 * interval = the time spacing between subsequent values 3843 * nValues = the number of values 3844 * values = array to put control-values in 3845 * Returns: %TRUE if the given array could be filled, %FALSE otherwise 3846 */ 3847 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, GValue* values) getGValueArray; 3848 void*[4] GstReserved; 3849 } 3850 3851 struct GstControlBindingPrivate; 3852 3853 struct GstControlSource 3854 { 3855 GstObject parent; 3856 /** 3857 * Function for returning a value for a given timestamp 3858 */ 3859 GstControlSourceGetValue getValue; 3860 /** 3861 * Function for returning a values array for a given timestamp 3862 */ 3863 GstControlSourceGetValueArray getValueArray; 3864 void*[4] GstReserved; 3865 } 3866 3867 /** 3868 * The class structure of #GstControlSource. 3869 */ 3870 struct GstControlSourceClass 3871 { 3872 /** 3873 * Parent class 3874 */ 3875 GstObjectClass parentClass; 3876 void*[4] GstReserved; 3877 } 3878 3879 struct GstDateTime; 3880 3881 struct GstDebugCategory 3882 { 3883 int threshold; 3884 uint color; 3885 const(char)* name; 3886 const(char)* description; 3887 } 3888 3889 struct GstDebugMessage; 3890 3891 struct GstDevice 3892 { 3893 /** 3894 * The parent #GstObject strucuture. 3895 */ 3896 GstObject parent; 3897 GstDevicePrivate* priv; 3898 void*[4] GstReserved; 3899 } 3900 3901 /** 3902 * The class structure for a #GstDevice object. 3903 * 3904 * Since: 1.4 3905 */ 3906 struct GstDeviceClass 3907 { 3908 /** 3909 * The parent #GstObjectClass strucuture. 3910 */ 3911 GstObjectClass parentClass; 3912 /** 3913 * 3914 * Params: 3915 * device = a #GstDevice 3916 * name = name of new element, or %NULL to automatically 3917 * create a unique name. 3918 * Returns: a new #GstElement configured to use this device 3919 */ 3920 extern(C) GstElement* function(GstDevice* device, const(char)* name) createElement; 3921 /** 3922 * 3923 * Params: 3924 * device = a #GstDevice 3925 * element = a #GstElement 3926 * Returns: %TRUE if the element could be reconfigured to use this device, 3927 * %FALSE otherwise. 3928 */ 3929 extern(C) int function(GstDevice* device, GstElement* element) reconfigureElement; 3930 void*[4] GstReserved; 3931 } 3932 3933 struct GstDeviceMonitor 3934 { 3935 /** 3936 * the parent #GstObject structure 3937 */ 3938 GstObject parent; 3939 GstDeviceMonitorPrivate* priv; 3940 void*[4] GstReserved; 3941 } 3942 3943 /** 3944 * Opaque device monitor class structure. 3945 * 3946 * Since: 1.4 3947 */ 3948 struct GstDeviceMonitorClass 3949 { 3950 /** 3951 * the parent #GstObjectClass structure 3952 */ 3953 GstObjectClass parentClass; 3954 void*[4] GstReserved; 3955 } 3956 3957 struct GstDeviceMonitorPrivate; 3958 3959 struct GstDevicePrivate; 3960 3961 struct GstDeviceProvider 3962 { 3963 /** 3964 * The parent #GstObject 3965 */ 3966 GstObject parent; 3967 /** 3968 * a #GList of the #GstDevice objects 3969 */ 3970 GList* devices; 3971 GstDeviceProviderPrivate* priv; 3972 void*[4] GstReserved; 3973 } 3974 3975 struct GstDeviceProviderClass 3976 { 3977 /** 3978 * the parent #GstObjectClass structure 3979 */ 3980 GstObjectClass parentClass; 3981 /** 3982 * a pointer to the #GstDeviceProviderFactory that creates this 3983 * provider 3984 */ 3985 GstDeviceProviderFactory* factory; 3986 /** */ 3987 extern(C) GList* function(GstDeviceProvider* provider) probe; 3988 /** 3989 * 3990 * Params: 3991 * provider = A #GstDeviceProvider 3992 * Returns: %TRUE if the device providering could be started 3993 */ 3994 extern(C) int function(GstDeviceProvider* provider) start; 3995 /** */ 3996 extern(C) void function(GstDeviceProvider* provider) stop; 3997 void* metadata; 3998 void*[4] GstReserved; 3999 } 4000 4001 struct GstDeviceProviderFactory; 4002 4003 /** 4004 * The opaque #GstDeviceProviderFactoryClass data structure. 4005 * 4006 * Since: 1.4 4007 */ 4008 struct GstDeviceProviderFactoryClass; 4009 4010 struct GstDeviceProviderPrivate; 4011 4012 4013 struct GstDynamicTypeFactory; 4014 4015 struct GstDynamicTypeFactoryClass; 4016 4017 struct GstElement 4018 { 4019 GstObject object; 4020 /** 4021 * Used to serialize execution of gst_element_set_state() 4022 */ 4023 GRecMutex stateLock; 4024 /** 4025 * Used to signal completion of a state change 4026 */ 4027 GCond stateCond; 4028 /** 4029 * Used to detect concurrent execution of 4030 * gst_element_set_state() and gst_element_get_state() 4031 */ 4032 uint stateCookie; 4033 /** 4034 * the target state of an element as set by the application 4035 */ 4036 GstState targetState; 4037 /** 4038 * the current state of an element 4039 */ 4040 GstState currentState; 4041 /** 4042 * the next state of an element, can be #GST_STATE_VOID_PENDING if 4043 * the element is in the correct state. 4044 */ 4045 GstState nextState; 4046 /** 4047 * the final state the element should go to, can be 4048 * #GST_STATE_VOID_PENDING if the element is in the correct state 4049 */ 4050 GstState pendingState; 4051 /** 4052 * the last return value of an element state change 4053 */ 4054 GstStateChangeReturn lastReturn; 4055 /** 4056 * the bus of the element. This bus is provided to the element by the 4057 * parent element or the application. A #GstPipeline has a bus of its own. 4058 */ 4059 GstBus* bus; 4060 /** 4061 * the clock of the element. This clock is usually provided to the 4062 * element by the toplevel #GstPipeline. 4063 */ 4064 GstClock* clock; 4065 /** 4066 * the time of the clock right before the element is set to 4067 * PLAYING. Subtracting @base_time from the current clock time in the PLAYING 4068 * state will yield the running_time against the clock. 4069 */ 4070 GstClockTimeDiff baseTime; 4071 /** 4072 * the running_time of the last PAUSED state 4073 */ 4074 GstClockTime startTime; 4075 /** 4076 * number of pads of the element, includes both source and sink pads. 4077 */ 4078 ushort numpads; 4079 /** 4080 * list of pads 4081 */ 4082 GList* pads; 4083 /** 4084 * number of source pads of the element. 4085 */ 4086 ushort numsrcpads; 4087 /** 4088 * list of source pads 4089 */ 4090 GList* srcpads; 4091 /** 4092 * number of sink pads of the element. 4093 */ 4094 ushort numsinkpads; 4095 /** 4096 * list of sink pads 4097 */ 4098 GList* sinkpads; 4099 /** 4100 * updated whenever the a pad is added or removed 4101 */ 4102 uint padsCookie; 4103 /** 4104 * list of contexts 4105 */ 4106 GList* contexts; 4107 void*[3] GstReserved; 4108 } 4109 4110 struct GstElementClass 4111 { 4112 /** 4113 * the parent class structure 4114 */ 4115 GstObjectClass parentClass; 4116 /** 4117 * metadata for elements of this class 4118 */ 4119 void* metadata; 4120 /** 4121 * the #GstElementFactory that creates these elements 4122 */ 4123 GstElementFactory* elementfactory; 4124 /** 4125 * a #GList of #GstPadTemplate 4126 */ 4127 GList* padtemplates; 4128 /** 4129 * the number of padtemplates 4130 */ 4131 int numpadtemplates; 4132 /** 4133 * changed whenever the padtemplates change 4134 */ 4135 uint padTemplCookie; 4136 /** */ 4137 extern(C) void function(GstElement* element, GstPad* pad) padAdded; 4138 /** */ 4139 extern(C) void function(GstElement* element, GstPad* pad) padRemoved; 4140 /** */ 4141 extern(C) void function(GstElement* element) noMorePads; 4142 /** 4143 * 4144 * Params: 4145 * element = a #GstElement to find a request pad of. 4146 * templ = a #GstPadTemplate of which we want a pad of. 4147 * name = the name of the request #GstPad 4148 * to retrieve. Can be %NULL. 4149 * caps = the caps of the pad we want to 4150 * request. Can be %NULL. 4151 * Returns: requested #GstPad if found, 4152 * otherwise %NULL. Release after usage. 4153 */ 4154 extern(C) GstPad* function(GstElement* element, GstPadTemplate* templ, const(char)* name, GstCaps* caps) requestNewPad; 4155 /** */ 4156 extern(C) void function(GstElement* element, GstPad* pad) releasePad; 4157 /** 4158 * 4159 * Params: 4160 * element = a #GstElement to get the state of. 4161 * state = a pointer to #GstState to hold the state. 4162 * Can be %NULL. 4163 * pending = a pointer to #GstState to hold the pending 4164 * state. Can be %NULL. 4165 * timeout = a #GstClockTime to specify the timeout for an async 4166 * state change or %GST_CLOCK_TIME_NONE for infinite timeout. 4167 * Returns: %GST_STATE_CHANGE_SUCCESS if the element has no more pending state 4168 * and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the 4169 * element is still performing a state change or 4170 * %GST_STATE_CHANGE_FAILURE if the last state change failed. 4171 * 4172 * MT safe. 4173 */ 4174 extern(C) GstStateChangeReturn function(GstElement* element, GstState* state, GstState* pending, GstClockTime timeout) getState; 4175 /** 4176 * 4177 * Params: 4178 * element = a #GstElement to change state of. 4179 * state = the element's new #GstState. 4180 * Returns: Result of the state change using #GstStateChangeReturn. 4181 * 4182 * MT safe. 4183 */ 4184 extern(C) GstStateChangeReturn function(GstElement* element, GstState state) setState; 4185 /** 4186 * 4187 * Params: 4188 * element = a #GstElement 4189 * transition = the requested transition 4190 * Returns: the #GstStateChangeReturn of the state transition. 4191 */ 4192 extern(C) GstStateChangeReturn function(GstElement* element, GstStateChange transition) changeState; 4193 /** */ 4194 extern(C) void function(GstElement* element, GstState oldstate, GstState newstate, GstState pending) stateChanged; 4195 /** */ 4196 extern(C) void function(GstElement* element, GstBus* bus) setBus; 4197 /** 4198 * 4199 * Params: 4200 * element = a #GstElement to query 4201 * Returns: the GstClock provided by the 4202 * element or %NULL if no clock could be provided. Unref after usage. 4203 * 4204 * MT safe. 4205 */ 4206 extern(C) GstClock* function(GstElement* element) provideClock; 4207 /** 4208 * 4209 * Params: 4210 * element = a #GstElement to set the clock for. 4211 * clock = the #GstClock to set for the element. 4212 * Returns: %TRUE if the element accepted the clock. An element can refuse a 4213 * clock when it, for example, is not able to slave its internal clock to the 4214 * @clock or when it requires a specific clock to operate. 4215 * 4216 * MT safe. 4217 */ 4218 extern(C) int function(GstElement* element, GstClock* clock) setClock; 4219 /** 4220 * 4221 * Params: 4222 * element = a #GstElement to send the event to. 4223 * event = the #GstEvent to send to the element. 4224 * Returns: %TRUE if the event was handled. Events that trigger a preroll (such 4225 * as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. 4226 */ 4227 extern(C) int function(GstElement* element, GstEvent* event) sendEvent; 4228 /** 4229 * 4230 * Params: 4231 * element = a #GstElement to perform the query on. 4232 * query = the #GstQuery. 4233 * Returns: %TRUE if the query could be performed. 4234 * 4235 * MT safe. 4236 */ 4237 extern(C) int function(GstElement* element, GstQuery* query) query; 4238 /** 4239 * 4240 * Params: 4241 * element = a #GstElement posting the message 4242 * message = a #GstMessage to post 4243 * Returns: %TRUE if the message was successfully posted. The function returns 4244 * %FALSE if the element did not have a bus. 4245 * 4246 * MT safe. 4247 */ 4248 extern(C) int function(GstElement* element, GstMessage* message) postMessage; 4249 /** */ 4250 extern(C) void function(GstElement* element, GstContext* context) setContext; 4251 void*[18] GstReserved; 4252 } 4253 4254 struct GstElementFactory; 4255 4256 struct GstElementFactoryClass; 4257 4258 struct GstEvent 4259 { 4260 /** 4261 * the parent structure 4262 */ 4263 GstMiniObject miniObject; 4264 /** 4265 * the #GstEventType of the event 4266 */ 4267 GstEventType type; 4268 /** 4269 * the timestamp of the event 4270 */ 4271 ulong timestamp; 4272 /** 4273 * the sequence number of the event 4274 */ 4275 uint seqnum; 4276 } 4277 4278 4279 /** 4280 * A format definition 4281 */ 4282 struct GstFormatDefinition 4283 { 4284 /** 4285 * The unique id of this format 4286 */ 4287 GstFormat value; 4288 /** 4289 * A short nick of the format 4290 */ 4291 const(char)* nick; 4292 /** 4293 * A longer description of the format 4294 */ 4295 const(char)* description; 4296 /** 4297 * A quark for the nick 4298 */ 4299 GQuark quark; 4300 } 4301 4302 4303 4304 struct GstGhostPad 4305 { 4306 GstProxyPad pad; 4307 GstGhostPadPrivate* priv; 4308 } 4309 4310 struct GstGhostPadClass 4311 { 4312 GstProxyPadClass parentClass; 4313 void*[4] GstReserved; 4314 } 4315 4316 struct GstGhostPadPrivate; 4317 4318 4319 4320 struct GstIterator 4321 { 4322 /** 4323 * The function to copy the iterator 4324 */ 4325 GstIteratorCopyFunction copy; 4326 /** 4327 * The function to get the next item in the iterator 4328 */ 4329 GstIteratorNextFunction next; 4330 /** 4331 * The function to be called for each item retrieved 4332 */ 4333 GstIteratorItemFunction item; 4334 /** 4335 * The function to call when a resync is needed. 4336 */ 4337 GstIteratorResyncFunction resync; 4338 /** 4339 * The function to call when the iterator is freed 4340 */ 4341 GstIteratorFreeFunction free; 4342 /** 4343 * The iterator that is currently pushed with gst_iterator_push() 4344 */ 4345 GstIterator* pushed; 4346 /** 4347 * The type of the object that this iterator will return 4348 */ 4349 GType type; 4350 /** 4351 * The lock protecting the data structure and the cookie. 4352 */ 4353 GMutex* lock; 4354 /** 4355 * The cookie; the value of the master_cookie when this iterator was 4356 * created. 4357 */ 4358 uint cookie; 4359 /** 4360 * A pointer to the master cookie. 4361 */ 4362 uint* masterCookie; 4363 /** 4364 * the size of the iterator 4365 */ 4366 uint size; 4367 void*[4] GstReserved; 4368 } 4369 4370 /** 4371 * A structure containing the result of a map operation such as 4372 * gst_memory_map(). It contains the data and size. 4373 */ 4374 struct GstMapInfo 4375 { 4376 /** 4377 * a pointer to the mapped memory 4378 */ 4379 GstMemory* memory; 4380 /** 4381 * flags used when mapping the memory 4382 */ 4383 GstMapFlags flags; 4384 /** 4385 * a pointer to the mapped data 4386 */ 4387 ubyte* data; 4388 /** 4389 * the valid size in @data 4390 */ 4391 size_t size; 4392 /** 4393 * the maximum bytes in @data 4394 */ 4395 size_t maxsize; 4396 /** 4397 * extra private user_data that the implementation of the memory 4398 * can use to store extra info. 4399 */ 4400 void*[4] userData; 4401 void*[4] GstReserved; 4402 } 4403 4404 struct GstMemory 4405 { 4406 /** 4407 * parent structure 4408 */ 4409 GstMiniObject miniObject; 4410 /** 4411 * pointer to the #GstAllocator 4412 */ 4413 GstAllocator* allocator; 4414 /** 4415 * parent memory block 4416 */ 4417 GstMemory* parent; 4418 /** 4419 * the maximum size allocated 4420 */ 4421 size_t maxsize; 4422 /** 4423 * the alignment of the memory 4424 */ 4425 size_t alig; 4426 /** 4427 * the offset where valid data starts 4428 */ 4429 size_t offset; 4430 /** 4431 * the size of valid data 4432 */ 4433 size_t size; 4434 } 4435 4436 struct GstMessage 4437 { 4438 /** 4439 * the parent structure 4440 */ 4441 GstMiniObject miniObject; 4442 /** 4443 * the #GstMessageType of the message 4444 */ 4445 GstMessageType type; 4446 /** 4447 * the timestamp of the message 4448 */ 4449 ulong timestamp; 4450 /** 4451 * the src of the message 4452 */ 4453 GstObject* src; 4454 /** 4455 * the sequence number of the message 4456 */ 4457 uint seqnum; 4458 GMutex lock; 4459 GCond cond; 4460 } 4461 4462 /** 4463 * The #GstMeta structure should be included as the first member of a #GstBuffer 4464 * metadata structure. The structure defines the API of the metadata and should 4465 * be accessible to all elements using the metadata. 4466 * 4467 * A metadata API is registered with gst_meta_api_type_register() which takes a 4468 * name for the metadata API and some tags associated with the metadata. 4469 * With gst_meta_api_type_has_tag() one can check if a certain metadata API 4470 * contains a given tag. 4471 * 4472 * Multiple implementations of a metadata API can be registered. 4473 * To implement a metadata API, gst_meta_register() should be used. This 4474 * function takes all parameters needed to create, free and transform metadata 4475 * along with the size of the metadata. The function returns a #GstMetaInfo 4476 * structure that contains the information for the implementation of the API. 4477 * 4478 * A specific implementation can be retrieved by name with gst_meta_get_info(). 4479 * 4480 * See #GstBuffer for how the metadata can be added, retrieved and removed from 4481 * buffers. 4482 */ 4483 struct GstMeta 4484 { 4485 /** 4486 * extra flags for the metadata 4487 */ 4488 GstMetaFlags flags; 4489 /** 4490 * pointer to the #GstMetaInfo 4491 */ 4492 GstMetaInfo* info; 4493 } 4494 4495 /** 4496 * The #GstMetaInfo provides information about a specific metadata 4497 * structure. 4498 */ 4499 struct GstMetaInfo 4500 { 4501 /** 4502 * tag identifying the metadata structure and api 4503 */ 4504 GType api; 4505 /** 4506 * type identifying the implementor of the api 4507 */ 4508 GType type; 4509 /** 4510 * size of the metadata 4511 */ 4512 size_t size; 4513 /** 4514 * function for initializing the metadata 4515 */ 4516 GstMetaInitFunction initFunc; 4517 /** 4518 * function for freeing the metadata 4519 */ 4520 GstMetaFreeFunction freeFunc; 4521 /** 4522 * function for transforming the metadata 4523 */ 4524 GstMetaTransformFunction transformFunc; 4525 } 4526 4527 /** 4528 * Extra data passed to a "gst-copy" transform #GstMetaTransformFunction. 4529 */ 4530 struct GstMetaTransformCopy 4531 { 4532 /** 4533 * %TRUE if only region is copied 4534 */ 4535 bool region; 4536 /** 4537 * the offset to copy, 0 if @region is %FALSE, otherwise > 0 4538 */ 4539 size_t offset; 4540 /** 4541 * the size to copy, -1 or the buffer size when @region is %FALSE 4542 */ 4543 size_t size; 4544 } 4545 4546 struct GstMiniObject 4547 { 4548 /** 4549 * the GType of the object 4550 */ 4551 GType type; 4552 /** 4553 * atomic refcount 4554 */ 4555 int refcount; 4556 /** 4557 * atomic state of the locks 4558 */ 4559 int lockstate; 4560 /** 4561 * extra flags. 4562 */ 4563 uint flags; 4564 /** 4565 * a copy function 4566 */ 4567 GstMiniObjectCopyFunction copy; 4568 /** 4569 * a dispose function 4570 */ 4571 GstMiniObjectDisposeFunction dispose; 4572 /** 4573 * the free function 4574 */ 4575 GstMiniObjectFreeFunction free; 4576 uint nQdata; 4577 void* qdata; 4578 } 4579 4580 struct GstObject 4581 { 4582 GObject object; 4583 /** 4584 * object LOCK 4585 */ 4586 GMutex lock; 4587 /** 4588 * The name of the object 4589 */ 4590 char* name; 4591 /** 4592 * this object's parent, weak ref 4593 */ 4594 GstObject* parent; 4595 /** 4596 * flags for this object 4597 */ 4598 uint flags; 4599 GList* controlBindings; 4600 ulong controlRate; 4601 ulong lastSync; 4602 void* GstReserved; 4603 } 4604 4605 /** 4606 * GStreamer base object class. 4607 */ 4608 struct GstObjectClass 4609 { 4610 /** 4611 * parent 4612 */ 4613 GObjectClass parentClass; 4614 /** 4615 * separator used by gst_object_get_path_string() 4616 */ 4617 const(char)* pathStringSeparator; 4618 /** */ 4619 extern(C) void function(GstObject* object, GstObject* orig, GParamSpec* pspec) deepNotify; 4620 void*[4] GstReserved; 4621 } 4622 4623 struct GstPad 4624 { 4625 GstObject object; 4626 /** 4627 * private data owned by the parent element 4628 */ 4629 void* elementPrivate; 4630 /** 4631 * padtemplate for this pad 4632 */ 4633 GstPadTemplate* padtemplate; 4634 /** 4635 * the direction of the pad, cannot change after creating 4636 * the pad. 4637 */ 4638 GstPadDirection direction; 4639 GRecMutex streamRecLock; 4640 GstTask* task; 4641 GCond blockCond; 4642 GHookList probes; 4643 GstPadMode mode; 4644 GstPadActivateFunction activatefunc; 4645 void* activatedata; 4646 GDestroyNotify activatenotify; 4647 GstPadActivateModeFunction activatemodefunc; 4648 void* activatemodedata; 4649 GDestroyNotify activatemodenotify; 4650 GstPad* peer; 4651 GstPadLinkFunction linkfunc; 4652 void* linkdata; 4653 GDestroyNotify linknotify; 4654 GstPadUnlinkFunction unlinkfunc; 4655 void* unlinkdata; 4656 GDestroyNotify unlinknotify; 4657 GstPadChainFunction chainfunc; 4658 void* chaindata; 4659 GDestroyNotify chainnotify; 4660 GstPadChainListFunction chainlistfunc; 4661 void* chainlistdata; 4662 GDestroyNotify chainlistnotify; 4663 GstPadGetRangeFunction getrangefunc; 4664 void* getrangedata; 4665 GDestroyNotify getrangenotify; 4666 GstPadEventFunction eventfunc; 4667 void* eventdata; 4668 GDestroyNotify eventnotify; 4669 long offset; 4670 GstPadQueryFunction queryfunc; 4671 void* querydata; 4672 GDestroyNotify querynotify; 4673 GstPadIterIntLinkFunction iterintlinkfunc; 4674 void* iterintlinkdata; 4675 GDestroyNotify iterintlinknotify; 4676 int numProbes; 4677 int numBlocked; 4678 GstPadPrivate* priv; 4679 union ABI 4680 { 4681 void*[4] GstReserved; 4682 struct Abi 4683 { 4684 GstFlowReturn lastFlowret; 4685 GstPadEventFullFunction eventfullfunc; 4686 } 4687 Abi abi; 4688 } 4689 ABI abi; 4690 } 4691 4692 struct GstPadClass 4693 { 4694 GstObjectClass parentClass; 4695 /** */ 4696 extern(C) void function(GstPad* pad, GstPad* peer) linked; 4697 /** */ 4698 extern(C) void function(GstPad* pad, GstPad* peer) unlinked; 4699 void*[4] GstReserved; 4700 } 4701 4702 struct GstPadPrivate; 4703 4704 struct GstPadProbeInfo 4705 { 4706 /** 4707 * the current probe type 4708 */ 4709 GstPadProbeType type; 4710 /** 4711 * the id of the probe 4712 */ 4713 gulong id; 4714 /** 4715 * type specific data, check the @type field to know the 4716 * datatype. This field can be %NULL. 4717 */ 4718 void* data; 4719 /** 4720 * offset of pull probe, this field is valid when @type contains 4721 * #GST_PAD_PROBE_TYPE_PULL 4722 */ 4723 ulong offset; 4724 /** 4725 * size of pull probe, this field is valid when @type contains 4726 * #GST_PAD_PROBE_TYPE_PULL 4727 */ 4728 uint size; 4729 union ABI 4730 { 4731 void*[4] GstReserved; 4732 struct Abi 4733 { 4734 GstFlowReturn flowRet; 4735 } 4736 Abi abi; 4737 } 4738 ABI abi; 4739 } 4740 4741 struct GstPadTemplate 4742 { 4743 GstObject object; 4744 char* nameTemplate; 4745 GstPadDirection direction; 4746 GstPadPresence presence; 4747 GstCaps* caps; 4748 void*[4] GstReserved; 4749 } 4750 4751 struct GstPadTemplateClass 4752 { 4753 GstObjectClass parentClass; 4754 /** */ 4755 extern(C) void function(GstPadTemplate* templ, GstPad* pad) padCreated; 4756 void*[4] GstReserved; 4757 } 4758 4759 4760 4761 /** 4762 * A GParamSpec derived structure that contains the meta data for fractional 4763 * properties. 4764 */ 4765 struct GstParamSpecArray 4766 { 4767 /** 4768 * super class 4769 */ 4770 GParamSpec parentInstance; 4771 GParamSpec* elementSpec; 4772 } 4773 4774 /** 4775 * A GParamSpec derived structure that contains the meta data for fractional 4776 * properties. 4777 */ 4778 struct GstParamSpecFraction 4779 { 4780 /** 4781 * super class 4782 */ 4783 GParamSpec parentInstance; 4784 /** 4785 * minimal numerator 4786 */ 4787 int minNum; 4788 /** 4789 * minimal denominator 4790 */ 4791 int minDen; 4792 /** 4793 * maximal numerator 4794 */ 4795 int maxNum; 4796 /** 4797 * maximal denominator 4798 */ 4799 int maxDen; 4800 /** 4801 * default numerator 4802 */ 4803 int defNum; 4804 /** 4805 * default denominator 4806 */ 4807 int defDen; 4808 } 4809 4810 /** 4811 * The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer 4812 * to hold a reference to another buffer that is only released when the child 4813 * #GstBuffer is released. 4814 * 4815 * Typically, #GstParentBufferMeta is used when the child buffer is directly 4816 * using the #GstMemory of the parent buffer, and wants to prevent the parent 4817 * buffer from being returned to a buffer pool until the #GstMemory is available 4818 * for re-use. 4819 * 4820 * Since: 1.6 4821 */ 4822 struct GstParentBufferMeta 4823 { 4824 /** 4825 * the parent #GstMeta structure 4826 */ 4827 GstMeta parent; 4828 /** 4829 * the #GstBuffer on which a reference is being held. 4830 */ 4831 GstBuffer* buffer; 4832 } 4833 4834 struct GstParseContext; 4835 4836 struct GstPipeline 4837 { 4838 GstBin bin; 4839 /** 4840 * The fixed clock of the pipeline, used when 4841 * GST_PIPELINE_FLAG_FIXED_CLOCK is set. 4842 */ 4843 GstClock* fixedClock; 4844 /** 4845 * The stream time of the pipeline. A better name for this 4846 * property would be the running_time, the total time spent in the 4847 * PLAYING state without being flushed. (deprecated, use the start_time 4848 * on GstElement). 4849 */ 4850 GstClockTime streamTime; 4851 /** 4852 * Extra delay added to base_time to compensate for computing delays 4853 * when setting elements to PLAYING. 4854 */ 4855 GstClockTime delay; 4856 GstPipelinePrivate* priv; 4857 void*[4] GstReserved; 4858 } 4859 4860 struct GstPipelineClass 4861 { 4862 GstBinClass parentClass; 4863 void*[4] GstReserved; 4864 } 4865 4866 struct GstPipelinePrivate; 4867 4868 struct GstPlugin; 4869 4870 struct GstPluginClass; 4871 4872 /** 4873 * A plugin should export a variable of this type called plugin_desc. The plugin 4874 * loader will use the data provided there to initialize the plugin. 4875 * 4876 * The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL, 4877 * BSD, MIT/X11, Proprietary, unknown. 4878 */ 4879 struct GstPluginDesc 4880 { 4881 /** 4882 * the major version number of core that plugin was compiled for 4883 */ 4884 int majorVersion; 4885 /** 4886 * the minor version number of core that plugin was compiled for 4887 */ 4888 int minorVersion; 4889 /** 4890 * a unique name of the plugin 4891 */ 4892 const(char)* name; 4893 /** 4894 * description of plugin 4895 */ 4896 const(char)* description; 4897 /** 4898 * pointer to the init function of this plugin. 4899 */ 4900 GstPluginInitFunc pluginInit; 4901 /** 4902 * version of the plugin 4903 */ 4904 const(char)* versio; 4905 /** 4906 * effective license of plugin 4907 */ 4908 const(char)* license; 4909 /** 4910 * source module plugin belongs to 4911 */ 4912 const(char)* source; 4913 /** 4914 * shipped package plugin belongs to 4915 */ 4916 const(char)* p; 4917 /** 4918 * URL to provider of plugin 4919 */ 4920 const(char)* origin; 4921 /** 4922 * date time string in ISO 8601 4923 * format (or rather, a subset thereof), or %NULL. Allowed are the 4924 * following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with 4925 * 'T' a separator and 'Z' indicating UTC/Zulu time). This field 4926 * should be set via the GST_PACKAGE_RELEASE_DATETIME 4927 * preprocessor macro. 4928 */ 4929 const(char)* releaseDatetime; 4930 void*[4] GstReserved; 4931 } 4932 4933 struct GstPluginFeature; 4934 4935 struct GstPluginFeatureClass; 4936 4937 struct GstPoll; 4938 4939 struct GstPollFD 4940 { 4941 /** 4942 * a file descriptor 4943 */ 4944 int fd; 4945 int idx; 4946 } 4947 4948 struct GstPreset; 4949 4950 /** 4951 * #GstPreset interface. 4952 */ 4953 struct GstPresetInterface 4954 { 4955 /** 4956 * parent interface type. 4957 */ 4958 GTypeInterface parent; 4959 /** 4960 * 4961 * Params: 4962 * preset = a #GObject that implements #GstPreset 4963 * Returns: list with names, use g_strfreev() after usage. 4964 */ 4965 extern(C) char** function(GstPreset* preset) getPresetNames; 4966 /** 4967 * 4968 * Params: 4969 * preset = a #GObject that implements #GstPreset 4970 * Returns: an 4971 * array of property names which should be freed with g_strfreev() after use. 4972 */ 4973 extern(C) char** function(GstPreset* preset) getPropertyNames; 4974 /** 4975 * 4976 * Params: 4977 * preset = a #GObject that implements #GstPreset 4978 * name = preset name to load 4979 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4980 */ 4981 extern(C) int function(GstPreset* preset, const(char)* name) loadPreset; 4982 /** 4983 * 4984 * Params: 4985 * preset = a #GObject that implements #GstPreset 4986 * name = preset name to save 4987 * Returns: %TRUE for success, %FALSE 4988 */ 4989 extern(C) int function(GstPreset* preset, const(char)* name) savePreset; 4990 /** 4991 * 4992 * Params: 4993 * preset = a #GObject that implements #GstPreset 4994 * oldName = current preset name 4995 * newName = new preset name 4996 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with @old_name 4997 */ 4998 extern(C) int function(GstPreset* preset, const(char)* oldName, const(char)* newName) renamePreset; 4999 /** 5000 * 5001 * Params: 5002 * preset = a #GObject that implements #GstPreset 5003 * name = preset name to remove 5004 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5005 */ 5006 extern(C) int function(GstPreset* preset, const(char)* name) deletePreset; 5007 /** 5008 * 5009 * Params: 5010 * preset = a #GObject that implements #GstPreset 5011 * name = preset name 5012 * tag = meta data item name 5013 * value = new value 5014 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5015 */ 5016 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, const(char)* value) setMeta; 5017 /** 5018 * 5019 * Params: 5020 * preset = a #GObject that implements #GstPreset 5021 * name = preset name 5022 * tag = meta data item name 5023 * value = value 5024 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5025 * or no value for the given @tag 5026 */ 5027 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, char** value) getMeta; 5028 void*[4] GstReserved; 5029 } 5030 5031 /** 5032 * Metadata type that holds information about a sample from a protection-protected 5033 * track, including the information needed to decrypt it (if it is encrypted). 5034 * 5035 * Since: 1.6 5036 */ 5037 struct GstProtectionMeta 5038 { 5039 /** 5040 * the parent #GstMeta. 5041 */ 5042 GstMeta meta; 5043 /** 5044 * the cryptographic information needed to decrypt the sample. 5045 */ 5046 GstStructure* info; 5047 } 5048 5049 struct GstProxyPad 5050 { 5051 GstPad pad; 5052 GstProxyPadPrivate* priv; 5053 } 5054 5055 struct GstProxyPadClass 5056 { 5057 GstPadClass parentClass; 5058 void*[1] GstReserved; 5059 } 5060 5061 struct GstProxyPadPrivate; 5062 5063 struct GstQuery 5064 { 5065 /** 5066 * The parent #GstMiniObject type 5067 */ 5068 GstMiniObject miniObject; 5069 /** 5070 * the #GstQueryType 5071 */ 5072 GstQueryType type; 5073 } 5074 5075 struct GstRegistry 5076 { 5077 GstObject object; 5078 GstRegistryPrivate* priv; 5079 } 5080 5081 struct GstRegistryClass 5082 { 5083 GstObjectClass parentClass; 5084 } 5085 5086 struct GstRegistryPrivate; 5087 5088 struct GstSample; 5089 5090 struct GstSegment 5091 { 5092 /** 5093 * flags for this segment 5094 */ 5095 GstSegmentFlags flags; 5096 /** 5097 * the playback rate of the segment 5098 */ 5099 double rate; 5100 /** 5101 * the already applied rate to the segment 5102 */ 5103 double appliedRate; 5104 /** 5105 * the format of the segment values 5106 */ 5107 GstFormat format; 5108 /** 5109 * the running time (plus elapsed time, see offset) of the segment start 5110 */ 5111 ulong base; 5112 /** 5113 * the amount (in buffer timestamps) that has already been elapsed in 5114 * the segment 5115 */ 5116 ulong offset; 5117 /** 5118 * the start of the segment in buffer timestamp time (PTS) 5119 */ 5120 ulong start; 5121 /** 5122 * the stop of the segment in buffer timestamp time (PTS) 5123 */ 5124 ulong stop; 5125 /** 5126 * the stream time of the segment start 5127 */ 5128 ulong time; 5129 /** 5130 * the buffer timestamp position in the segment (used internally by 5131 * elements such as sources, demuxers or parsers to track progress) 5132 */ 5133 ulong position; 5134 /** 5135 * the duration of the segment 5136 */ 5137 ulong duration; 5138 void*[4] GstReserved; 5139 } 5140 5141 struct GstStaticCaps 5142 { 5143 /** 5144 * the cached #GstCaps 5145 */ 5146 GstCaps* caps; 5147 /** 5148 * a string describing a caps 5149 */ 5150 const(char)* str; 5151 void*[4] GstReserved; 5152 } 5153 5154 struct GstStaticPadTemplate 5155 { 5156 /** 5157 * the name of the template 5158 */ 5159 const(char)* nameTemplate; 5160 /** 5161 * the direction of the template 5162 */ 5163 GstPadDirection direction; 5164 /** 5165 * the presence of the template 5166 */ 5167 GstPadPresence presence; 5168 /** 5169 * the caps of the template. 5170 */ 5171 GstStaticCaps staticCaps; 5172 } 5173 5174 struct GstStream 5175 { 5176 GstObject object; 5177 /** 5178 * The Stream Identifier for this #GstStream 5179 */ 5180 const(char)* streamId; 5181 GstStreamPrivate* priv; 5182 void*[4] GstReserved; 5183 } 5184 5185 /** 5186 * GstStream class structure 5187 */ 5188 struct GstStreamClass 5189 { 5190 /** 5191 * the parent class structure 5192 */ 5193 GstObjectClass parentClass; 5194 void*[4] GstReserved; 5195 } 5196 5197 struct GstStreamCollection 5198 { 5199 GstObject object; 5200 char* upstreamId; 5201 GstStreamCollectionPrivate* priv; 5202 void*[4] GstReserved; 5203 } 5204 5205 /** 5206 * GstStreamCollection class structure 5207 */ 5208 struct GstStreamCollectionClass 5209 { 5210 /** 5211 * the parent class structure 5212 */ 5213 GstObjectClass parentClass; 5214 /** */ 5215 extern(C) void function(GstStreamCollection* collection, GstStream* stream, GParamSpec* pspec) streamNotify; 5216 void*[4] GstReserved; 5217 } 5218 5219 struct GstStreamCollectionPrivate; 5220 5221 struct GstStreamPrivate; 5222 5223 struct GstStructure 5224 { 5225 /** 5226 * the GType of a structure 5227 */ 5228 GType type; 5229 GQuark name; 5230 } 5231 5232 struct GstSystemClock 5233 { 5234 GstClock clock; 5235 GstSystemClockPrivate* priv; 5236 void*[4] GstReserved; 5237 } 5238 5239 struct GstSystemClockClass 5240 { 5241 GstClockClass parentClass; 5242 void*[4] GstReserved; 5243 } 5244 5245 struct GstSystemClockPrivate; 5246 5247 struct GstTagList 5248 { 5249 /** 5250 * the parent type 5251 */ 5252 GstMiniObject miniObject; 5253 } 5254 5255 struct GstTagSetter; 5256 5257 /** 5258 * #GstTagSetterInterface interface. 5259 */ 5260 struct GstTagSetterInterface 5261 { 5262 /** 5263 * parent interface type. 5264 */ 5265 GTypeInterface gIface; 5266 } 5267 5268 struct GstTask 5269 { 5270 GstObject object; 5271 /** 5272 * the state of the task 5273 */ 5274 GstTaskState state; 5275 /** 5276 * used to pause/resume the task 5277 */ 5278 GCond cond; 5279 /** 5280 * The lock taken when iterating the task function 5281 */ 5282 GRecMutex* lock; 5283 /** 5284 * the function executed by this task 5285 */ 5286 GstTaskFunction func; 5287 /** 5288 * user_data passed to the task function 5289 */ 5290 void* userData; 5291 /** 5292 * GDestroyNotify for @user_data 5293 */ 5294 GDestroyNotify notify; 5295 /** 5296 * a flag indicating that the task is running 5297 */ 5298 bool running; 5299 GThread* thread; 5300 GstTaskPrivate* priv; 5301 void*[4] GstReserved; 5302 } 5303 5304 struct GstTaskClass 5305 { 5306 GstObjectClass parentClass; 5307 GstTaskPool* pool; 5308 void*[4] GstReserved; 5309 } 5310 5311 struct GstTaskPool 5312 { 5313 GstObject object; 5314 GThreadPool* pool; 5315 void*[4] GstReserved; 5316 } 5317 5318 /** 5319 * The #GstTaskPoolClass object. 5320 */ 5321 struct GstTaskPoolClass 5322 { 5323 /** 5324 * the parent class structure 5325 */ 5326 GstObjectClass parentClass; 5327 /** */ 5328 extern(C) void function(GstTaskPool* pool, GError** err) prepare; 5329 /** */ 5330 extern(C) void function(GstTaskPool* pool) cleanup; 5331 /** 5332 * 5333 * Params: 5334 * pool = a #GstTaskPool 5335 * func = the function to call 5336 * userData = data to pass to @func 5337 * Returns: a pointer that should be used 5338 * for the gst_task_pool_join function. This pointer can be %NULL, you 5339 * must check @error to detect errors. 5340 * 5341 * Throws: GException on failure. 5342 */ 5343 extern(C) void* function(GstTaskPool* pool, GstTaskPoolFunction func, void* userData, GError** err) push; 5344 /** */ 5345 extern(C) void function(GstTaskPool* pool, void* id) join; 5346 void*[4] GstReserved; 5347 } 5348 5349 struct GstTaskPrivate; 5350 5351 /** 5352 * Structure for saving a timestamp and a value. 5353 */ 5354 struct GstTimedValue 5355 { 5356 /** 5357 * timestamp of the value change 5358 */ 5359 GstClockTime timestamp; 5360 /** 5361 * the corresponding value 5362 */ 5363 double value; 5364 } 5365 5366 struct GstToc; 5367 5368 struct GstTocEntry; 5369 5370 struct GstTocSetter; 5371 5372 /** 5373 * #GstTocSetterInterface interface. 5374 */ 5375 struct GstTocSetterInterface 5376 { 5377 /** 5378 * parent interface type. 5379 */ 5380 GTypeInterface gIface; 5381 } 5382 5383 struct GstTracer 5384 { 5385 GstObject parent; 5386 GstTracerPrivate* priv; 5387 void*[4] GstReserved; 5388 } 5389 5390 struct GstTracerClass 5391 { 5392 GstObjectClass parentClass; 5393 void*[4] GstReserved; 5394 } 5395 5396 struct GstTracerFactory; 5397 5398 struct GstTracerFactoryClass; 5399 5400 struct GstTracerPrivate; 5401 5402 struct GstTracerRecord; 5403 5404 struct GstTracerRecordClass; 5405 5406 struct GstTypeFind 5407 { 5408 /** */ 5409 extern(C) ubyte* function(void* data, long offset, uint size) peek; 5410 /** */ 5411 extern(C) void function(void* data, uint probability, GstCaps* caps) suggest; 5412 /** 5413 * The data used by the caller of the typefinding function. 5414 */ 5415 void* data; 5416 /** */ 5417 extern(C) ulong function(void* data) getLength; 5418 void*[4] GstReserved; 5419 } 5420 5421 struct GstTypeFindFactory; 5422 5423 struct GstTypeFindFactoryClass; 5424 5425 struct GstURIHandler; 5426 5427 /** 5428 * Any #GstElement using this interface should implement these methods. 5429 */ 5430 struct GstURIHandlerInterface 5431 { 5432 /** 5433 * The parent interface type 5434 */ 5435 GTypeInterface parent; 5436 /** */ 5437 extern(C) GstURIType function(GType type) getType; 5438 /** */ 5439 extern(C) char** function(GType type) getProtocols; 5440 /** 5441 * 5442 * Params: 5443 * handler = A #GstURIHandler 5444 * Returns: the URI currently handled by 5445 * the @handler. Returns %NULL if there are no URI currently 5446 * handled. The returned string must be freed with g_free() when no 5447 * longer needed. 5448 */ 5449 extern(C) char* function(GstURIHandler* handler) getUri; 5450 /** 5451 * 5452 * Params: 5453 * handler = A #GstURIHandler 5454 * uri = URI to set 5455 * Returns: %TRUE if the URI was set successfully, else %FALSE. 5456 * 5457 * Throws: GException on failure. 5458 */ 5459 extern(C) int function(GstURIHandler* handler, const(char)* uri, GError** err) setUri; 5460 } 5461 5462 struct GstUri; 5463 5464 struct GstValueArray; 5465 5466 5467 /** 5468 * VTable for the #GValue @type. 5469 */ 5470 struct GstValueTable 5471 { 5472 /** 5473 * a #GType 5474 */ 5475 GType type; 5476 /** 5477 * a #GstValueCompareFunc 5478 */ 5479 GstValueCompareFunc compare; 5480 /** 5481 * a #GstValueSerializeFunc 5482 */ 5483 GstValueSerializeFunc serialize; 5484 /** 5485 * a #GstValueDeserializeFunc 5486 */ 5487 GstValueDeserializeFunc deserialize; 5488 void*[4] GstReserved; 5489 } 5490 5491 /** 5492 * A function that will be called from gst_buffer_foreach_meta(). The @meta 5493 * field will point to a the reference of the meta. 5494 * 5495 * @buffer should not be modified from this callback. 5496 * 5497 * When this function returns %TRUE, the next meta will be 5498 * returned. When %FALSE is returned, gst_buffer_foreach_meta() will return. 5499 * 5500 * When @meta is set to %NULL, the item will be removed from the buffer. 5501 * 5502 * Params: 5503 * buffer = a #GstBuffer 5504 * meta = a pointer to a #GstMeta 5505 * userData = user data passed to gst_buffer_foreach_meta() 5506 * 5507 * Returns: %FALSE when gst_buffer_foreach_meta() should stop 5508 */ 5509 public alias extern(C) int function(GstBuffer* buffer, GstMeta** meta, void* userData) GstBufferForeachMetaFunc; 5510 5511 /** 5512 * A function that will be called from gst_buffer_list_foreach(). The @buffer 5513 * field will point to a the reference of the buffer at @idx. 5514 * 5515 * When this function returns %TRUE, the next buffer will be 5516 * returned. When %FALSE is returned, gst_buffer_list_foreach() will return. 5517 * 5518 * When @buffer is set to %NULL, the item will be removed from the bufferlist. 5519 * When @buffer has been made writable, the new buffer reference can be assigned 5520 * to @buffer. This function is responsible for unreffing the old buffer when 5521 * removing or modifying. 5522 * 5523 * Params: 5524 * buffer = pointer the buffer 5525 * idx = the index of @buffer 5526 * userData = user data passed to gst_buffer_list_foreach() 5527 * 5528 * Returns: %FALSE when gst_buffer_list_foreach() should stop 5529 */ 5530 public alias extern(C) int function(GstBuffer** buffer, uint idx, void* userData) GstBufferListFunc; 5531 5532 /** 5533 * Specifies the type of function passed to gst_bus_add_watch() or 5534 * gst_bus_add_watch_full(), which is called from the mainloop when a message 5535 * is available on the bus. 5536 * 5537 * The message passed to the function will be unreffed after execution of this 5538 * function so it should not be freed in the function. 5539 * 5540 * Note that this function is used as a GSourceFunc which means that returning 5541 * %FALSE will remove the GSource from the mainloop. 5542 * 5543 * Params: 5544 * bus = the #GstBus that sent the message 5545 * message = the #GstMessage 5546 * userData = user data that has been given, when registering the handler 5547 * 5548 * Returns: %FALSE if the event source should be removed. 5549 */ 5550 public alias extern(C) int function(GstBus* bus, GstMessage* message, void* userData) GstBusFunc; 5551 5552 /** 5553 * Handler will be invoked synchronously, when a new message has been injected 5554 * into the bus. This function is mostly used internally. Only one sync handler 5555 * can be attached to a given bus. 5556 * 5557 * If the handler returns GST_BUS_DROP, it should unref the message, else the 5558 * message should not be unreffed by the sync handler. 5559 * 5560 * Params: 5561 * bus = the #GstBus that sent the message 5562 * message = the #GstMessage 5563 * userData = user data that has been given, when registering the handler 5564 * 5565 * Returns: #GstBusSyncReply stating what to do with the message 5566 */ 5567 public alias extern(C) GstBusSyncReply function(GstBus* bus, GstMessage* message, void* userData) GstBusSyncHandler; 5568 5569 /** 5570 * A function that will be called in gst_caps_filter_and_map_in_place(). 5571 * The function may modify @features and @structure, and both will be 5572 * removed from the caps if %FALSE is returned. 5573 * 5574 * Params: 5575 * features = the #GstCapsFeatures 5576 * structure = the #GstStructure 5577 * userData = user data 5578 * 5579 * Returns: %TRUE if the features and structure should be preserved, 5580 * %FALSE if it should be removed. 5581 */ 5582 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsFilterMapFunc; 5583 5584 /** 5585 * A function that will be called in gst_caps_foreach(). The function may 5586 * not modify @features or @structure. 5587 * 5588 * Params: 5589 * features = the #GstCapsFeatures 5590 * structure = the #GstStructure 5591 * userData = user data 5592 * 5593 * Returns: %TRUE if the foreach operation should continue, %FALSE if 5594 * the foreach operation should stop with %FALSE. 5595 * 5596 * Since: 1.6 5597 */ 5598 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsForeachFunc; 5599 5600 /** 5601 * A function that will be called in gst_caps_map_in_place(). The function 5602 * may modify @features and @structure. 5603 * 5604 * Params: 5605 * features = the #GstCapsFeatures 5606 * structure = the #GstStructure 5607 * userData = user data 5608 * 5609 * Returns: %TRUE if the map operation should continue, %FALSE if 5610 * the map operation should stop with %FALSE. 5611 */ 5612 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsMapFunc; 5613 5614 /** 5615 * The function prototype of the callback. 5616 * 5617 * Params: 5618 * clock = The clock that triggered the callback 5619 * time = The time it was triggered 5620 * id = The #GstClockID that expired 5621 * userData = user data passed in the gst_clock_id_wait_async() function 5622 * 5623 * Returns: %TRUE or %FALSE (currently unused) 5624 */ 5625 public alias extern(C) int function(GstClock* clock, GstClockTime time, GstClockID id, void* userData) GstClockCallback; 5626 5627 /** */ 5628 public alias extern(C) void function(GstControlBinding* binding, double srcValue, GValue* destValue) GstControlBindingConvert; 5629 5630 /** 5631 * Function for returning a value for a given timestamp. 5632 * 5633 * Params: 5634 * self = the #GstControlSource instance 5635 * timestamp = timestamp for which a value should be calculated 5636 * value = a value which will be set to the result. 5637 * 5638 * Returns: %TRUE if the value was successfully calculated. 5639 */ 5640 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, double* value) GstControlSourceGetValue; 5641 5642 /** 5643 * Function for returning an array of values for starting at a given timestamp. 5644 * 5645 * Params: 5646 * self = the #GstControlSource instance 5647 * timestamp = timestamp for which a value should be calculated 5648 * interval = the time spacing between subsequent values 5649 * nValues = the number of values 5650 * values = array to put control-values in 5651 * 5652 * Returns: %TRUE if the values were successfully calculated. 5653 */ 5654 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, GstClockTime interval, uint nValues, double* values) GstControlSourceGetValueArray; 5655 5656 /** */ 5657 public alias extern(C) void function() GstDebugFuncPtr; 5658 5659 /** */ 5660 public alias extern(C) void function(GstElement* element, void* userData) GstElementCallAsyncFunc; 5661 5662 /** 5663 * This function will be called when creating a copy of @it and should 5664 * create a copy of all custom iterator fields or increase their 5665 * reference counts. 5666 * 5667 * Params: 5668 * it = The original iterator 5669 * copy = The copied iterator 5670 */ 5671 public alias extern(C) void function(GstIterator* it, GstIterator* copy) GstIteratorCopyFunction; 5672 5673 /** 5674 * A function to be passed to gst_iterator_fold(). 5675 * 5676 * Params: 5677 * item = the item to fold 5678 * ret = a #GValue collecting the result 5679 * userData = data passed to gst_iterator_fold() 5680 * 5681 * Returns: %TRUE if the fold should continue, %FALSE if it should stop. 5682 */ 5683 public alias extern(C) int function(GValue* item, GValue* ret, void* userData) GstIteratorFoldFunction; 5684 5685 /** 5686 * A function that is called by gst_iterator_foreach() for every element. 5687 * 5688 * Params: 5689 * item = The item 5690 * userData = User data 5691 */ 5692 public alias extern(C) void function(GValue* item, void* userData) GstIteratorForeachFunction; 5693 5694 /** 5695 * This function will be called when the iterator is freed. 5696 * 5697 * Implementors of a #GstIterator should implement this 5698 * function and pass it to the constructor of the custom iterator. 5699 * The function will be called with the iterator lock held. 5700 * 5701 * Params: 5702 * it = the iterator 5703 */ 5704 public alias extern(C) void function(GstIterator* it) GstIteratorFreeFunction; 5705 5706 /** 5707 * The function that will be called after the next item of the iterator 5708 * has been retrieved. This function can be used to skip items or stop 5709 * the iterator. 5710 * 5711 * The function will be called with the iterator lock held. 5712 * 5713 * Params: 5714 * it = the iterator 5715 * item = the item being retrieved. 5716 * 5717 * Returns: the result of the operation. 5718 */ 5719 public alias extern(C) GstIteratorItem function(GstIterator* it, GValue* item) GstIteratorItemFunction; 5720 5721 /** 5722 * The function that will be called when the next element of the iterator 5723 * should be retrieved. 5724 * 5725 * Implementors of a #GstIterator should implement this 5726 * function and pass it to the constructor of the custom iterator. 5727 * The function will be called with the iterator lock held. 5728 * 5729 * Params: 5730 * it = the iterator 5731 * result = a pointer to hold the next item 5732 * 5733 * Returns: the result of the operation. 5734 */ 5735 public alias extern(C) GstIteratorResult function(GstIterator* it, GValue* result) GstIteratorNextFunction; 5736 5737 /** 5738 * This function will be called whenever a concurrent update happened 5739 * to the iterated datastructure. The implementor of the iterator should 5740 * restart the iterator from the beginning and clean up any state it might 5741 * have. 5742 * 5743 * Implementors of a #GstIterator should implement this 5744 * function and pass it to the constructor of the custom iterator. 5745 * The function will be called with the iterator lock held. 5746 * 5747 * Params: 5748 * it = the iterator 5749 */ 5750 public alias extern(C) void function(GstIterator* it) GstIteratorResyncFunction; 5751 5752 /** 5753 * Function prototype for a logging function that can be registered with 5754 * gst_debug_add_log_function(). 5755 * Use G_GNUC_NO_INSTRUMENT on that function. 5756 * 5757 * Params: 5758 * category = a #GstDebugCategory 5759 * level = a #GstDebugLevel 5760 * file = file name 5761 * funct = function name 5762 * line = line number 5763 * object = a #GObject 5764 * message = the message 5765 * userData = user data for the log function 5766 */ 5767 public alias extern(C) void function(GstDebugCategory* category, GstDebugLevel level, const(char)* file, const(char)* funct, int line, GObject* object, GstDebugMessage* message, void* userData) GstLogFunction; 5768 5769 /** 5770 * Copy @size bytes from @mem starting at @offset and return them wrapped in a 5771 * new GstMemory object. 5772 * If @size is set to -1, all bytes starting at @offset are copied. 5773 * 5774 * Params: 5775 * mem = a #GstMemory 5776 * offset = an offset 5777 * size = a size or -1 5778 * 5779 * Returns: a new #GstMemory object wrapping a copy of the requested region in 5780 * @mem. 5781 */ 5782 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryCopyFunction; 5783 5784 /** 5785 * Check if @mem1 and @mem2 occupy contiguous memory and return the offset of 5786 * @mem1 in the parent buffer in @offset. 5787 * 5788 * Params: 5789 * mem1 = a #GstMemory 5790 * mem2 = a #GstMemory 5791 * offset = a result offset 5792 * 5793 * Returns: %TRUE if @mem1 and @mem2 are in contiguous memory. 5794 */ 5795 public alias extern(C) int function(GstMemory* mem1, GstMemory* mem2, size_t* offset) GstMemoryIsSpanFunction; 5796 5797 /** 5798 * Get the memory of @mem that can be accessed according to the mode specified 5799 * in @info's flags. The function should return a pointer that contains at least 5800 * @maxsize bytes. 5801 * 5802 * Params: 5803 * mem = a #GstMemory 5804 * info = the #GstMapInfo to map with 5805 * maxsize = size to map 5806 * 5807 * Returns: a pointer to memory of which at least @maxsize bytes can be 5808 * accessed according to the access pattern in @info's flags. 5809 */ 5810 public alias extern(C) void* function(GstMemory* mem, GstMapInfo* info, size_t maxsize) GstMemoryMapFullFunction; 5811 5812 /** 5813 * Get the memory of @mem that can be accessed according to the mode specified 5814 * in @flags. The function should return a pointer that contains at least 5815 * @maxsize bytes. 5816 * 5817 * Params: 5818 * mem = a #GstMemory 5819 * maxsize = size to map 5820 * flags = access mode for the memory 5821 * 5822 * Returns: a pointer to memory of which at least @maxsize bytes can be 5823 * accessed according to the access pattern in @flags. 5824 */ 5825 public alias extern(C) void* function(GstMemory* mem, size_t maxsize, GstMapFlags flags) GstMemoryMapFunction; 5826 5827 /** 5828 * Share @size bytes from @mem starting at @offset and return them wrapped in a 5829 * new GstMemory object. If @size is set to -1, all bytes starting at @offset are 5830 * shared. This function does not make a copy of the bytes in @mem. 5831 * 5832 * Params: 5833 * mem = a #GstMemory 5834 * offset = an offset 5835 * size = a size or -1 5836 * 5837 * Returns: a new #GstMemory object sharing the requested region in @mem. 5838 */ 5839 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryShareFunction; 5840 5841 /** 5842 * Return the pointer previously retrieved with gst_memory_map() with @info. 5843 * 5844 * Params: 5845 * mem = a #GstMemory 5846 * info = a #GstMapInfo 5847 */ 5848 public alias extern(C) void function(GstMemory* mem, GstMapInfo* info) GstMemoryUnmapFullFunction; 5849 5850 /** 5851 * Return the pointer previously retrieved with gst_memory_map(). 5852 * 5853 * Params: 5854 * mem = a #GstMemory 5855 */ 5856 public alias extern(C) void function(GstMemory* mem) GstMemoryUnmapFunction; 5857 5858 /** 5859 * Function called when @meta is freed in @buffer. 5860 * 5861 * Params: 5862 * meta = a #GstMeta 5863 * buffer = a #GstBuffer 5864 */ 5865 public alias extern(C) void function(GstMeta* meta, GstBuffer* buffer) GstMetaFreeFunction; 5866 5867 /** 5868 * Function called when @meta is initialized in @buffer. 5869 * 5870 * Params: 5871 * meta = a #GstMeta 5872 * params = parameters passed to the init function 5873 * buffer = a #GstBuffer 5874 */ 5875 public alias extern(C) int function(GstMeta* meta, void* params, GstBuffer* buffer) GstMetaInitFunction; 5876 5877 /** 5878 * Function called for each @meta in @buffer as a result of performing a 5879 * transformation on @transbuf. Additional @type specific transform data 5880 * is passed to the function as @data. 5881 * 5882 * Implementations should check the @type of the transform and parse 5883 * additional type specific fields in @data that should be used to update 5884 * the metadata on @transbuf. 5885 * 5886 * Params: 5887 * transbuf = a #GstBuffer 5888 * meta = a #GstMeta 5889 * buffer = a #GstBuffer 5890 * type = the transform type 5891 * data = transform specific data. 5892 * 5893 * Returns: %TRUE if the transform could be performed 5894 */ 5895 public alias extern(C) int function(GstBuffer* transbuf, GstMeta* meta, GstBuffer* buffer, GQuark type, void* data) GstMetaTransformFunction; 5896 5897 /** 5898 * Function prototype for methods to create copies of instances. 5899 * 5900 * Params: 5901 * obj = MiniObject to copy 5902 * 5903 * Returns: reference to cloned instance. 5904 */ 5905 public alias extern(C) GstMiniObject* function(GstMiniObject* obj) GstMiniObjectCopyFunction; 5906 5907 /** 5908 * Function prototype for when a miniobject has lost its last refcount. 5909 * Implementation of the mini object are allowed to revive the 5910 * passed object by doing a gst_mini_object_ref(). If the object is not 5911 * revived after the dispose function, the function should return %TRUE 5912 * and the memory associated with the object is freed. 5913 * 5914 * Params: 5915 * obj = MiniObject to dispose 5916 * 5917 * Returns: %TRUE if the object should be cleaned up. 5918 */ 5919 public alias extern(C) int function(GstMiniObject* obj) GstMiniObjectDisposeFunction; 5920 5921 /** 5922 * Virtual function prototype for methods to free resources used by 5923 * mini-objects. 5924 * 5925 * Params: 5926 * obj = MiniObject to free 5927 */ 5928 public alias extern(C) void function(GstMiniObject* obj) GstMiniObjectFreeFunction; 5929 5930 /** 5931 * A #GstMiniObjectNotify function can be added to a mini object as a 5932 * callback that gets triggered when gst_mini_object_unref() drops the 5933 * last ref and @obj is about to be freed. 5934 * 5935 * Params: 5936 * userData = data that was provided when the notify was added 5937 * obj = the mini object 5938 */ 5939 public alias extern(C) void function(void* userData, GstMiniObject* obj) GstMiniObjectNotify; 5940 5941 /** 5942 * This function is called when the pad is activated during the element 5943 * READY to PAUSED state change. By default this function will call the 5944 * activate function that puts the pad in push mode but elements can 5945 * override this function to activate the pad in pull mode if they wish. 5946 * 5947 * Params: 5948 * pad = a #GstPad 5949 * parent = the parent of @pad 5950 * 5951 * Returns: %TRUE if the pad could be activated. 5952 */ 5953 public alias extern(C) int function(GstPad* pad, GstObject* parent) GstPadActivateFunction; 5954 5955 /** 5956 * The prototype of the push and pull activate functions. 5957 * 5958 * Params: 5959 * pad = a #GstPad 5960 * parent = the parent of @pad 5961 * mode = the requested activation mode of @pad 5962 * active = activate or deactivate the pad. 5963 * 5964 * Returns: %TRUE if the pad could be activated or deactivated. 5965 */ 5966 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstPadMode mode, int active) GstPadActivateModeFunction; 5967 5968 /** 5969 * A function that will be called on sinkpads when chaining buffers. 5970 * The function typically processes the data contained in the buffer and 5971 * either consumes the data or passes it on to the internally linked pad(s). 5972 * 5973 * The implementer of this function receives a refcount to @buffer and should 5974 * gst_buffer_unref() when the buffer is no longer needed. 5975 * 5976 * When a chain function detects an error in the data stream, it must post an 5977 * error on the bus and return an appropriate #GstFlowReturn value. 5978 * 5979 * Params: 5980 * pad = the sink #GstPad that performed the chain. 5981 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5982 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5983 * during the execution of this function. 5984 * buffer = the #GstBuffer that is chained, not %NULL. 5985 * 5986 * Returns: #GST_FLOW_OK for success 5987 */ 5988 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBuffer* buffer) GstPadChainFunction; 5989 5990 /** 5991 * A function that will be called on sinkpads when chaining buffer lists. 5992 * The function typically processes the data contained in the buffer list and 5993 * either consumes the data or passes it on to the internally linked pad(s). 5994 * 5995 * The implementer of this function receives a refcount to @list and 5996 * should gst_buffer_list_unref() when the list is no longer needed. 5997 * 5998 * When a chainlist function detects an error in the data stream, it must 5999 * post an error on the bus and return an appropriate #GstFlowReturn value. 6000 * 6001 * Params: 6002 * pad = the sink #GstPad that performed the chain. 6003 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6004 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6005 * during the execution of this function. 6006 * list = the #GstBufferList that is chained, not %NULL. 6007 * 6008 * Returns: #GST_FLOW_OK for success 6009 */ 6010 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBufferList* list) GstPadChainListFunction; 6011 6012 /** 6013 * Function signature to handle an event for the pad. 6014 * 6015 * This variant is for specific elements that will take into account the 6016 * last downstream flow return (from a pad push), in which case they can 6017 * return it. 6018 * 6019 * Params: 6020 * pad = the #GstPad to handle the event. 6021 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6022 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6023 * during the execution of this function. 6024 * event = the #GstEvent to handle. 6025 * 6026 * Returns: %GST_FLOW_OK if the event was handled properly, or any other 6027 * #GstFlowReturn dependent on downstream state. 6028 * 6029 * Since: 1.8 6030 */ 6031 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFullFunction; 6032 6033 /** 6034 * Function signature to handle an event for the pad. 6035 * 6036 * Params: 6037 * pad = the #GstPad to handle the event. 6038 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6039 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6040 * during the execution of this function. 6041 * event = the #GstEvent to handle. 6042 * 6043 * Returns: %TRUE if the pad could handle the event. 6044 */ 6045 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFunction; 6046 6047 /** 6048 * A forward function is called for all internally linked pads, see 6049 * gst_pad_forward(). 6050 * 6051 * Params: 6052 * pad = the #GstPad that is forwarded. 6053 * userData = the gpointer to optional user data. 6054 * 6055 * Returns: %TRUE if the dispatching procedure has to be stopped. 6056 */ 6057 public alias extern(C) int function(GstPad* pad, void* userData) GstPadForwardFunction; 6058 6059 /** 6060 * This function will be called on source pads when a peer element 6061 * request a buffer at the specified @offset and @length. If this function 6062 * returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The 6063 * contents of @buffer is invalid for any other return value. 6064 * 6065 * This function is installed on a source pad with 6066 * gst_pad_set_getrange_function() and can only be called on source pads after 6067 * they are successfully activated with gst_pad_activate_mode() with the 6068 * #GST_PAD_MODE_PULL. 6069 * 6070 * @offset and @length are always given in byte units. @offset must normally be a value 6071 * between 0 and the length in bytes of the data available on @pad. The 6072 * length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a 6073 * #GST_QUERY_SEEKING. 6074 * 6075 * Any @offset larger or equal than the length will make the function return 6076 * #GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not 6077 * contain a valid buffer. 6078 * 6079 * The buffer size of @buffer will only be smaller than @length when @offset is 6080 * near the end of the stream. In all other cases, the size of @buffer must be 6081 * exactly the requested size. 6082 * 6083 * It is allowed to call this function with a 0 @length and valid @offset, in 6084 * which case @buffer will contain a 0-sized buffer and the function returns 6085 * #GST_FLOW_OK. 6086 * 6087 * When this function is called with a -1 @offset, the sequentially next buffer 6088 * of length @length in the stream is returned. 6089 * 6090 * When this function is called with a -1 @length, a buffer with a default 6091 * optimal length is returned in @buffer. The length might depend on the value 6092 * of @offset. 6093 * 6094 * Params: 6095 * pad = the src #GstPad to perform the getrange on. 6096 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6097 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6098 * during the execution of this function. 6099 * offset = the offset of the range 6100 * length = the length of the range 6101 * buffer = a memory location to hold the result buffer, cannot be %NULL. 6102 * 6103 * Returns: #GST_FLOW_OK for success and a valid buffer in @buffer. Any other 6104 * return value leaves @buffer undefined. 6105 */ 6106 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, ulong offset, uint length, GstBuffer** buffer) GstPadGetRangeFunction; 6107 6108 /** 6109 * The signature of the internal pad link iterator function. 6110 * 6111 * Params: 6112 * pad = The #GstPad to query. 6113 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6114 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6115 * during the execution of this function. 6116 * 6117 * Returns: a new #GstIterator that will iterate over all pads that are 6118 * linked to the given pad on the inside of the parent element. 6119 * 6120 * the caller must call gst_iterator_free() after usage. 6121 */ 6122 public alias extern(C) GstIterator* function(GstPad* pad, GstObject* parent) GstPadIterIntLinkFunction; 6123 6124 /** 6125 * Function signature to handle a new link on the pad. 6126 * 6127 * Params: 6128 * pad = the #GstPad that is linked. 6129 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6130 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6131 * during the execution of this function. 6132 * peer = the peer #GstPad of the link 6133 * 6134 * Returns: the result of the link with the specified peer. 6135 */ 6136 public alias extern(C) GstPadLinkReturn function(GstPad* pad, GstObject* parent, GstPad* peer) GstPadLinkFunction; 6137 6138 /** 6139 * Callback used by gst_pad_add_probe(). Gets called to notify about the current 6140 * blocking type. 6141 * 6142 * The callback is allowed to modify the data pointer in @info. 6143 * 6144 * Params: 6145 * pad = the #GstPad that is blocked 6146 * info = #GstPadProbeInfo 6147 * userData = the gpointer to optional user data. 6148 * 6149 * Returns: a #GstPadProbeReturn 6150 */ 6151 public alias extern(C) GstPadProbeReturn function(GstPad* pad, GstPadProbeInfo* info, void* userData) GstPadProbeCallback; 6152 6153 /** 6154 * The signature of the query function. 6155 * 6156 * Params: 6157 * pad = the #GstPad to query. 6158 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6159 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6160 * during the execution of this function. 6161 * query = the #GstQuery object to execute 6162 * 6163 * Returns: %TRUE if the query could be performed. 6164 */ 6165 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstQuery* query) GstPadQueryFunction; 6166 6167 /** 6168 * Callback used by gst_pad_sticky_events_foreach(). 6169 * 6170 * When this function returns %TRUE, the next event will be 6171 * returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return. 6172 * 6173 * When @event is set to %NULL, the item will be removed from the list of sticky events. 6174 * @event can be replaced by assigning a new reference to it. 6175 * This function is responsible for unreffing the old event when 6176 * removing or modifying. 6177 * 6178 * Params: 6179 * pad = the #GstPad. 6180 * event = a sticky #GstEvent. 6181 * userData = the #gpointer to optional user data. 6182 * 6183 * Returns: %TRUE if the iteration should continue 6184 */ 6185 public alias extern(C) int function(GstPad* pad, GstEvent** event, void* userData) GstPadStickyEventsForeachFunction; 6186 6187 /** 6188 * Function signature to handle a unlinking the pad prom its peer. 6189 * 6190 * Params: 6191 * pad = the #GstPad that is linked. 6192 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6193 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6194 * during the execution of this function. 6195 */ 6196 public alias extern(C) void function(GstPad* pad, GstObject* parent) GstPadUnlinkFunction; 6197 6198 /** 6199 * A function that can be used with e.g. gst_registry_feature_filter() 6200 * to get a list of pluginfeature that match certain criteria. 6201 * 6202 * Params: 6203 * feature = the pluginfeature to check 6204 * userData = the user_data that has been passed on e.g. 6205 * gst_registry_feature_filter() 6206 * 6207 * Returns: %TRUE for a positive match, %FALSE otherwise 6208 */ 6209 public alias extern(C) int function(GstPluginFeature* feature, void* userData) GstPluginFeatureFilter; 6210 6211 /** 6212 * A function that can be used with e.g. gst_registry_plugin_filter() 6213 * to get a list of plugins that match certain criteria. 6214 * 6215 * Params: 6216 * plugin = the plugin to check 6217 * userData = the user_data that has been passed on e.g. gst_registry_plugin_filter() 6218 * 6219 * Returns: %TRUE for a positive match, %FALSE otherwise 6220 */ 6221 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginFilter; 6222 6223 /** 6224 * A plugin should provide a pointer to a function of either #GstPluginInitFunc 6225 * or this type in the plugin_desc struct. 6226 * The function will be called by the loader at startup. One would then 6227 * register each #GstPluginFeature. This version allows 6228 * user data to be passed to init function (useful for bindings). 6229 * 6230 * Params: 6231 * plugin = The plugin object 6232 * userData = extra data 6233 * 6234 * Returns: %TRUE if plugin initialised successfully 6235 */ 6236 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginInitFullFunc; 6237 6238 /** 6239 * A plugin should provide a pointer to a function of this type in the 6240 * plugin_desc struct. 6241 * This function will be called by the loader at startup. One would then 6242 * register each #GstPluginFeature. 6243 * 6244 * Params: 6245 * plugin = The plugin object 6246 * 6247 * Returns: %TRUE if plugin initialised successfully 6248 */ 6249 public alias extern(C) int function(GstPlugin* plugin) GstPluginInitFunc; 6250 6251 /** 6252 * A function that will be called in gst_structure_filter_and_map_in_place(). 6253 * The function may modify @value, and the value will be removed from 6254 * the structure if %FALSE is returned. 6255 * 6256 * Params: 6257 * fieldId = the #GQuark of the field name 6258 * value = the #GValue of the field 6259 * userData = user data 6260 * 6261 * Returns: %TRUE if the field should be preserved, %FALSE if it 6262 * should be removed. 6263 */ 6264 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureFilterMapFunc; 6265 6266 /** 6267 * A function that will be called in gst_structure_foreach(). The function may 6268 * not modify @value. 6269 * 6270 * Params: 6271 * fieldId = the #GQuark of the field name 6272 * value = the #GValue of the field 6273 * userData = user data 6274 * 6275 * Returns: %TRUE if the foreach operation should continue, %FALSE if 6276 * the foreach operation should stop with %FALSE. 6277 */ 6278 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureForeachFunc; 6279 6280 /** 6281 * A function that will be called in gst_structure_map_in_place(). The function 6282 * may modify @value. 6283 * 6284 * Params: 6285 * fieldId = the #GQuark of the field name 6286 * value = the #GValue of the field 6287 * userData = user data 6288 * 6289 * Returns: %TRUE if the map operation should continue, %FALSE if 6290 * the map operation should stop with %FALSE. 6291 */ 6292 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureMapFunc; 6293 6294 /** 6295 * A function that will be called in gst_tag_list_foreach(). The function may 6296 * not modify the tag list. 6297 * 6298 * Params: 6299 * list = the #GstTagList 6300 * tag = a name of a tag in @list 6301 * userData = user data 6302 */ 6303 public alias extern(C) void function(GstTagList* list, const(char)* tag, void* userData) GstTagForeachFunc; 6304 6305 /** 6306 * A function for merging multiple values of a tag used when registering 6307 * tags. 6308 * 6309 * Params: 6310 * dest = the destination #GValue 6311 * src = the source #GValue 6312 */ 6313 public alias extern(C) void function(GValue* dest, GValue* src) GstTagMergeFunc; 6314 6315 /** 6316 * A function that will repeatedly be called in the thread created by 6317 * a #GstTask. 6318 * 6319 * Params: 6320 * userData = user data passed to the function 6321 */ 6322 public alias extern(C) void function(void* userData) GstTaskFunction; 6323 6324 /** 6325 * Task function, see gst_task_pool_push(). 6326 * 6327 * Params: 6328 * userData = user data for the task function 6329 */ 6330 public alias extern(C) void function(void* userData) GstTaskPoolFunction; 6331 6332 /** 6333 * Custom GstTask thread callback functions that can be installed. 6334 * 6335 * Params: 6336 * task = The #GstTask 6337 * thread = The #GThread 6338 * userData = user data 6339 */ 6340 public alias extern(C) void function(GstTask* task, GThread* thread, void* userData) GstTaskThreadFunc; 6341 6342 /** 6343 * A function that will be called by typefinding. 6344 * 6345 * Params: 6346 * find = A #GstTypeFind structure 6347 * userData = optional data to pass to the function 6348 */ 6349 public alias extern(C) void function(GstTypeFind* find, void* userData) GstTypeFindFunction; 6350 6351 /** 6352 * Used together with gst_value_compare() to compare #GValue items. 6353 * 6354 * Params: 6355 * value1 = first value for comparison 6356 * value2 = second value for comparison 6357 * 6358 * Returns: one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN 6359 * or GST_VALUE_UNORDERED 6360 */ 6361 public alias extern(C) int function(GValue* value1, GValue* value2) GstValueCompareFunc; 6362 6363 /** 6364 * Used by gst_value_deserialize() to parse a non-binary form into the #GValue. 6365 * 6366 * Params: 6367 * dest = a #GValue 6368 * s = a string 6369 * 6370 * Returns: %TRUE for success 6371 */ 6372 public alias extern(C) int function(GValue* dest, const(char)* s) GstValueDeserializeFunc; 6373 6374 /** 6375 * Used by gst_value_serialize() to obtain a non-binary form of the #GValue. 6376 * 6377 * Free-function: g_free 6378 * 6379 * Params: 6380 * value1 = a #GValue 6381 * 6382 * Returns: the string representation of the value 6383 */ 6384 public alias extern(C) char* function(GValue* value1) GstValueSerializeFunc; 6385 6386 /** 6387 * The allocator name for the default system memory allocator 6388 */ 6389 enum ALLOCATOR_SYSMEM = "SystemMemory"; 6390 alias GST_ALLOCATOR_SYSMEM = ALLOCATOR_SYSMEM; 6391 6392 /** 6393 * Combination of all possible fields that can be copied with 6394 * gst_buffer_copy_into(). 6395 */ 6396 enum BUFFER_COPY_ALL = 15; 6397 alias GST_BUFFER_COPY_ALL = BUFFER_COPY_ALL; 6398 6399 /** 6400 * Combination of all possible metadata fields that can be copied with 6401 * gst_buffer_copy_into(). 6402 */ 6403 enum BUFFER_COPY_METADATA = 7; 6404 alias GST_BUFFER_COPY_METADATA = BUFFER_COPY_METADATA; 6405 6406 /** 6407 * Constant for no-offset return results. 6408 */ 6409 enum BUFFER_OFFSET_NONE = 18446744073709551615UL; 6410 alias GST_BUFFER_OFFSET_NONE = BUFFER_OFFSET_NONE; 6411 6412 enum CAN_INLINE = 1; 6413 alias GST_CAN_INLINE = CAN_INLINE; 6414 6415 enum CAPS_FEATURE_MEMORY_SYSTEM_MEMORY = "memory:SystemMemory"; 6416 alias GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY = CAPS_FEATURE_MEMORY_SYSTEM_MEMORY; 6417 6418 /** 6419 * Constant to define an undefined clock time. 6420 */ 6421 enum CLOCK_TIME_NONE = 18446744073709551615UL; 6422 alias GST_CLOCK_TIME_NONE = CLOCK_TIME_NONE; 6423 6424 enum DEBUG_BG_MASK = 240; 6425 alias GST_DEBUG_BG_MASK = DEBUG_BG_MASK; 6426 6427 enum DEBUG_FG_MASK = 15; 6428 alias GST_DEBUG_FG_MASK = DEBUG_FG_MASK; 6429 6430 enum DEBUG_FORMAT_MASK = 65280; 6431 alias GST_DEBUG_FORMAT_MASK = DEBUG_FORMAT_MASK; 6432 6433 enum ELEMENT_FACTORY_KLASS_DECODER = "Decoder"; 6434 alias GST_ELEMENT_FACTORY_KLASS_DECODER = ELEMENT_FACTORY_KLASS_DECODER; 6435 6436 enum ELEMENT_FACTORY_KLASS_DECRYPTOR = "Decryptor"; 6437 alias GST_ELEMENT_FACTORY_KLASS_DECRYPTOR = ELEMENT_FACTORY_KLASS_DECRYPTOR; 6438 6439 enum ELEMENT_FACTORY_KLASS_DEMUXER = "Demuxer"; 6440 alias GST_ELEMENT_FACTORY_KLASS_DEMUXER = ELEMENT_FACTORY_KLASS_DEMUXER; 6441 6442 enum ELEMENT_FACTORY_KLASS_DEPAYLOADER = "Depayloader"; 6443 alias GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER = ELEMENT_FACTORY_KLASS_DEPAYLOADER; 6444 6445 enum ELEMENT_FACTORY_KLASS_ENCODER = "Encoder"; 6446 alias GST_ELEMENT_FACTORY_KLASS_ENCODER = ELEMENT_FACTORY_KLASS_ENCODER; 6447 6448 enum ELEMENT_FACTORY_KLASS_ENCRYPTOR = "Encryptor"; 6449 alias GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR = ELEMENT_FACTORY_KLASS_ENCRYPTOR; 6450 6451 enum ELEMENT_FACTORY_KLASS_FORMATTER = "Formatter"; 6452 alias GST_ELEMENT_FACTORY_KLASS_FORMATTER = ELEMENT_FACTORY_KLASS_FORMATTER; 6453 6454 enum ELEMENT_FACTORY_KLASS_MEDIA_AUDIO = "Audio"; 6455 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO = ELEMENT_FACTORY_KLASS_MEDIA_AUDIO; 6456 6457 enum ELEMENT_FACTORY_KLASS_MEDIA_IMAGE = "Image"; 6458 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE = ELEMENT_FACTORY_KLASS_MEDIA_IMAGE; 6459 6460 enum ELEMENT_FACTORY_KLASS_MEDIA_METADATA = "Metadata"; 6461 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA = ELEMENT_FACTORY_KLASS_MEDIA_METADATA; 6462 6463 enum ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE = "Subtitle"; 6464 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE = ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE; 6465 6466 enum ELEMENT_FACTORY_KLASS_MEDIA_VIDEO = "Video"; 6467 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO = ELEMENT_FACTORY_KLASS_MEDIA_VIDEO; 6468 6469 enum ELEMENT_FACTORY_KLASS_MUXER = "Muxer"; 6470 alias GST_ELEMENT_FACTORY_KLASS_MUXER = ELEMENT_FACTORY_KLASS_MUXER; 6471 6472 enum ELEMENT_FACTORY_KLASS_PARSER = "Parser"; 6473 alias GST_ELEMENT_FACTORY_KLASS_PARSER = ELEMENT_FACTORY_KLASS_PARSER; 6474 6475 enum ELEMENT_FACTORY_KLASS_PAYLOADER = "Payloader"; 6476 alias GST_ELEMENT_FACTORY_KLASS_PAYLOADER = ELEMENT_FACTORY_KLASS_PAYLOADER; 6477 6478 enum ELEMENT_FACTORY_KLASS_SINK = "Sink"; 6479 alias GST_ELEMENT_FACTORY_KLASS_SINK = ELEMENT_FACTORY_KLASS_SINK; 6480 6481 enum ELEMENT_FACTORY_KLASS_SRC = "Source"; 6482 alias GST_ELEMENT_FACTORY_KLASS_SRC = ELEMENT_FACTORY_KLASS_SRC; 6483 6484 /** 6485 * Elements of any of the defined GST_ELEMENT_FACTORY_LIST types 6486 */ 6487 enum ELEMENT_FACTORY_TYPE_ANY = 562949953421311UL; 6488 alias GST_ELEMENT_FACTORY_TYPE_ANY = ELEMENT_FACTORY_TYPE_ANY; 6489 6490 /** 6491 * All sinks handling audio, video or image media types 6492 */ 6493 enum ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS = 3940649673949188UL; 6494 alias GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS = ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS; 6495 6496 /** 6497 * All encoders handling audio media types 6498 */ 6499 enum ELEMENT_FACTORY_TYPE_AUDIO_ENCODER = 1125899906842626UL; 6500 alias GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER = ELEMENT_FACTORY_TYPE_AUDIO_ENCODER; 6501 6502 /** 6503 * All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders) 6504 */ 6505 enum ELEMENT_FACTORY_TYPE_DECODABLE = 353UL; 6506 alias GST_ELEMENT_FACTORY_TYPE_DECODABLE = ELEMENT_FACTORY_TYPE_DECODABLE; 6507 6508 enum ELEMENT_FACTORY_TYPE_DECODER = 1UL; 6509 alias GST_ELEMENT_FACTORY_TYPE_DECODER = ELEMENT_FACTORY_TYPE_DECODER; 6510 6511 enum ELEMENT_FACTORY_TYPE_DECRYPTOR = 1024UL; 6512 alias GST_ELEMENT_FACTORY_TYPE_DECRYPTOR = ELEMENT_FACTORY_TYPE_DECRYPTOR; 6513 6514 enum ELEMENT_FACTORY_TYPE_DEMUXER = 32UL; 6515 alias GST_ELEMENT_FACTORY_TYPE_DEMUXER = ELEMENT_FACTORY_TYPE_DEMUXER; 6516 6517 enum ELEMENT_FACTORY_TYPE_DEPAYLOADER = 256UL; 6518 alias GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER = ELEMENT_FACTORY_TYPE_DEPAYLOADER; 6519 6520 enum ELEMENT_FACTORY_TYPE_ENCODER = 2UL; 6521 alias GST_ELEMENT_FACTORY_TYPE_ENCODER = ELEMENT_FACTORY_TYPE_ENCODER; 6522 6523 enum ELEMENT_FACTORY_TYPE_ENCRYPTOR = 2048UL; 6524 alias GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR = ELEMENT_FACTORY_TYPE_ENCRYPTOR; 6525 6526 enum ELEMENT_FACTORY_TYPE_FORMATTER = 512UL; 6527 alias GST_ELEMENT_FACTORY_TYPE_FORMATTER = ELEMENT_FACTORY_TYPE_FORMATTER; 6528 6529 enum ELEMENT_FACTORY_TYPE_MAX_ELEMENTS = 281474976710656UL; 6530 alias GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS = ELEMENT_FACTORY_TYPE_MAX_ELEMENTS; 6531 6532 /** 6533 * Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types 6534 * 6535 * Note: Do not use this if you wish to not filter against any of the defined 6536 * media types. If you wish to do this, simply don't specify any 6537 * GST_ELEMENT_FACTORY_TYPE_MEDIA flag. 6538 */ 6539 enum ELEMENT_FACTORY_TYPE_MEDIA_ANY = 18446462598732840960UL; 6540 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY = ELEMENT_FACTORY_TYPE_MEDIA_ANY; 6541 6542 enum ELEMENT_FACTORY_TYPE_MEDIA_AUDIO = 1125899906842624UL; 6543 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO = ELEMENT_FACTORY_TYPE_MEDIA_AUDIO; 6544 6545 enum ELEMENT_FACTORY_TYPE_MEDIA_IMAGE = 2251799813685248UL; 6546 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE = ELEMENT_FACTORY_TYPE_MEDIA_IMAGE; 6547 6548 enum ELEMENT_FACTORY_TYPE_MEDIA_METADATA = 9007199254740992UL; 6549 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA = ELEMENT_FACTORY_TYPE_MEDIA_METADATA; 6550 6551 enum ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE = 4503599627370496UL; 6552 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE = ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE; 6553 6554 enum ELEMENT_FACTORY_TYPE_MEDIA_VIDEO = 562949953421312UL; 6555 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO = ELEMENT_FACTORY_TYPE_MEDIA_VIDEO; 6556 6557 enum ELEMENT_FACTORY_TYPE_MUXER = 16UL; 6558 alias GST_ELEMENT_FACTORY_TYPE_MUXER = ELEMENT_FACTORY_TYPE_MUXER; 6559 6560 enum ELEMENT_FACTORY_TYPE_PARSER = 64UL; 6561 alias GST_ELEMENT_FACTORY_TYPE_PARSER = ELEMENT_FACTORY_TYPE_PARSER; 6562 6563 enum ELEMENT_FACTORY_TYPE_PAYLOADER = 128UL; 6564 alias GST_ELEMENT_FACTORY_TYPE_PAYLOADER = ELEMENT_FACTORY_TYPE_PAYLOADER; 6565 6566 enum ELEMENT_FACTORY_TYPE_SINK = 4UL; 6567 alias GST_ELEMENT_FACTORY_TYPE_SINK = ELEMENT_FACTORY_TYPE_SINK; 6568 6569 enum ELEMENT_FACTORY_TYPE_SRC = 8UL; 6570 alias GST_ELEMENT_FACTORY_TYPE_SRC = ELEMENT_FACTORY_TYPE_SRC; 6571 6572 /** 6573 * All encoders handling video or image media types 6574 */ 6575 enum ELEMENT_FACTORY_TYPE_VIDEO_ENCODER = 2814749767106562UL; 6576 alias GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER = ELEMENT_FACTORY_TYPE_VIDEO_ENCODER; 6577 6578 /** 6579 * Name and contact details of the author(s). Use \n to separate 6580 * multiple author details. 6581 * E.g: "Joe Bloggs <joe.blogs at foo.com>" 6582 */ 6583 enum ELEMENT_METADATA_AUTHOR = "author"; 6584 alias GST_ELEMENT_METADATA_AUTHOR = ELEMENT_METADATA_AUTHOR; 6585 6586 /** 6587 * Sentence describing the purpose of the element. 6588 * E.g: "Write stream to a file" 6589 */ 6590 enum ELEMENT_METADATA_DESCRIPTION = "description"; 6591 alias GST_ELEMENT_METADATA_DESCRIPTION = ELEMENT_METADATA_DESCRIPTION; 6592 6593 /** 6594 * Set uri pointing to user documentation. Applications can use this to show 6595 * help for e.g. effects to users. 6596 */ 6597 enum ELEMENT_METADATA_DOC_URI = "doc-uri"; 6598 alias GST_ELEMENT_METADATA_DOC_URI = ELEMENT_METADATA_DOC_URI; 6599 6600 /** 6601 * Elements that bridge to certain other products can include an icon of that 6602 * used product. Application can show the icon in menus/selectors to help 6603 * identifying specific elements. 6604 */ 6605 enum ELEMENT_METADATA_ICON_NAME = "icon-name"; 6606 alias GST_ELEMENT_METADATA_ICON_NAME = ELEMENT_METADATA_ICON_NAME; 6607 6608 /** 6609 * String describing the type of element, as an unordered list 6610 * separated with slashes ('/'). See draft-klass.txt of the design docs 6611 * for more details and common types. E.g: "Sink/File" 6612 */ 6613 enum ELEMENT_METADATA_KLASS = "klass"; 6614 alias GST_ELEMENT_METADATA_KLASS = ELEMENT_METADATA_KLASS; 6615 6616 /** 6617 * The long English name of the element. E.g. "File Sink" 6618 */ 6619 enum ELEMENT_METADATA_LONGNAME = "long-name"; 6620 alias GST_ELEMENT_METADATA_LONGNAME = ELEMENT_METADATA_LONGNAME; 6621 6622 /** 6623 * Builds a string using errno describing the previously failed system 6624 * call. To be used as the debug argument in #GST_ELEMENT_ERROR. 6625 */ 6626 enum ERROR_SYSTEM = "system error: %s"; 6627 alias GST_ERROR_SYSTEM = ERROR_SYSTEM; 6628 6629 enum EVENT_NUM_SHIFT = 8; 6630 alias GST_EVENT_NUM_SHIFT = EVENT_NUM_SHIFT; 6631 6632 /** 6633 * The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_DOWNSTREAM. 6634 */ 6635 enum EVENT_TYPE_BOTH = 3; 6636 alias GST_EVENT_TYPE_BOTH = EVENT_TYPE_BOTH; 6637 6638 /** 6639 * A mask value with all bits set, for use as a 6640 * #GstFlagSet mask where all flag bits must match 6641 * exactly 6642 */ 6643 enum FLAG_SET_MASK_EXACT = 4294967295; 6644 alias GST_FLAG_SET_MASK_EXACT = FLAG_SET_MASK_EXACT; 6645 6646 /** 6647 * The PERCENT format is between 0 and this value 6648 */ 6649 enum FORMAT_PERCENT_MAX = 1000000UL; 6650 alias GST_FORMAT_PERCENT_MAX = FORMAT_PERCENT_MAX; 6651 6652 /** 6653 * The value used to scale down the reported PERCENT format value to 6654 * its real value. 6655 */ 6656 enum FORMAT_PERCENT_SCALE = 10000UL; 6657 alias GST_FORMAT_PERCENT_SCALE = FORMAT_PERCENT_SCALE; 6658 6659 /** 6660 * Can be used together with #GST_FOURCC_ARGS to properly output a 6661 * #guint32 fourcc value in a printf()-style text message. 6662 * 6663 * |[ 6664 * printf ("fourcc: %" GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS (fcc)); 6665 * ]| 6666 */ 6667 enum FOURCC_FORMAT = "c%c%c%c"; 6668 alias GST_FOURCC_FORMAT = FOURCC_FORMAT; 6669 6670 /** 6671 * To be used in GST_PLUGIN_DEFINE if unsure about the licence. 6672 */ 6673 enum LICENSE_UNKNOWN = "unknown"; 6674 alias GST_LICENSE_UNKNOWN = LICENSE_UNKNOWN; 6675 6676 /** 6677 * GstLockFlags value alias for GST_LOCK_FLAG_READ | GST_LOCK_FLAG_WRITE 6678 */ 6679 enum LOCK_FLAG_READWRITE = 3; 6680 alias GST_LOCK_FLAG_READWRITE = LOCK_FLAG_READWRITE; 6681 6682 /** 6683 * GstMapFlags value alias for GST_MAP_READ | GST_MAP_WRITE 6684 */ 6685 enum MAP_READWRITE = 3; 6686 alias GST_MAP_READWRITE = MAP_READWRITE; 6687 6688 /** 6689 * This metadata stays relevant as long as memory layout is unchanged. 6690 */ 6691 enum META_TAG_MEMORY_STR = "memory"; 6692 alias GST_META_TAG_MEMORY_STR = META_TAG_MEMORY_STR; 6693 6694 /** 6695 * Constant that defines one GStreamer millisecond. 6696 */ 6697 enum MSECOND = 1000000UL; 6698 alias GST_MSECOND = MSECOND; 6699 6700 /** 6701 * Constant that defines one GStreamer nanosecond 6702 */ 6703 enum NSECOND = 1UL; 6704 alias GST_NSECOND = NSECOND; 6705 6706 /** 6707 * Use this flag on GObject properties to signal they can make sense to be. 6708 * controlled over time. This hint is used by the GstController. 6709 */ 6710 enum PARAM_CONTROLLABLE = 2; 6711 alias GST_PARAM_CONTROLLABLE = PARAM_CONTROLLABLE; 6712 6713 /** 6714 * Use this flag on GObject properties of GstElements to indicate that 6715 * they can be changed when the element is in the PAUSED or lower state. 6716 * This flag implies GST_PARAM_MUTABLE_READY. 6717 */ 6718 enum PARAM_MUTABLE_PAUSED = 8; 6719 alias GST_PARAM_MUTABLE_PAUSED = PARAM_MUTABLE_PAUSED; 6720 6721 /** 6722 * Use this flag on GObject properties of GstElements to indicate that 6723 * they can be changed when the element is in the PLAYING or lower state. 6724 * This flag implies GST_PARAM_MUTABLE_PAUSED. 6725 */ 6726 enum PARAM_MUTABLE_PLAYING = 16; 6727 alias GST_PARAM_MUTABLE_PLAYING = PARAM_MUTABLE_PLAYING; 6728 6729 /** 6730 * Use this flag on GObject properties of GstElements to indicate that 6731 * they can be changed when the element is in the READY or lower state. 6732 */ 6733 enum PARAM_MUTABLE_READY = 4; 6734 alias GST_PARAM_MUTABLE_READY = PARAM_MUTABLE_READY; 6735 6736 /** 6737 * Bits based on GST_PARAM_USER_SHIFT can be used by 3rd party applications. 6738 */ 6739 enum PARAM_USER_SHIFT = 256; 6740 alias GST_PARAM_USER_SHIFT = PARAM_USER_SHIFT; 6741 6742 /** 6743 * The field name in a GstCaps that is used to signal the UUID of the protection 6744 * system. 6745 */ 6746 enum PROTECTION_SYSTEM_ID_CAPS_FIELD = "protection-system"; 6747 alias GST_PROTECTION_SYSTEM_ID_CAPS_FIELD = PROTECTION_SYSTEM_ID_CAPS_FIELD; 6748 6749 /** 6750 * printf format type used to debug GStreamer types. You can use this in 6751 * combination with GStreamer's debug logging system as well as the functions 6752 * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf() 6753 * to pretty-print the following types: #GstCaps, #GstStructure, 6754 * #GstCapsFeatures, #GstTagList, #GstDateTime, #GstBuffer, #GstBufferList, 6755 * #GstMessage, #GstEvent, #GstQuery, #GstContext, #GstPad, #GstObject. All 6756 * #GObject types will be printed as typename plus pointer, and everything 6757 * else will simply be printed as pointer address. 6758 * 6759 * This can only be used on types whose size is >= sizeof(gpointer). 6760 */ 6761 enum PTR_FORMAT = "paA"; 6762 alias GST_PTR_FORMAT = PTR_FORMAT; 6763 6764 enum QUERY_NUM_SHIFT = 8; 6765 alias GST_QUERY_NUM_SHIFT = QUERY_NUM_SHIFT; 6766 6767 /** 6768 * The same thing as #GST_QUERY_TYPE_UPSTREAM | #GST_QUERY_TYPE_DOWNSTREAM. 6769 */ 6770 enum QUERY_TYPE_BOTH = 3; 6771 alias GST_QUERY_TYPE_BOTH = QUERY_TYPE_BOTH; 6772 6773 /** 6774 * Constant that defines one GStreamer second. 6775 */ 6776 enum SECOND = 1000000000UL; 6777 alias GST_SECOND = SECOND; 6778 6779 /** 6780 * printf format type used to debug GStreamer segments. You can use this in 6781 * combination with GStreamer's debug logging system as well as the functions 6782 * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf() 6783 * to pretty-print #GstSegment structures. 6784 * This can only be used on pointers to GstSegment structures. 6785 */ 6786 enum SEGMENT_FORMAT = "paB"; 6787 alias GST_SEGMENT_FORMAT = SEGMENT_FORMAT; 6788 6789 /** 6790 * A string that can be used in printf-like format strings to display a signed 6791 * #GstClockTimeDiff or #gint64 value in h:m:s format. Use GST_TIME_ARGS() to 6792 * construct the matching arguments. 6793 * 6794 * Example: 6795 * |[ 6796 * printf("%" GST_STIME_FORMAT "\n", GST_STIME_ARGS(ts)); 6797 * ]| 6798 */ 6799 enum STIME_FORMAT = "c%"; 6800 alias GST_STIME_FORMAT = STIME_FORMAT; 6801 6802 /** 6803 * album containing this data (string) 6804 * 6805 * The album name as it should be displayed, e.g. 'The Jazz Guitar' 6806 */ 6807 enum TAG_ALBUM = "album"; 6808 alias GST_TAG_ALBUM = TAG_ALBUM; 6809 6810 /** 6811 * The artist of the entire album, as it should be displayed. 6812 */ 6813 enum TAG_ALBUM_ARTIST = "album-artist"; 6814 alias GST_TAG_ALBUM_ARTIST = TAG_ALBUM_ARTIST; 6815 6816 /** 6817 * The artist of the entire album, as it should be sorted. 6818 */ 6819 enum TAG_ALBUM_ARTIST_SORTNAME = "album-artist-sortname"; 6820 alias GST_TAG_ALBUM_ARTIST_SORTNAME = TAG_ALBUM_ARTIST_SORTNAME; 6821 6822 /** 6823 * album gain in db (double) 6824 */ 6825 enum TAG_ALBUM_GAIN = "replaygain-album-gain"; 6826 alias GST_TAG_ALBUM_GAIN = TAG_ALBUM_GAIN; 6827 6828 /** 6829 * peak of the album (double) 6830 */ 6831 enum TAG_ALBUM_PEAK = "replaygain-album-peak"; 6832 alias GST_TAG_ALBUM_PEAK = TAG_ALBUM_PEAK; 6833 6834 /** 6835 * album containing this data, as used for sorting (string) 6836 * 6837 * The album name as it should be sorted, e.g. 'Jazz Guitar, The' 6838 */ 6839 enum TAG_ALBUM_SORTNAME = "album-sortname"; 6840 alias GST_TAG_ALBUM_SORTNAME = TAG_ALBUM_SORTNAME; 6841 6842 /** 6843 * count of discs inside collection this disc belongs to (unsigned integer) 6844 */ 6845 enum TAG_ALBUM_VOLUME_COUNT = "album-disc-count"; 6846 alias GST_TAG_ALBUM_VOLUME_COUNT = TAG_ALBUM_VOLUME_COUNT; 6847 6848 /** 6849 * disc number inside a collection (unsigned integer) 6850 */ 6851 enum TAG_ALBUM_VOLUME_NUMBER = "album-disc-number"; 6852 alias GST_TAG_ALBUM_VOLUME_NUMBER = TAG_ALBUM_VOLUME_NUMBER; 6853 6854 /** 6855 * Arbitrary application data (sample) 6856 * 6857 * Some formats allow applications to add their own arbitrary data 6858 * into files. This data is application dependent. 6859 */ 6860 enum TAG_APPLICATION_DATA = "application-data"; 6861 alias GST_TAG_APPLICATION_DATA = TAG_APPLICATION_DATA; 6862 6863 /** 6864 * Name of the application used to create the media (string) 6865 */ 6866 enum TAG_APPLICATION_NAME = "application-name"; 6867 alias GST_TAG_APPLICATION_NAME = TAG_APPLICATION_NAME; 6868 6869 /** 6870 * person(s) responsible for the recording (string) 6871 * 6872 * The artist name as it should be displayed, e.g. 'Jimi Hendrix' or 6873 * 'The Guitar Heroes' 6874 */ 6875 enum TAG_ARTIST = "artist"; 6876 alias GST_TAG_ARTIST = TAG_ARTIST; 6877 6878 /** 6879 * person(s) responsible for the recording, as used for sorting (string) 6880 * 6881 * The artist name as it should be sorted, e.g. 'Hendrix, Jimi' or 6882 * 'Guitar Heroes, The' 6883 */ 6884 enum TAG_ARTIST_SORTNAME = "artist-sortname"; 6885 alias GST_TAG_ARTIST_SORTNAME = TAG_ARTIST_SORTNAME; 6886 6887 /** 6888 * generic file attachment (sample) (sample taglist should specify the content 6889 * type and if possible set "filename" to the file name of the 6890 * attachment) 6891 */ 6892 enum TAG_ATTACHMENT = "attachment"; 6893 alias GST_TAG_ATTACHMENT = TAG_ATTACHMENT; 6894 6895 /** 6896 * codec the audio data is stored in (string) 6897 */ 6898 enum TAG_AUDIO_CODEC = "audio-codec"; 6899 alias GST_TAG_AUDIO_CODEC = TAG_AUDIO_CODEC; 6900 6901 /** 6902 * number of beats per minute in audio (double) 6903 */ 6904 enum TAG_BEATS_PER_MINUTE = "beats-per-minute"; 6905 alias GST_TAG_BEATS_PER_MINUTE = TAG_BEATS_PER_MINUTE; 6906 6907 /** 6908 * exact or average bitrate in bits/s (unsigned integer) 6909 */ 6910 enum TAG_BITRATE = "bitrate"; 6911 alias GST_TAG_BITRATE = TAG_BITRATE; 6912 6913 /** 6914 * codec the data is stored in (string) 6915 */ 6916 enum TAG_CODEC = "codec"; 6917 alias GST_TAG_CODEC = TAG_CODEC; 6918 6919 /** 6920 * free text commenting the data (string) 6921 */ 6922 enum TAG_COMMENT = "comment"; 6923 alias GST_TAG_COMMENT = TAG_COMMENT; 6924 6925 /** 6926 * person(s) who composed the recording (string) 6927 */ 6928 enum TAG_COMPOSER = "composer"; 6929 alias GST_TAG_COMPOSER = TAG_COMPOSER; 6930 6931 /** 6932 * The composer's name, used for sorting (string) 6933 */ 6934 enum TAG_COMPOSER_SORTNAME = "composer-sortname"; 6935 alias GST_TAG_COMPOSER_SORTNAME = TAG_COMPOSER_SORTNAME; 6936 6937 /** 6938 * conductor/performer refinement (string) 6939 */ 6940 enum TAG_CONDUCTOR = "conductor"; 6941 alias GST_TAG_CONDUCTOR = TAG_CONDUCTOR; 6942 6943 /** 6944 * contact information (string) 6945 */ 6946 enum TAG_CONTACT = "contact"; 6947 alias GST_TAG_CONTACT = TAG_CONTACT; 6948 6949 /** 6950 * container format the data is stored in (string) 6951 */ 6952 enum TAG_CONTAINER_FORMAT = "container-format"; 6953 alias GST_TAG_CONTAINER_FORMAT = TAG_CONTAINER_FORMAT; 6954 6955 /** 6956 * copyright notice of the data (string) 6957 */ 6958 enum TAG_COPYRIGHT = "copyright"; 6959 alias GST_TAG_COPYRIGHT = TAG_COPYRIGHT; 6960 6961 /** 6962 * URI to location where copyright details can be found (string) 6963 */ 6964 enum TAG_COPYRIGHT_URI = "copyright-uri"; 6965 alias GST_TAG_COPYRIGHT_URI = TAG_COPYRIGHT_URI; 6966 6967 /** 6968 * date the data was created (#GDate structure) 6969 */ 6970 enum TAG_DATE = "date"; 6971 alias GST_TAG_DATE = TAG_DATE; 6972 6973 /** 6974 * date and time the data was created (#GstDateTime structure) 6975 */ 6976 enum TAG_DATE_TIME = "datetime"; 6977 alias GST_TAG_DATE_TIME = TAG_DATE_TIME; 6978 6979 /** 6980 * short text describing the content of the data (string) 6981 */ 6982 enum TAG_DESCRIPTION = "description"; 6983 alias GST_TAG_DESCRIPTION = TAG_DESCRIPTION; 6984 6985 /** 6986 * Manufacturer of the device used to create the media (string) 6987 */ 6988 enum TAG_DEVICE_MANUFACTURER = "device-manufacturer"; 6989 alias GST_TAG_DEVICE_MANUFACTURER = TAG_DEVICE_MANUFACTURER; 6990 6991 /** 6992 * Model of the device used to create the media (string) 6993 */ 6994 enum TAG_DEVICE_MODEL = "device-model"; 6995 alias GST_TAG_DEVICE_MODEL = TAG_DEVICE_MODEL; 6996 6997 /** 6998 * length in GStreamer time units (nanoseconds) (unsigned 64-bit integer) 6999 */ 7000 enum TAG_DURATION = "duration"; 7001 alias GST_TAG_DURATION = TAG_DURATION; 7002 7003 /** 7004 * name of the person or organisation that encoded the file. May contain a 7005 * copyright message if the person or organisation also holds the copyright 7006 * (string) 7007 * 7008 * Note: do not use this field to describe the encoding application. Use 7009 * #GST_TAG_APPLICATION_NAME or #GST_TAG_COMMENT for that. 7010 */ 7011 enum TAG_ENCODED_BY = "encoded-by"; 7012 alias GST_TAG_ENCODED_BY = TAG_ENCODED_BY; 7013 7014 /** 7015 * encoder used to encode this stream (string) 7016 */ 7017 enum TAG_ENCODER = "encoder"; 7018 alias GST_TAG_ENCODER = TAG_ENCODER; 7019 7020 /** 7021 * version of the encoder used to encode this stream (unsigned integer) 7022 */ 7023 enum TAG_ENCODER_VERSION = "encoder-version"; 7024 alias GST_TAG_ENCODER_VERSION = TAG_ENCODER_VERSION; 7025 7026 /** 7027 * key/value text commenting the data (string) 7028 * 7029 * Must be in the form of 'key=comment' or 7030 * 'key[lc]=comment' where 'lc' is an ISO-639 7031 * language code. 7032 * 7033 * This tag is used for unknown Vorbis comment tags, 7034 * unknown APE tags and certain ID3v2 comment fields. 7035 */ 7036 enum TAG_EXTENDED_COMMENT = "extended-comment"; 7037 alias GST_TAG_EXTENDED_COMMENT = TAG_EXTENDED_COMMENT; 7038 7039 /** 7040 * genre this data belongs to (string) 7041 */ 7042 enum TAG_GENRE = "genre"; 7043 alias GST_TAG_GENRE = TAG_GENRE; 7044 7045 /** 7046 * Indicates the direction the device is pointing to when capturing 7047 * a media. It is represented as degrees in floating point representation, 7048 * 0 means the geographic north, and increases clockwise (double from 0 to 360) 7049 * 7050 * See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION 7051 */ 7052 enum TAG_GEO_LOCATION_CAPTURE_DIRECTION = "geo-location-capture-direction"; 7053 alias GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION = TAG_GEO_LOCATION_CAPTURE_DIRECTION; 7054 7055 /** 7056 * The city (english name) where the media has been produced (string). 7057 */ 7058 enum TAG_GEO_LOCATION_CITY = "geo-location-city"; 7059 alias GST_TAG_GEO_LOCATION_CITY = TAG_GEO_LOCATION_CITY; 7060 7061 /** 7062 * The country (english name) where the media has been produced (string). 7063 */ 7064 enum TAG_GEO_LOCATION_COUNTRY = "geo-location-country"; 7065 alias GST_TAG_GEO_LOCATION_COUNTRY = TAG_GEO_LOCATION_COUNTRY; 7066 7067 /** 7068 * geo elevation of where the media has been recorded or produced in meters 7069 * according to WGS84 (zero is average sea level) (double). 7070 */ 7071 enum TAG_GEO_LOCATION_ELEVATION = "geo-location-elevation"; 7072 alias GST_TAG_GEO_LOCATION_ELEVATION = TAG_GEO_LOCATION_ELEVATION; 7073 7074 /** 7075 * Represents the expected error on the horizontal positioning in 7076 * meters (double). 7077 */ 7078 enum TAG_GEO_LOCATION_HORIZONTAL_ERROR = "geo-location-horizontal-error"; 7079 alias GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR = TAG_GEO_LOCATION_HORIZONTAL_ERROR; 7080 7081 /** 7082 * geo latitude location of where the media has been recorded or produced in 7083 * degrees according to WGS84 (zero at the equator, negative values for southern 7084 * latitudes) (double). 7085 */ 7086 enum TAG_GEO_LOCATION_LATITUDE = "geo-location-latitude"; 7087 alias GST_TAG_GEO_LOCATION_LATITUDE = TAG_GEO_LOCATION_LATITUDE; 7088 7089 /** 7090 * geo longitude location of where the media has been recorded or produced in 7091 * degrees according to WGS84 (zero at the prime meridian in Greenwich/UK, 7092 * negative values for western longitudes). (double). 7093 */ 7094 enum TAG_GEO_LOCATION_LONGITUDE = "geo-location-longitude"; 7095 alias GST_TAG_GEO_LOCATION_LONGITUDE = TAG_GEO_LOCATION_LONGITUDE; 7096 7097 /** 7098 * Indicates the movement direction of the device performing the capture 7099 * of a media. It is represented as degrees in floating point representation, 7100 * 0 means the geographic north, and increases clockwise (double from 0 to 360) 7101 * 7102 * See also #GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION 7103 */ 7104 enum TAG_GEO_LOCATION_MOVEMENT_DIRECTION = "geo-location-movement-direction"; 7105 alias GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION = TAG_GEO_LOCATION_MOVEMENT_DIRECTION; 7106 7107 /** 7108 * Speed of the capturing device when performing the capture. 7109 * Represented in m/s. (double) 7110 * 7111 * See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION 7112 */ 7113 enum TAG_GEO_LOCATION_MOVEMENT_SPEED = "geo-location-movement-speed"; 7114 alias GST_TAG_GEO_LOCATION_MOVEMENT_SPEED = TAG_GEO_LOCATION_MOVEMENT_SPEED; 7115 7116 /** 7117 * human readable descriptive location of where the media has been recorded or 7118 * produced. (string). 7119 */ 7120 enum TAG_GEO_LOCATION_NAME = "geo-location-name"; 7121 alias GST_TAG_GEO_LOCATION_NAME = TAG_GEO_LOCATION_NAME; 7122 7123 /** 7124 * A location 'smaller' than GST_TAG_GEO_LOCATION_CITY that specifies better 7125 * where the media has been produced. (e.g. the neighborhood) (string). 7126 * 7127 * This tag has been added as this is how it is handled/named in XMP's 7128 * Iptc4xmpcore schema. 7129 */ 7130 enum TAG_GEO_LOCATION_SUBLOCATION = "geo-location-sublocation"; 7131 alias GST_TAG_GEO_LOCATION_SUBLOCATION = TAG_GEO_LOCATION_SUBLOCATION; 7132 7133 /** 7134 * Groups together media that are related and spans multiple tracks. An 7135 * example are multiple pieces of a concerto. (string) 7136 */ 7137 enum TAG_GROUPING = "grouping"; 7138 alias GST_TAG_GROUPING = TAG_GROUPING; 7139 7140 /** 7141 * Homepage for this media (i.e. artist or movie homepage) (string) 7142 */ 7143 enum TAG_HOMEPAGE = "homepage"; 7144 alias GST_TAG_HOMEPAGE = TAG_HOMEPAGE; 7145 7146 /** 7147 * image (sample) (sample taglist should specify the content type and preferably 7148 * also set "image-type" field as #GstTagImageType) 7149 */ 7150 enum TAG_IMAGE = "image"; 7151 alias GST_TAG_IMAGE = TAG_IMAGE; 7152 7153 /** 7154 * Represents the 'Orientation' tag from EXIF. Defines how the image 7155 * should be rotated and mirrored for display. (string) 7156 * 7157 * This tag has a predefined set of allowed values: 7158 * "rotate-0" 7159 * "rotate-90" 7160 * "rotate-180" 7161 * "rotate-270" 7162 * "flip-rotate-0" 7163 * "flip-rotate-90" 7164 * "flip-rotate-180" 7165 * "flip-rotate-270" 7166 * 7167 * The naming is adopted according to a possible transformation to perform 7168 * on the image to fix its orientation, obviously equivalent operations will 7169 * yield the same result. 7170 * 7171 * Rotations indicated by the values are in clockwise direction and 7172 * 'flip' means an horizontal mirroring. 7173 */ 7174 enum TAG_IMAGE_ORIENTATION = "image-orientation"; 7175 alias GST_TAG_IMAGE_ORIENTATION = TAG_IMAGE_ORIENTATION; 7176 7177 /** 7178 * Information about the people behind a remix and similar 7179 * interpretations of another existing piece (string) 7180 */ 7181 enum TAG_INTERPRETED_BY = "interpreted-by"; 7182 alias GST_TAG_INTERPRETED_BY = TAG_INTERPRETED_BY; 7183 7184 /** 7185 * International Standard Recording Code - see http://www.ifpi.org/isrc/ (string) 7186 */ 7187 enum TAG_ISRC = "isrc"; 7188 alias GST_TAG_ISRC = TAG_ISRC; 7189 7190 /** 7191 * comma separated keywords describing the content (string). 7192 */ 7193 enum TAG_KEYWORDS = "keywords"; 7194 alias GST_TAG_KEYWORDS = TAG_KEYWORDS; 7195 7196 /** 7197 * ISO-639-2 or ISO-639-1 code for the language the content is in (string) 7198 * 7199 * There is utility API in libgsttag in gst-plugins-base to obtain a translated 7200 * language name from the language code: gst_tag_get_language_name() 7201 */ 7202 enum TAG_LANGUAGE_CODE = "language-code"; 7203 alias GST_TAG_LANGUAGE_CODE = TAG_LANGUAGE_CODE; 7204 7205 /** 7206 * Name of the language the content is in (string) 7207 * 7208 * Free-form name of the language the content is in, if a language code 7209 * is not available. This tag should not be set in addition to a language 7210 * code. It is undefined what language or locale the language name is in. 7211 */ 7212 enum TAG_LANGUAGE_NAME = "language-name"; 7213 alias GST_TAG_LANGUAGE_NAME = TAG_LANGUAGE_NAME; 7214 7215 /** 7216 * license of data (string) 7217 */ 7218 enum TAG_LICENSE = "license"; 7219 alias GST_TAG_LICENSE = TAG_LICENSE; 7220 7221 /** 7222 * URI to location where license details can be found (string) 7223 */ 7224 enum TAG_LICENSE_URI = "license-uri"; 7225 alias GST_TAG_LICENSE_URI = TAG_LICENSE_URI; 7226 7227 /** 7228 * Origin of media as a URI (location, where the original of the file or stream 7229 * is hosted) (string) 7230 */ 7231 enum TAG_LOCATION = "location"; 7232 alias GST_TAG_LOCATION = TAG_LOCATION; 7233 7234 /** 7235 * The lyrics of the media (string) 7236 */ 7237 enum TAG_LYRICS = "lyrics"; 7238 alias GST_TAG_LYRICS = TAG_LYRICS; 7239 7240 /** 7241 * maximum bitrate in bits/s (unsigned integer) 7242 */ 7243 enum TAG_MAXIMUM_BITRATE = "maximum-bitrate"; 7244 alias GST_TAG_MAXIMUM_BITRATE = TAG_MAXIMUM_BITRATE; 7245 7246 /** 7247 * <ulink url="http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name">Midi note number</ulink> 7248 * of the audio track. This is useful for sample instruments and in particular 7249 * for multi-samples. 7250 */ 7251 enum TAG_MIDI_BASE_NOTE = "midi-base-note"; 7252 alias GST_TAG_MIDI_BASE_NOTE = TAG_MIDI_BASE_NOTE; 7253 7254 /** 7255 * minimum bitrate in bits/s (unsigned integer) 7256 */ 7257 enum TAG_MINIMUM_BITRATE = "minimum-bitrate"; 7258 alias GST_TAG_MINIMUM_BITRATE = TAG_MINIMUM_BITRATE; 7259 7260 /** 7261 * nominal bitrate in bits/s (unsigned integer). The actual bitrate might be 7262 * different from this target bitrate. 7263 */ 7264 enum TAG_NOMINAL_BITRATE = "nominal-bitrate"; 7265 alias GST_TAG_NOMINAL_BITRATE = TAG_NOMINAL_BITRATE; 7266 7267 /** 7268 * organization (string) 7269 */ 7270 enum TAG_ORGANIZATION = "organization"; 7271 alias GST_TAG_ORGANIZATION = TAG_ORGANIZATION; 7272 7273 /** 7274 * person(s) performing (string) 7275 */ 7276 enum TAG_PERFORMER = "performer"; 7277 alias GST_TAG_PERFORMER = TAG_PERFORMER; 7278 7279 /** 7280 * image that is meant for preview purposes, e.g. small icon-sized version 7281 * (sample) (sample taglist should specify the content type) 7282 */ 7283 enum TAG_PREVIEW_IMAGE = "preview-image"; 7284 alias GST_TAG_PREVIEW_IMAGE = TAG_PREVIEW_IMAGE; 7285 7286 /** 7287 * Any private data that may be contained in tags (sample). 7288 * 7289 * It is represented by #GstSample in which #GstBuffer contains the 7290 * binary data and the sample's info #GstStructure may contain any 7291 * extra information that identifies the origin or meaning of the data. 7292 * 7293 * Private frames in ID3v2 tags ('PRIV' frames) will be represented 7294 * using this tag, in which case the GstStructure will be named 7295 * "ID3PrivateFrame" and contain a field named "owner" of type string 7296 * which contains the owner-identification string from the tag. 7297 */ 7298 enum TAG_PRIVATE_DATA = "private-data"; 7299 alias GST_TAG_PRIVATE_DATA = TAG_PRIVATE_DATA; 7300 7301 /** 7302 * Name of the label or publisher (string) 7303 */ 7304 enum TAG_PUBLISHER = "publisher"; 7305 alias GST_TAG_PUBLISHER = TAG_PUBLISHER; 7306 7307 /** 7308 * reference level of track and album gain values (double) 7309 */ 7310 enum TAG_REFERENCE_LEVEL = "replaygain-reference-level"; 7311 alias GST_TAG_REFERENCE_LEVEL = TAG_REFERENCE_LEVEL; 7312 7313 /** 7314 * serial number of track (unsigned integer) 7315 */ 7316 enum TAG_SERIAL = "serial"; 7317 alias GST_TAG_SERIAL = TAG_SERIAL; 7318 7319 /** 7320 * Number of the episode within a season/show (unsigned integer) 7321 */ 7322 enum TAG_SHOW_EPISODE_NUMBER = "show-episode-number"; 7323 alias GST_TAG_SHOW_EPISODE_NUMBER = TAG_SHOW_EPISODE_NUMBER; 7324 7325 /** 7326 * Name of the show, used for displaying (string) 7327 */ 7328 enum TAG_SHOW_NAME = "show-name"; 7329 alias GST_TAG_SHOW_NAME = TAG_SHOW_NAME; 7330 7331 /** 7332 * Number of the season of a show/series (unsigned integer) 7333 */ 7334 enum TAG_SHOW_SEASON_NUMBER = "show-season-number"; 7335 alias GST_TAG_SHOW_SEASON_NUMBER = TAG_SHOW_SEASON_NUMBER; 7336 7337 /** 7338 * Name of the show, used for sorting (string) 7339 */ 7340 enum TAG_SHOW_SORTNAME = "show-sortname"; 7341 alias GST_TAG_SHOW_SORTNAME = TAG_SHOW_SORTNAME; 7342 7343 /** 7344 * codec/format the subtitle data is stored in (string) 7345 */ 7346 enum TAG_SUBTITLE_CODEC = "subtitle-codec"; 7347 alias GST_TAG_SUBTITLE_CODEC = TAG_SUBTITLE_CODEC; 7348 7349 /** 7350 * commonly used title (string) 7351 * 7352 * The title as it should be displayed, e.g. 'The Doll House' 7353 */ 7354 enum TAG_TITLE = "title"; 7355 alias GST_TAG_TITLE = TAG_TITLE; 7356 7357 /** 7358 * commonly used title, as used for sorting (string) 7359 * 7360 * The title as it should be sorted, e.g. 'Doll House, The' 7361 */ 7362 enum TAG_TITLE_SORTNAME = "title-sortname"; 7363 alias GST_TAG_TITLE_SORTNAME = TAG_TITLE_SORTNAME; 7364 7365 /** 7366 * count of tracks inside collection this track belongs to (unsigned integer) 7367 */ 7368 enum TAG_TRACK_COUNT = "track-count"; 7369 alias GST_TAG_TRACK_COUNT = TAG_TRACK_COUNT; 7370 7371 /** 7372 * track gain in db (double) 7373 */ 7374 enum TAG_TRACK_GAIN = "replaygain-track-gain"; 7375 alias GST_TAG_TRACK_GAIN = TAG_TRACK_GAIN; 7376 7377 /** 7378 * track number inside a collection (unsigned integer) 7379 */ 7380 enum TAG_TRACK_NUMBER = "track-number"; 7381 alias GST_TAG_TRACK_NUMBER = TAG_TRACK_NUMBER; 7382 7383 /** 7384 * peak of the track (double) 7385 */ 7386 enum TAG_TRACK_PEAK = "replaygain-track-peak"; 7387 alias GST_TAG_TRACK_PEAK = TAG_TRACK_PEAK; 7388 7389 /** 7390 * Rating attributed by a person (likely the application user). 7391 * The higher the value, the more the user likes this media 7392 * (unsigned int from 0 to 100) 7393 */ 7394 enum TAG_USER_RATING = "user-rating"; 7395 alias GST_TAG_USER_RATING = TAG_USER_RATING; 7396 7397 /** 7398 * version of this data (string) 7399 */ 7400 enum TAG_VERSION = "version"; 7401 alias GST_TAG_VERSION = TAG_VERSION; 7402 7403 /** 7404 * codec the video data is stored in (string) 7405 */ 7406 enum TAG_VIDEO_CODEC = "video-codec"; 7407 alias GST_TAG_VIDEO_CODEC = TAG_VIDEO_CODEC; 7408 7409 /** 7410 * A string that can be used in printf-like format strings to display a 7411 * #GstClockTime value in h:m:s format. Use GST_TIME_ARGS() to construct 7412 * the matching arguments. 7413 * 7414 * Example: 7415 * |[<!-- language="C" --> 7416 * printf("%" GST_TIME_FORMAT "\n", GST_TIME_ARGS(ts)); 7417 * ]| 7418 */ 7419 enum TIME_FORMAT = "u:%02u:%02u.%09u"; 7420 alias GST_TIME_FORMAT = TIME_FORMAT; 7421 7422 /** 7423 * Special value for the repeat_count set in gst_toc_entry_set_loop() or 7424 * returned by gst_toc_entry_set_loop() to indicate infinite looping. 7425 */ 7426 enum TOC_REPEAT_COUNT_INFINITE = -1; 7427 alias GST_TOC_REPEAT_COUNT_INFINITE = TOC_REPEAT_COUNT_INFINITE; 7428 7429 /** 7430 * Value for #GstUri<!-- -->.port to indicate no port number. 7431 */ 7432 enum URI_NO_PORT = 0; 7433 alias GST_URI_NO_PORT = URI_NO_PORT; 7434 7435 /** 7436 * Constant that defines one GStreamer microsecond. 7437 */ 7438 enum USECOND = 1000UL; 7439 alias GST_USECOND = USECOND; 7440 7441 /** 7442 * Indicates that the first value provided to a comparison function 7443 * (gst_value_compare()) is equal to the second one. 7444 */ 7445 enum VALUE_EQUAL = 0; 7446 alias GST_VALUE_EQUAL = VALUE_EQUAL; 7447 7448 /** 7449 * Indicates that the first value provided to a comparison function 7450 * (gst_value_compare()) is greater than the second one. 7451 */ 7452 enum VALUE_GREATER_THAN = 1; 7453 alias GST_VALUE_GREATER_THAN = VALUE_GREATER_THAN; 7454 7455 /** 7456 * Indicates that the first value provided to a comparison function 7457 * (gst_value_compare()) is lesser than the second one. 7458 */ 7459 enum VALUE_LESS_THAN = -1; 7460 alias GST_VALUE_LESS_THAN = VALUE_LESS_THAN; 7461 7462 /** 7463 * Indicates that the comparison function (gst_value_compare()) can not 7464 * determine a order for the two provided values. 7465 */ 7466 enum VALUE_UNORDERED = 2; 7467 alias GST_VALUE_UNORDERED = VALUE_UNORDERED; 7468 7469 /** 7470 * The major version of GStreamer at compile time: 7471 */ 7472 enum VERSION_MAJOR = 1; 7473 alias GST_VERSION_MAJOR = VERSION_MAJOR; 7474 7475 /** 7476 * The micro version of GStreamer at compile time: 7477 */ 7478 enum VERSION_MICRO = 3; 7479 alias GST_VERSION_MICRO = VERSION_MICRO; 7480 7481 /** 7482 * The minor version of GStreamer at compile time: 7483 */ 7484 enum VERSION_MINOR = 12; 7485 alias GST_VERSION_MINOR = VERSION_MINOR; 7486 7487 /** 7488 * The nano version of GStreamer at compile time: 7489 * Actual releases have 0, GIT versions have 1, prerelease versions have 2-... 7490 */ 7491 enum VERSION_NANO = 0; 7492 alias GST_VERSION_NANO = VERSION_NANO;