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 gstreamerc.gstreamertypes; 26 27 public import gtkc.glibtypes; 28 public import gtkc.gobjecttypes; 29 30 enum GST_CLOCK_TIME_NONE = 18446744073709551615UL; 31 32 /** 33 * A datatype to hold the handle to an outstanding sync or async clock callback. 34 */ 35 public alias void* GstClockID; 36 37 /** 38 * A datatype to hold a time, measured in nanoseconds. 39 */ 40 public alias ulong GstClockTime; 41 42 /** 43 * A datatype to hold a time difference, measured in nanoseconds. 44 */ 45 public alias long GstClockTimeDiff; 46 47 public alias ulong GstElementFactoryListType; 48 49 /** 50 * Flags for allocators. 51 */ 52 public enum GstAllocatorFlags 53 { 54 /** 55 * The allocator has a custom alloc function. 56 */ 57 CUSTOM_ALLOC = 16, 58 /** 59 * first flag that can be used for custom purposes 60 */ 61 LAST = 1048576, 62 } 63 alias GstAllocatorFlags AllocatorFlags; 64 65 /** 66 * GstBinFlags are a set of flags specific to bins. Most are set/used 67 * internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro, 68 * and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET (). 69 */ 70 public enum GstBinFlags 71 { 72 /** 73 * don't resync a state change when elements are 74 * added or linked in the bin (Since 1.0.5) 75 */ 76 NO_RESYNC = 16384, 77 /** 78 * the last enum in the series of flags for bins. 79 * Derived classes can use this as first value in a list of flags. 80 */ 81 LAST = 524288, 82 } 83 alias GstBinFlags BinFlags; 84 85 /** 86 * A set of flags that can be provided to the gst_buffer_copy_into() 87 * function to specify which items should be copied. 88 */ 89 public enum GstBufferCopyFlags 90 { 91 /** 92 * copy nothing 93 */ 94 NONE = 0, 95 /** 96 * flag indicating that buffer flags should be copied 97 */ 98 FLAGS = 1, 99 /** 100 * flag indicating that buffer pts, dts, 101 * duration, offset and offset_end should be copied 102 */ 103 TIMESTAMPS = 2, 104 /** 105 * flag indicating that buffer meta should be 106 * copied 107 */ 108 META = 4, 109 /** 110 * flag indicating that buffer memory should be reffed 111 * and appended to already existing memory. Unless the memory is marked as 112 * NO_SHARE, no actual copy of the memory is made but it is simply reffed. 113 * Add @GST_BUFFER_COPY_DEEP to force a real copy. 114 */ 115 MEMORY = 8, 116 /** 117 * flag indicating that buffer memory should be 118 * merged 119 */ 120 MERGE = 16, 121 /** 122 * flag indicating that memory should always be 123 * copied instead of reffed (Since 1.2) 124 */ 125 DEEP = 32, 126 } 127 alias GstBufferCopyFlags BufferCopyFlags; 128 129 /** 130 * A set of buffer flags used to describe properties of a #GstBuffer. 131 */ 132 public enum GstBufferFlags 133 { 134 /** 135 * the buffer is live data and should be discarded in 136 * the PAUSED state. 137 */ 138 LIVE = 16, 139 /** 140 * the buffer contains data that should be dropped 141 * because it will be clipped against the segment 142 * boundaries or because it does not contain data 143 * that should be shown to the user. 144 */ 145 DECODE_ONLY = 32, 146 /** 147 * the buffer marks a data discontinuity in the stream. 148 * This typically occurs after a seek or a dropped buffer 149 * from a live or network source. 150 */ 151 DISCONT = 64, 152 /** 153 * the buffer timestamps might have a discontinuity 154 * and this buffer is a good point to resynchronize. 155 */ 156 RESYNC = 128, 157 /** 158 * the buffer data is corrupted. 159 */ 160 CORRUPTED = 256, 161 /** 162 * the buffer contains a media specific marker. for 163 * video this is typically the end of a frame boundary, for audio 164 * this is usually the start of a talkspurt. 165 */ 166 MARKER = 512, 167 /** 168 * the buffer contains header information that is 169 * needed to decode the following data. 170 */ 171 HEADER = 1024, 172 /** 173 * the buffer has been created to fill a gap in the 174 * stream and contains media neutral data (elements can 175 * switch to optimized code path that ignores the buffer 176 * content). 177 */ 178 GAP = 2048, 179 /** 180 * the buffer can be dropped without breaking the 181 * stream, for example to reduce bandwidth. 182 */ 183 DROPPABLE = 4096, 184 /** 185 * this unit cannot be decoded independently. 186 */ 187 DELTA_UNIT = 8192, 188 /** 189 * this flag is set when memory of the buffer 190 * is added/removed 191 */ 192 TAG_MEMORY = 16384, 193 /** 194 * additional media specific flags can be added starting from 195 * this flag. 196 */ 197 LAST = 1048576, 198 } 199 alias GstBufferFlags BufferFlags; 200 201 /** 202 * Additional flags to control the allocation of a buffer 203 */ 204 public enum GstBufferPoolAcquireFlags 205 { 206 /** 207 * no flags 208 */ 209 NONE = 0, 210 /** 211 * buffer is keyframe 212 */ 213 KEY_UNIT = 1, 214 /** 215 * when the bufferpool is empty, acquire_buffer 216 * will by default block until a buffer is released into the pool again. Setting 217 * this flag makes acquire_buffer return #GST_FLOW_EOS instead of blocking. 218 */ 219 DONTWAIT = 2, 220 /** 221 * buffer is discont 222 */ 223 DISCONT = 4, 224 /** 225 * last flag, subclasses can use private flags 226 * starting from this value. 227 */ 228 LAST = 65536, 229 } 230 alias GstBufferPoolAcquireFlags BufferPoolAcquireFlags; 231 232 /** 233 * The different types of buffering methods. 234 */ 235 public enum GstBufferingMode 236 { 237 /** 238 * a small amount of data is buffered 239 */ 240 STREAM = 0, 241 /** 242 * the stream is being downloaded 243 */ 244 DOWNLOAD = 1, 245 /** 246 * the stream is being downloaded in a ringbuffer 247 */ 248 TIMESHIFT = 2, 249 /** 250 * the stream is a live stream 251 */ 252 LIVE = 3, 253 } 254 alias GstBufferingMode BufferingMode; 255 256 /** 257 * The standard flags that a bus may have. 258 */ 259 public enum GstBusFlags 260 { 261 /** 262 * The bus is currently dropping all messages 263 */ 264 FLUSHING = 16, 265 /** 266 * offset to define more flags 267 */ 268 FLAG_LAST = 32, 269 } 270 alias GstBusFlags BusFlags; 271 272 /** 273 * The result values for a GstBusSyncHandler. 274 */ 275 public enum GstBusSyncReply 276 { 277 /** 278 * drop the message 279 */ 280 DROP = 0, 281 /** 282 * pass the message to the async queue 283 */ 284 PASS = 1, 285 /** 286 * pass message to async queue, continue if message is handled 287 */ 288 ASYNC = 2, 289 } 290 alias GstBusSyncReply BusSyncReply; 291 292 /** 293 * Extra flags for a caps. 294 */ 295 public enum GstCapsFlags 296 { 297 /** 298 * Caps has no specific content, but can contain 299 * anything. 300 */ 301 ANY = 16, 302 } 303 alias GstCapsFlags CapsFlags; 304 305 /** 306 * Modes of caps intersection 307 * 308 * @GST_CAPS_INTERSECT_ZIG_ZAG tries to preserve overall order of both caps 309 * by iterating on the caps' structures as the following matrix shows: 310 * |[ 311 * caps1 312 * +------------- 313 * | 1 2 4 7 314 * caps2 | 3 5 8 10 315 * | 6 9 11 12 316 * ]| 317 * Used when there is no explicit precedence of one caps over the other. e.g. 318 * tee's sink pad getcaps function, it will probe its src pad peers' for their 319 * caps and intersect them with this mode. 320 * 321 * @GST_CAPS_INTERSECT_FIRST is useful when an element wants to preserve 322 * another element's caps priority order when intersecting with its own caps. 323 * Example: If caps1 is [A, B, C] and caps2 is [E, B, D, A], the result 324 * would be [A, B], maintaining the first caps priority on the intersection. 325 */ 326 public enum GstCapsIntersectMode 327 { 328 /** 329 * Zig-zags over both caps. 330 */ 331 ZIG_ZAG = 0, 332 /** 333 * Keeps the first caps order. 334 */ 335 FIRST = 1, 336 } 337 alias GstCapsIntersectMode CapsIntersectMode; 338 339 /** 340 * The type of the clock entry 341 */ 342 public enum GstClockEntryType 343 { 344 /** 345 * a single shot timeout 346 */ 347 SINGLE = 0, 348 /** 349 * a periodic timeout request 350 */ 351 PERIODIC = 1, 352 } 353 alias GstClockEntryType ClockEntryType; 354 355 /** 356 * The capabilities of this clock 357 */ 358 public enum GstClockFlags 359 { 360 /** 361 * clock can do a single sync timeout request 362 */ 363 CAN_DO_SINGLE_SYNC = 16, 364 /** 365 * clock can do a single async timeout request 366 */ 367 CAN_DO_SINGLE_ASYNC = 32, 368 /** 369 * clock can do sync periodic timeout requests 370 */ 371 CAN_DO_PERIODIC_SYNC = 64, 372 /** 373 * clock can do async periodic timeout callbacks 374 */ 375 CAN_DO_PERIODIC_ASYNC = 128, 376 /** 377 * clock's resolution can be changed 378 */ 379 CAN_SET_RESOLUTION = 256, 380 /** 381 * clock can be slaved to a master clock 382 */ 383 CAN_SET_MASTER = 512, 384 /** 385 * subclasses can add additional flags starting from this flag 386 */ 387 LAST = 4096, 388 } 389 alias GstClockFlags ClockFlags; 390 391 /** 392 * The return value of a clock operation. 393 */ 394 public enum GstClockReturn 395 { 396 /** 397 * The operation succeeded. 398 */ 399 OK = 0, 400 /** 401 * The operation was scheduled too late. 402 */ 403 EARLY = 1, 404 /** 405 * The clockID was unscheduled 406 */ 407 UNSCHEDULED = 2, 408 /** 409 * The ClockID is busy 410 */ 411 BUSY = 3, 412 /** 413 * A bad time was provided to a function. 414 */ 415 BADTIME = 4, 416 /** 417 * An error occurred 418 */ 419 ERROR = 5, 420 /** 421 * Operation is not supported 422 */ 423 UNSUPPORTED = 6, 424 /** 425 * The ClockID is done waiting 426 */ 427 DONE = 7, 428 } 429 alias GstClockReturn ClockReturn; 430 431 /** 432 * The different kind of clocks. 433 */ 434 public enum GstClockType 435 { 436 /** 437 * time since Epoch 438 */ 439 REALTIME = 0, 440 /** 441 * monotonic time since some unspecified starting 442 * point 443 */ 444 MONOTONIC = 1, 445 /** 446 * some other time source is used (Since: 1.0.5) 447 */ 448 OTHER = 2, 449 } 450 alias GstClockType ClockType; 451 452 /** 453 * Core errors are errors inside the core GStreamer library. 454 */ 455 public enum GstCoreError 456 { 457 /** 458 * a general error which doesn't fit in any other 459 * category. Make sure you add a custom message to the error call. 460 */ 461 FAILED = 1, 462 /** 463 * do not use this except as a placeholder for 464 * deciding where to go while developing code. 465 */ 466 TOO_LAZY = 2, 467 /** 468 * use this when you do not want to implement 469 * this functionality yet. 470 */ 471 NOT_IMPLEMENTED = 3, 472 /** 473 * used for state change errors. 474 */ 475 STATE_CHANGE = 4, 476 /** 477 * used for pad-related errors. 478 */ 479 PAD = 5, 480 /** 481 * used for thread-related errors. 482 */ 483 THREAD = 6, 484 /** 485 * used for negotiation-related errors. 486 */ 487 NEGOTIATION = 7, 488 /** 489 * used for event-related errors. 490 */ 491 EVENT = 8, 492 /** 493 * used for seek-related errors. 494 */ 495 SEEK = 9, 496 /** 497 * used for caps-related errors. 498 */ 499 CAPS = 10, 500 /** 501 * used for negotiation-related errors. 502 */ 503 TAG = 11, 504 /** 505 * used if a plugin is missing. 506 */ 507 MISSING_PLUGIN = 12, 508 /** 509 * used for clock related errors. 510 */ 511 CLOCK = 13, 512 /** 513 * used if functionality has been disabled at 514 * compile time. 515 */ 516 DISABLED = 14, 517 /** 518 * the number of core error types. 519 */ 520 NUM_ERRORS = 15, 521 } 522 alias GstCoreError CoreError; 523 524 /** 525 * These are some terminal style flags you can use when creating your 526 * debugging categories to make them stand out in debugging output. 527 */ 528 public enum GstDebugColorFlags 529 { 530 /** 531 * Use black as foreground color. 532 */ 533 FG_BLACK = 0, 534 /** 535 * Use red as foreground color. 536 */ 537 FG_RED = 1, 538 /** 539 * Use green as foreground color. 540 */ 541 FG_GREEN = 2, 542 /** 543 * Use yellow as foreground color. 544 */ 545 FG_YELLOW = 3, 546 /** 547 * Use blue as foreground color. 548 */ 549 FG_BLUE = 4, 550 /** 551 * Use magenta as foreground color. 552 */ 553 FG_MAGENTA = 5, 554 /** 555 * Use cyan as foreground color. 556 */ 557 FG_CYAN = 6, 558 /** 559 * Use white as foreground color. 560 */ 561 FG_WHITE = 7, 562 /** 563 * Use black as background color. 564 */ 565 BG_BLACK = 0, 566 /** 567 * Use red as background color. 568 */ 569 BG_RED = 16, 570 /** 571 * Use green as background color. 572 */ 573 BG_GREEN = 32, 574 /** 575 * Use yellow as background color. 576 */ 577 BG_YELLOW = 48, 578 /** 579 * Use blue as background color. 580 */ 581 BG_BLUE = 64, 582 /** 583 * Use magenta as background color. 584 */ 585 BG_MAGENTA = 80, 586 /** 587 * Use cyan as background color. 588 */ 589 BG_CYAN = 96, 590 /** 591 * Use white as background color. 592 */ 593 BG_WHITE = 112, 594 /** 595 * Make the output bold. 596 */ 597 BOLD = 256, 598 /** 599 * Underline the output. 600 */ 601 UNDERLINE = 512, 602 } 603 alias GstDebugColorFlags DebugColorFlags; 604 605 public enum GstDebugColorMode 606 { 607 /** 608 * Do not use colors in logs. 609 */ 610 OFF = 0, 611 /** 612 * Paint logs in a platform-specific way. 613 */ 614 ON = 1, 615 /** 616 * Paint logs with UNIX terminal color codes 617 * no matter what platform GStreamer is running on. 618 */ 619 UNIX = 2, 620 } 621 alias GstDebugColorMode DebugColorMode; 622 623 /** 624 * Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE() 625 * and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(). 626 */ 627 public enum GstDebugGraphDetails 628 { 629 /** 630 * show caps-name on edges 631 */ 632 MEDIA_TYPE = 1, 633 /** 634 * show caps-details on edges 635 */ 636 CAPS_DETAILS = 2, 637 /** 638 * show modified parameters on elements 639 */ 640 NON_DEFAULT_PARAMS = 4, 641 /** 642 * show element states 643 */ 644 STATES = 8, 645 /** 646 * show all details 647 */ 648 ALL = 15, 649 } 650 alias GstDebugGraphDetails DebugGraphDetails; 651 652 /** 653 * The level defines the importance of a debugging message. The more important a 654 * message is, the greater the probability that the debugging system outputs it. 655 */ 656 public enum GstDebugLevel 657 { 658 /** 659 * No debugging level specified or desired. Used to deactivate 660 * debugging output. 661 */ 662 NONE = 0, 663 /** 664 * Error messages are to be used only when an error occurred 665 * that stops the application from keeping working correctly. 666 * An examples is gst_element_error, which outputs a message with this priority. 667 * It does not mean that the application is terminating as with g_error. 668 */ 669 ERROR = 1, 670 /** 671 * Warning messages are to inform about abnormal behaviour 672 * that could lead to problems or weird behaviour later on. An example of this 673 * would be clocking issues ("your computer is pretty slow") or broken input 674 * data ("Can't synchronize to stream.") 675 */ 676 WARNING = 2, 677 /** 678 * Fixme messages are messages that indicate that something 679 * in the executed code path is not fully implemented or handled yet. Note 680 * that this does not replace proper error handling in any way, the purpose 681 * of this message is to make it easier to spot incomplete/unfinished pieces 682 * of code when reading the debug log. 683 */ 684 FIXME = 3, 685 /** 686 * Informational messages should be used to keep the developer 687 * updated about what is happening. 688 * Examples where this should be used are when a typefind function has 689 * successfully determined the type of the stream or when an mp3 plugin detects 690 * the format to be used. ("This file has mono sound.") 691 */ 692 INFO = 4, 693 /** 694 * Debugging messages should be used when something common 695 * happens that is not the expected default behavior, or something that's 696 * useful to know but doesn't happen all the time (ie. per loop iteration or 697 * buffer processed or event handled). 698 * An example would be notifications about state changes or receiving/sending 699 * of events. 700 */ 701 DEBUG = 5, 702 /** 703 * Log messages are messages that are very common but might be 704 * useful to know. As a rule of thumb a pipeline that is iterating as expected 705 * should never output anything else but LOG messages. Use this log level to 706 * log recurring information in chain functions and loop functions, for 707 * example. 708 */ 709 LOG = 6, 710 /** 711 * Tracing-related messages. 712 * Examples for this are referencing/dereferencing of objects. 713 */ 714 TRACE = 7, 715 /** 716 * memory dump messages are used to log (small) chunks of 717 * data as memory dumps in the log. They will be displayed as hexdump with 718 * ASCII characters. 719 */ 720 MEMDUMP = 9, 721 /** 722 * The number of defined debugging levels. 723 */ 724 COUNT = 10, 725 } 726 alias GstDebugLevel DebugLevel; 727 728 /** 729 * The standard flags that an element may have. 730 */ 731 public enum GstElementFlags 732 { 733 /** 734 * ignore state changes from parent 735 */ 736 LOCKED_STATE = 16, 737 /** 738 * the element is a sink 739 */ 740 SINK = 32, 741 /** 742 * the element is a source. 743 */ 744 SOURCE = 64, 745 /** 746 * the element can provide a clock 747 */ 748 PROVIDE_CLOCK = 128, 749 /** 750 * the element requires a clock 751 */ 752 REQUIRE_CLOCK = 256, 753 /** 754 * the element can use an index 755 */ 756 INDEXABLE = 512, 757 /** 758 * offset to define more flags 759 */ 760 LAST = 16384, 761 } 762 alias GstElementFlags ElementFlags; 763 764 /** 765 * #GstEventType lists the standard event types that can be sent in a pipeline. 766 * 767 * The custom event types can be used for private messages between elements 768 * that can't be expressed using normal 769 * GStreamer buffer passing semantics. Custom events carry an arbitrary 770 * #GstStructure. 771 * Specific custom events are distinguished by the name of the structure. 772 */ 773 public enum GstEventType 774 { 775 /** 776 * unknown event. 777 */ 778 UNKNOWN = 0, 779 /** 780 * Start a flush operation. This event clears all data 781 * from the pipeline and unblock all streaming threads. 782 */ 783 FLUSH_START = 2563, 784 /** 785 * Stop a flush operation. This event resets the 786 * running-time of the pipeline. 787 */ 788 FLUSH_STOP = 5127, 789 /** 790 * Event to mark the start of a new stream. Sent before any 791 * other serialized event and only sent at the start of a new stream, 792 * not after flushing seeks. 793 */ 794 STREAM_START = 10254, 795 /** 796 * #GstCaps event. Notify the pad of a new media type. 797 */ 798 CAPS = 12814, 799 /** 800 * A new media segment follows in the dataflow. The 801 * segment events contains information for clipping buffers and 802 * converting buffer timestamps to running-time and 803 * stream-time. 804 */ 805 SEGMENT = 17934, 806 /** 807 * A new set of metadata tags has been found in the stream. 808 */ 809 TAG = 20510, 810 /** 811 * Notification of buffering requirements. Currently not 812 * used yet. 813 */ 814 BUFFERSIZE = 23054, 815 /** 816 * An event that sinks turn into a message. Used to 817 * send messages that should be emitted in sync with 818 * rendering. 819 */ 820 SINK_MESSAGE = 25630, 821 /** 822 * End-Of-Stream. No more data is to be expected to follow 823 * without a SEGMENT event. 824 */ 825 EOS = 28174, 826 /** 827 * An event which indicates that a new table of contents (TOC) 828 * was found or updated. 829 */ 830 TOC = 30750, 831 /** 832 * Marks the end of a segment playback. 833 */ 834 SEGMENT_DONE = 38406, 835 /** 836 * Marks a gap in the datastream. 837 */ 838 GAP = 40966, 839 /** 840 * A quality message. Used to indicate to upstream elements 841 * that the downstream elements should adjust their processing 842 * rate. 843 */ 844 QOS = 48641, 845 /** 846 * A request for a new playback position and rate. 847 */ 848 SEEK = 51201, 849 /** 850 * Navigation events are usually used for communicating 851 * user requests, such as mouse or keyboard movements, 852 * to upstream elements. 853 */ 854 NAVIGATION = 53761, 855 /** 856 * Notification of new latency adjustment. Sinks will use 857 * the latency information to adjust their synchronisation. 858 */ 859 LATENCY = 56321, 860 /** 861 * A request for stepping through the media. Sinks will usually 862 * execute the step operation. 863 */ 864 STEP = 58881, 865 /** 866 * A request for upstream renegotiating caps and reconfiguring. 867 */ 868 RECONFIGURE = 61441, 869 /** 870 * A request for a new playback position based on TOC 871 * entry's UID. 872 */ 873 TOC_SELECT = 64001, 874 /** 875 * Upstream custom event 876 */ 877 CUSTOM_UPSTREAM = 69121, 878 /** 879 * Downstream custom event that travels in the 880 * data flow. 881 */ 882 CUSTOM_DOWNSTREAM = 71686, 883 /** 884 * Custom out-of-band downstream event. 885 */ 886 CUSTOM_DOWNSTREAM_OOB = 74242, 887 /** 888 * Custom sticky downstream event. 889 */ 890 CUSTOM_DOWNSTREAM_STICKY = 76830, 891 /** 892 * Custom upstream or downstream event. 893 * In-band when travelling downstream. 894 */ 895 CUSTOM_BOTH = 79367, 896 /** 897 * Custom upstream or downstream out-of-band event. 898 */ 899 CUSTOM_BOTH_OOB = 81923, 900 } 901 alias GstEventType EventType; 902 903 /** 904 * #GstEventTypeFlags indicate the aspects of the different #GstEventType 905 * values. You can get the type flags of a #GstEventType with the 906 * gst_event_type_get_flags() function. 907 */ 908 public enum GstEventTypeFlags 909 { 910 /** 911 * Set if the event can travel upstream. 912 */ 913 UPSTREAM = 1, 914 /** 915 * Set if the event can travel downstream. 916 */ 917 DOWNSTREAM = 2, 918 /** 919 * Set if the event should be serialized with data 920 * flow. 921 */ 922 SERIALIZED = 4, 923 /** 924 * Set if the event is sticky on the pads. 925 */ 926 STICKY = 8, 927 /** 928 * Multiple sticky events can be on a pad, each 929 * identified by the event name. 930 */ 931 STICKY_MULTI = 16, 932 } 933 alias GstEventTypeFlags EventTypeFlags; 934 935 /** 936 * The result of passing data to a pad. 937 * 938 * Note that the custom return values should not be exposed outside of the 939 * element scope. 940 */ 941 public enum GstFlowReturn 942 { 943 /** 944 * Pre-defined custom success code. 945 */ 946 CUSTOM_SUCCESS_2 = 102, 947 /** 948 * Pre-defined custom success code (define your 949 * custom success code to this to avoid compiler 950 * warnings). 951 */ 952 CUSTOM_SUCCESS_1 = 101, 953 /** 954 * Elements can use values starting from 955 * this (and higher) to define custom success 956 * codes. 957 */ 958 CUSTOM_SUCCESS = 100, 959 /** 960 * Data passing was ok. 961 */ 962 OK = 0, 963 /** 964 * Pad is not linked. 965 */ 966 NOT_LINKED = -1, 967 /** 968 * Pad is flushing. 969 */ 970 FLUSHING = -2, 971 /** 972 * Pad is EOS. 973 */ 974 EOS = -3, 975 /** 976 * Pad is not negotiated. 977 */ 978 NOT_NEGOTIATED = -4, 979 /** 980 * Some (fatal) error occurred. Element generating 981 * this error should post an error message with more 982 * details. 983 */ 984 ERROR = -5, 985 /** 986 * This operation is not supported. 987 */ 988 NOT_SUPPORTED = -6, 989 /** 990 * Elements can use values starting from 991 * this (and lower) to define custom error codes. 992 */ 993 CUSTOM_ERROR = -100, 994 /** 995 * Pre-defined custom error code (define your 996 * custom error code to this to avoid compiler 997 * warnings). 998 */ 999 CUSTOM_ERROR_1 = -101, 1000 /** 1001 * Pre-defined custom error code. 1002 */ 1003 CUSTOM_ERROR_2 = -102, 1004 } 1005 alias GstFlowReturn FlowReturn; 1006 1007 /** 1008 * Standard predefined formats 1009 */ 1010 public enum GstFormat 1011 { 1012 /** 1013 * undefined format 1014 */ 1015 UNDEFINED = 0, 1016 /** 1017 * the default format of the pad/element. This can be 1018 * samples for raw audio, frames/fields for raw video (some, but not all, 1019 * elements support this; use @GST_FORMAT_TIME if you don't have a good 1020 * reason to query for samples/frames) 1021 */ 1022 DEFAULT = 1, 1023 /** 1024 * bytes 1025 */ 1026 BYTES = 2, 1027 /** 1028 * time in nanoseconds 1029 */ 1030 TIME = 3, 1031 /** 1032 * buffers (few, if any, elements implement this as of 1033 * May 2009) 1034 */ 1035 BUFFERS = 4, 1036 /** 1037 * percentage of stream (few, if any, elements implement 1038 * this as of May 2009) 1039 */ 1040 PERCENT = 5, 1041 } 1042 alias GstFormat Format; 1043 1044 /** 1045 * The result of a #GstIteratorItemFunction. 1046 */ 1047 public enum GstIteratorItem 1048 { 1049 /** 1050 * Skip this item 1051 */ 1052 SKIP = 0, 1053 /** 1054 * Return item 1055 */ 1056 PASS = 1, 1057 /** 1058 * Stop after this item. 1059 */ 1060 END = 2, 1061 } 1062 alias GstIteratorItem IteratorItem; 1063 1064 /** 1065 * The result of gst_iterator_next(). 1066 */ 1067 public enum GstIteratorResult 1068 { 1069 /** 1070 * No more items in the iterator 1071 */ 1072 DONE = 0, 1073 /** 1074 * An item was retrieved 1075 */ 1076 OK = 1, 1077 /** 1078 * Datastructure changed while iterating 1079 */ 1080 RESYNC = 2, 1081 /** 1082 * An error happened 1083 */ 1084 ERROR = 3, 1085 } 1086 alias GstIteratorResult IteratorResult; 1087 1088 /** 1089 * Library errors are for errors from the library being used by elements 1090 * (initializing, finalizing, settings, ...) 1091 */ 1092 public enum GstLibraryError 1093 { 1094 /** 1095 * a general error which doesn't fit in any other 1096 * category. Make sure you add a custom message to the error call. 1097 */ 1098 FAILED = 1, 1099 /** 1100 * do not use this except as a placeholder for 1101 * deciding where to go while developing code. 1102 */ 1103 TOO_LAZY = 2, 1104 /** 1105 * used when the library could not be opened. 1106 */ 1107 INIT = 3, 1108 /** 1109 * used when the library could not be closed. 1110 */ 1111 SHUTDOWN = 4, 1112 /** 1113 * used when the library doesn't accept settings. 1114 */ 1115 SETTINGS = 5, 1116 /** 1117 * used when the library generated an encoding error. 1118 */ 1119 ENCODE = 6, 1120 /** 1121 * the number of library error types. 1122 */ 1123 NUM_ERRORS = 7, 1124 } 1125 alias GstLibraryError LibraryError; 1126 1127 /** 1128 * Flags used when locking miniobjects 1129 */ 1130 public enum GstLockFlags 1131 { 1132 /** 1133 * lock for read access 1134 */ 1135 READ = 1, 1136 /** 1137 * lock for write access 1138 */ 1139 WRITE = 2, 1140 /** 1141 * lock for exclusive access 1142 */ 1143 EXCLUSIVE = 4, 1144 /** 1145 * first flag that can be used for custom purposes 1146 */ 1147 LAST = 256, 1148 } 1149 alias GstLockFlags LockFlags; 1150 1151 /** 1152 * Flags used when mapping memory 1153 */ 1154 public enum GstMapFlags 1155 { 1156 /** 1157 * map for read access 1158 */ 1159 READ = 1, 1160 /** 1161 * map for write access 1162 */ 1163 WRITE = 2, 1164 /** 1165 * first flag that can be used for custom purposes 1166 */ 1167 FLAG_LAST = 65536, 1168 } 1169 alias GstMapFlags MapFlags; 1170 1171 /** 1172 * Flags for wrapped memory. 1173 */ 1174 public enum GstMemoryFlags 1175 { 1176 /** 1177 * memory is readonly. It is not allowed to map the 1178 * memory with #GST_MAP_WRITE. 1179 */ 1180 READONLY = 2, 1181 /** 1182 * memory must not be shared. Copies will have to be 1183 * made when this memory needs to be shared between buffers. 1184 */ 1185 NO_SHARE = 16, 1186 /** 1187 * the memory prefix is filled with 0 bytes 1188 */ 1189 ZERO_PREFIXED = 32, 1190 /** 1191 * the memory padding is filled with 0 bytes 1192 */ 1193 ZERO_PADDED = 64, 1194 /** 1195 * the memory is physically contiguous. Since 1.2 1196 */ 1197 PHYSICALLY_CONTIGUOUS = 128, 1198 /** 1199 * the memory can't be mapped via gst_memory_map() without any preconditions. Since 1.2 1200 */ 1201 NOT_MAPPABLE = 256, 1202 /** 1203 * first flag that can be used for custom purposes 1204 */ 1205 LAST = 1048576, 1206 } 1207 alias GstMemoryFlags MemoryFlags; 1208 1209 /** 1210 * The different message types that are available. 1211 */ 1212 public enum GstMessageType : uint 1213 { 1214 /** 1215 * an undefined message 1216 */ 1217 UNKNOWN = 0, 1218 /** 1219 * end-of-stream reached in a pipeline. The application will 1220 * only receive this message in the PLAYING state and every time it sets a 1221 * pipeline to PLAYING that is in the EOS state. The application can perform a 1222 * flushing seek in the pipeline, which will undo the EOS state again. 1223 */ 1224 EOS = 1, 1225 /** 1226 * an error occurred. When the application receives an error 1227 * message it should stop playback of the pipeline and not assume that more 1228 * data will be played. 1229 */ 1230 ERROR = 2, 1231 /** 1232 * a warning occurred. 1233 */ 1234 WARNING = 4, 1235 /** 1236 * an info message occurred 1237 */ 1238 INFO = 8, 1239 /** 1240 * a tag was found. 1241 */ 1242 TAG = 16, 1243 /** 1244 * the pipeline is buffering. When the application 1245 * receives a buffering message in the PLAYING state for a non-live pipeline it 1246 * must PAUSE the pipeline until the buffering completes, when the percentage 1247 * field in the message is 100%. For live pipelines, no action must be 1248 * performed and the buffering percentage can be used to inform the user about 1249 * the progress. 1250 */ 1251 BUFFERING = 32, 1252 /** 1253 * a state change happened 1254 */ 1255 STATE_CHANGED = 64, 1256 /** 1257 * an element changed state in a streaming thread. 1258 * This message is deprecated. 1259 */ 1260 STATE_DIRTY = 128, 1261 /** 1262 * a stepping operation finished. 1263 */ 1264 STEP_DONE = 256, 1265 /** 1266 * an element notifies its capability of providing 1267 * a clock. This message is used internally and 1268 * never forwarded to the application. 1269 */ 1270 CLOCK_PROVIDE = 512, 1271 /** 1272 * The current clock as selected by the pipeline became 1273 * unusable. The pipeline will select a new clock on 1274 * the next PLAYING state change. The application 1275 * should set the pipeline to PAUSED and back to 1276 * PLAYING when this message is received. 1277 */ 1278 CLOCK_LOST = 1024, 1279 /** 1280 * a new clock was selected in the pipeline. 1281 */ 1282 NEW_CLOCK = 2048, 1283 /** 1284 * the structure of the pipeline changed. This 1285 * message is used internally and never forwarded to the application. 1286 */ 1287 STRUCTURE_CHANGE = 4096, 1288 /** 1289 * status about a stream, emitted when it starts, 1290 * stops, errors, etc.. 1291 */ 1292 STREAM_STATUS = 8192, 1293 /** 1294 * message posted by the application, possibly 1295 * via an application-specific element. 1296 */ 1297 APPLICATION = 16384, 1298 /** 1299 * element-specific message, see the specific element's 1300 * documentation 1301 */ 1302 ELEMENT = 32768, 1303 /** 1304 * pipeline started playback of a segment. This 1305 * message is used internally and never forwarded to the application. 1306 */ 1307 SEGMENT_START = 65536, 1308 /** 1309 * pipeline completed playback of a segment. This 1310 * message is forwarded to the application after all elements that posted 1311 * @GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message. 1312 */ 1313 SEGMENT_DONE = 131072, 1314 /** 1315 * The duration of a pipeline changed. The 1316 * application can get the new duration with a duration query. 1317 */ 1318 DURATION_CHANGED = 262144, 1319 /** 1320 * Posted by elements when their latency changes. The 1321 * application should recalculate and distribute a new latency. 1322 */ 1323 LATENCY = 524288, 1324 /** 1325 * Posted by elements when they start an ASYNC 1326 * #GstStateChange. This message is not forwarded to the application but is used 1327 * internally. 1328 */ 1329 ASYNC_START = 1048576, 1330 /** 1331 * Posted by elements when they complete an ASYNC 1332 * #GstStateChange. The application will only receive this message from the toplevel 1333 * pipeline. 1334 */ 1335 ASYNC_DONE = 2097152, 1336 /** 1337 * Posted by elements when they want the pipeline to 1338 * change state. This message is a suggestion to the application which can 1339 * decide to perform the state change on (part of) the pipeline. 1340 */ 1341 REQUEST_STATE = 4194304, 1342 /** 1343 * A stepping operation was started. 1344 */ 1345 STEP_START = 8388608, 1346 /** 1347 * A buffer was dropped or an element changed its processing 1348 * strategy for Quality of Service reasons. 1349 */ 1350 QOS = 16777216, 1351 /** 1352 * A progress message. 1353 */ 1354 PROGRESS = 33554432, 1355 /** 1356 * A new table of contents (TOC) was found or previously found TOC 1357 * was updated. 1358 */ 1359 TOC = 67108864, 1360 /** 1361 * Message to request resetting the pipeline's 1362 * running time from the pipeline. This is an internal message which 1363 * applications will likely never receive. 1364 */ 1365 RESET_TIME = 134217728, 1366 /** 1367 * Message indicating start of a new stream. Useful 1368 * e.g. when using playbin in gapless playback mode, to get notified when 1369 * the next title actually starts playing (which will be some time after 1370 * the URI for the next title has been set). 1371 */ 1372 STREAM_START = 268435456, 1373 /** 1374 * Message indicating that an element wants a specific context (Since 1.2) 1375 */ 1376 NEED_CONTEXT = 536870912, 1377 /** 1378 * Message indicating that an element created a context (Since 1.2) 1379 */ 1380 HAVE_CONTEXT = 1073741824, 1381 /** 1382 * Message is an extended message type (see below). 1383 * These extended message IDs can't be used directly with mask-based API 1384 * like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still 1385 * filter for GST_MESSAGE_EXTENDED and then check the result for the 1386 * specific type. (Since 1.4) 1387 */ 1388 EXTENDED = 2147483648, 1389 /** 1390 * Message indicating a #GstDevice was added to 1391 * a #GstDeviceProvider (Since 1.4) 1392 */ 1393 DEVICE_ADDED = 2147483649, 1394 /** 1395 * Message indicating a #GstDevice was removed 1396 * from a #GstDeviceProvider (Since 1.4) 1397 */ 1398 DEVICE_REMOVED = 2147483650, 1399 /** 1400 * mask for all of the above messages. 1401 */ 1402 ANY = 4294967295, 1403 } 1404 alias GstMessageType MessageType; 1405 1406 /** 1407 * Extra metadata flags. 1408 */ 1409 public enum GstMetaFlags 1410 { 1411 /** 1412 * no flags 1413 */ 1414 NONE = 0, 1415 /** 1416 * metadata should not be modified 1417 */ 1418 READONLY = 1, 1419 /** 1420 * metadata is managed by a bufferpool 1421 */ 1422 POOLED = 2, 1423 /** 1424 * metadata should not be removed 1425 */ 1426 LOCKED = 4, 1427 /** 1428 * additional flags can be added starting from this flag. 1429 */ 1430 LAST = 65536, 1431 } 1432 alias GstMetaFlags MetaFlags; 1433 1434 /** 1435 * Flags for the mini object 1436 */ 1437 public enum GstMiniObjectFlags 1438 { 1439 /** 1440 * the object can be locked and unlocked with 1441 * gst_mini_object_lock() and gst_mini_object_unlock(). 1442 */ 1443 LOCKABLE = 1, 1444 /** 1445 * the object is permanently locked in 1446 * READONLY mode. Only read locks can be performed on the object. 1447 */ 1448 LOCK_READONLY = 2, 1449 /** 1450 * first flag that can be used by subclasses. 1451 */ 1452 LAST = 16, 1453 } 1454 alias GstMiniObjectFlags MiniObjectFlags; 1455 1456 /** 1457 * The standard flags that an gstobject may have. 1458 */ 1459 public enum GstObjectFlags 1460 { 1461 /** 1462 * subclasses can add additional flags starting from this flag 1463 */ 1464 LAST = 16, 1465 } 1466 alias GstObjectFlags ObjectFlags; 1467 1468 /** 1469 * The direction of a pad. 1470 */ 1471 public enum GstPadDirection 1472 { 1473 /** 1474 * direction is unknown. 1475 */ 1476 UNKNOWN = 0, 1477 /** 1478 * the pad is a source pad. 1479 */ 1480 SRC = 1, 1481 /** 1482 * the pad is a sink pad. 1483 */ 1484 SINK = 2, 1485 } 1486 alias GstPadDirection PadDirection; 1487 1488 /** 1489 * Pad state flags 1490 */ 1491 public enum GstPadFlags 1492 { 1493 /** 1494 * is dataflow on a pad blocked 1495 */ 1496 BLOCKED = 16, 1497 /** 1498 * is pad flushing 1499 */ 1500 FLUSHING = 32, 1501 /** 1502 * is pad in EOS state 1503 */ 1504 EOS = 64, 1505 /** 1506 * is pad currently blocking on a buffer or event 1507 */ 1508 BLOCKING = 128, 1509 /** 1510 * ensure that there is a parent object before calling 1511 * into the pad callbacks. 1512 */ 1513 NEED_PARENT = 256, 1514 /** 1515 * the pad should be reconfigured/renegotiated. 1516 * The flag has to be unset manually after 1517 * reconfiguration happened. 1518 */ 1519 NEED_RECONFIGURE = 512, 1520 /** 1521 * the pad has pending events 1522 */ 1523 PENDING_EVENTS = 1024, 1524 /** 1525 * the pad is using fixed caps. This means that 1526 * once the caps are set on the pad, the default caps query function 1527 * will only return those caps. 1528 */ 1529 FIXED_CAPS = 2048, 1530 /** 1531 * the default event and query handler will forward 1532 * all events and queries to the internally linked pads 1533 * instead of discarding them. 1534 */ 1535 PROXY_CAPS = 4096, 1536 /** 1537 * the default query handler will forward 1538 * allocation queries to the internally linked pads 1539 * instead of discarding them. 1540 */ 1541 PROXY_ALLOCATION = 8192, 1542 /** 1543 * the default query handler will forward 1544 * scheduling queries to the internally linked pads 1545 * instead of discarding them. 1546 */ 1547 PROXY_SCHEDULING = 16384, 1548 /** 1549 * the default accept-caps handler will check 1550 * it the caps intersect the query-caps result instead 1551 * of checking for a subset. This is interesting for 1552 * parsers that can accept incompletely specified caps. 1553 */ 1554 ACCEPT_INTERSECT = 32768, 1555 /** 1556 * offset to define more flags 1557 */ 1558 LAST = 1048576, 1559 } 1560 alias GstPadFlags PadFlags; 1561 1562 /** 1563 * The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS 1564 * and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are 1565 * specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed. 1566 * 1567 * <warning><para> 1568 * Only disable some of the checks if you are 100% certain you know the link 1569 * will not fail because of hierarchy/caps compatibility failures. If uncertain, 1570 * use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods 1571 * for linking the pads. 1572 * </para></warning> 1573 */ 1574 public enum GstPadLinkCheck 1575 { 1576 /** 1577 * Don't check hierarchy or caps compatibility. 1578 */ 1579 NOTHING = 0, 1580 /** 1581 * Check the pads have same parents/grandparents. 1582 * Could be omitted if it is already known that the two elements that own the 1583 * pads are in the same bin. 1584 */ 1585 HIERARCHY = 1, 1586 /** 1587 * Check if the pads are compatible by using 1588 * their template caps. This is much faster than @GST_PAD_LINK_CHECK_CAPS, but 1589 * would be unsafe e.g. if one pad has %GST_CAPS_ANY. 1590 */ 1591 TEMPLATE_CAPS = 2, 1592 /** 1593 * Check if the pads are compatible by comparing the 1594 * caps returned by gst_pad_query_caps(). 1595 */ 1596 CAPS = 4, 1597 /** 1598 * The default checks done when linking 1599 * pads (i.e. the ones used by gst_pad_link()). 1600 */ 1601 DEFAULT = 5, 1602 } 1603 alias GstPadLinkCheck PadLinkCheck; 1604 1605 /** 1606 * Result values from gst_pad_link and friends. 1607 */ 1608 public enum GstPadLinkReturn 1609 { 1610 /** 1611 * link succeeded 1612 */ 1613 OK = 0, 1614 /** 1615 * pads have no common grandparent 1616 */ 1617 WRONG_HIERARCHY = -1, 1618 /** 1619 * pad was already linked 1620 */ 1621 WAS_LINKED = -2, 1622 /** 1623 * pads have wrong direction 1624 */ 1625 WRONG_DIRECTION = -3, 1626 /** 1627 * pads do not have common format 1628 */ 1629 NOFORMAT = -4, 1630 /** 1631 * pads cannot cooperate in scheduling 1632 */ 1633 NOSCHED = -5, 1634 /** 1635 * refused for some reason 1636 */ 1637 REFUSED = -6, 1638 } 1639 alias GstPadLinkReturn PadLinkReturn; 1640 1641 /** 1642 * The status of a GstPad. After activating a pad, which usually happens when the 1643 * parent element goes from READY to PAUSED, the GstPadMode defines if the 1644 * pad operates in push or pull mode. 1645 */ 1646 public enum GstPadMode 1647 { 1648 /** 1649 * Pad will not handle dataflow 1650 */ 1651 NONE = 0, 1652 /** 1653 * Pad handles dataflow in downstream push mode 1654 */ 1655 PUSH = 1, 1656 /** 1657 * Pad handles dataflow in upstream pull mode 1658 */ 1659 PULL = 2, 1660 } 1661 alias GstPadMode PadMode; 1662 1663 /** 1664 * Indicates when this pad will become available. 1665 */ 1666 public enum GstPadPresence 1667 { 1668 /** 1669 * the pad is always available 1670 */ 1671 ALWAYS = 0, 1672 /** 1673 * the pad will become available depending on the media stream 1674 */ 1675 SOMETIMES = 1, 1676 /** 1677 * the pad is only available on request with 1678 * gst_element_request_pad(). 1679 */ 1680 REQUEST = 2, 1681 } 1682 alias GstPadPresence PadPresence; 1683 1684 /** 1685 * Different return values for the #GstPadProbeCallback. 1686 */ 1687 public enum GstPadProbeReturn 1688 { 1689 /** 1690 * drop data in data probes. For push mode this means that 1691 * the data item is not sent downstream. For pull mode, it means that the 1692 * data item is not passed upstream. In both cases, this result code 1693 * means that #GST_FLOW_OK or %TRUE is returned to the caller. 1694 */ 1695 DROP = 0, 1696 /** 1697 * normal probe return value 1698 */ 1699 OK = 1, 1700 /** 1701 * remove probe 1702 */ 1703 REMOVE = 2, 1704 /** 1705 * pass the data item in the block probe and block on 1706 * the next item 1707 */ 1708 PASS = 3, 1709 } 1710 alias GstPadProbeReturn PadProbeReturn; 1711 1712 /** 1713 * The different probing types that can occur. When either one of 1714 * @GST_PAD_PROBE_TYPE_IDLE or @GST_PAD_PROBE_TYPE_BLOCK is used, the probe will be a 1715 * blocking probe. 1716 */ 1717 public enum GstPadProbeType 1718 { 1719 /** 1720 * invalid probe type 1721 */ 1722 INVALID = 0, 1723 /** 1724 * probe idle pads and block 1725 */ 1726 IDLE = 1, 1727 /** 1728 * probe and block pads 1729 */ 1730 BLOCK = 2, 1731 /** 1732 * probe buffers 1733 */ 1734 BUFFER = 16, 1735 /** 1736 * probe buffer lists 1737 */ 1738 BUFFER_LIST = 32, 1739 /** 1740 * probe downstream events 1741 */ 1742 EVENT_DOWNSTREAM = 64, 1743 /** 1744 * probe upstream events 1745 */ 1746 EVENT_UPSTREAM = 128, 1747 /** 1748 * probe flush events. This probe has to be 1749 * explicitly enabled and is not included in the 1750 * @@GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM or 1751 * @@GST_PAD_PROBE_TYPE_EVENT_UPSTREAM probe types. 1752 */ 1753 EVENT_FLUSH = 256, 1754 /** 1755 * probe downstream queries 1756 */ 1757 QUERY_DOWNSTREAM = 512, 1758 /** 1759 * probe upstream queries 1760 */ 1761 QUERY_UPSTREAM = 1024, 1762 /** 1763 * probe push 1764 */ 1765 PUSH = 4096, 1766 /** 1767 * probe pull 1768 */ 1769 PULL = 8192, 1770 /** 1771 * probe and block at the next opportunity, at data flow or when idle 1772 */ 1773 BLOCKING = 3, 1774 /** 1775 * probe downstream data (buffers, buffer lists, and events) 1776 */ 1777 DATA_DOWNSTREAM = 112, 1778 /** 1779 * probe upstream data (events) 1780 */ 1781 DATA_UPSTREAM = 128, 1782 /** 1783 * probe upstream and downstream data (buffers, buffer lists, and events) 1784 */ 1785 DATA_BOTH = 240, 1786 /** 1787 * probe and block downstream data (buffers, buffer lists, and events) 1788 */ 1789 BLOCK_DOWNSTREAM = 114, 1790 /** 1791 * probe and block upstream data (events) 1792 */ 1793 BLOCK_UPSTREAM = 130, 1794 /** 1795 * probe upstream and downstream events 1796 */ 1797 EVENT_BOTH = 192, 1798 /** 1799 * probe upstream and downstream queries 1800 */ 1801 QUERY_BOTH = 1536, 1802 /** 1803 * probe upstream events and queries and downstream buffers, buffer lists, events and queries 1804 */ 1805 ALL_BOTH = 1776, 1806 /** 1807 * probe push and pull 1808 */ 1809 SCHEDULING = 12288, 1810 } 1811 alias GstPadProbeType PadProbeType; 1812 1813 /** 1814 * Flags for the padtemplate 1815 */ 1816 public enum GstPadTemplateFlags 1817 { 1818 /** 1819 * first flag that can be used by subclasses. 1820 */ 1821 LAST = 256, 1822 } 1823 alias GstPadTemplateFlags PadTemplateFlags; 1824 1825 /** 1826 * The different parsing errors that can occur. 1827 */ 1828 public enum GstParseError 1829 { 1830 /** 1831 * A syntax error occurred. 1832 */ 1833 SYNTAX = 0, 1834 /** 1835 * The description contained an unknown element 1836 */ 1837 NO_SUCH_ELEMENT = 1, 1838 /** 1839 * An element did not have a specified property 1840 */ 1841 NO_SUCH_PROPERTY = 2, 1842 /** 1843 * There was an error linking two pads. 1844 */ 1845 LINK = 3, 1846 /** 1847 * There was an error setting a property 1848 */ 1849 COULD_NOT_SET_PROPERTY = 4, 1850 /** 1851 * An empty bin was specified. 1852 */ 1853 EMPTY_BIN = 5, 1854 /** 1855 * An empty description was specified 1856 */ 1857 EMPTY = 6, 1858 } 1859 alias GstParseError ParseError; 1860 1861 /** 1862 * Parsing options. 1863 */ 1864 public enum GstParseFlags 1865 { 1866 /** 1867 * Do not use any special parsing options. 1868 */ 1869 NONE = 0, 1870 /** 1871 * Always return %NULL when an error occurs 1872 * (default behaviour is to return partially constructed bins or elements 1873 * in some cases) 1874 */ 1875 FATAL_ERRORS = 1, 1876 /** 1877 * If a bin only has a single element, 1878 * just return the element. 1879 */ 1880 NO_SINGLE_ELEMENT_BINS = 2, 1881 } 1882 alias GstParseFlags ParseFlags; 1883 1884 /** 1885 * Pipeline flags 1886 */ 1887 public enum GstPipelineFlags 1888 { 1889 /** 1890 * this pipeline works with a fixed clock 1891 */ 1892 FIXED_CLOCK = 524288, 1893 /** 1894 * offset to define more flags 1895 */ 1896 LAST = 8388608, 1897 } 1898 alias GstPipelineFlags PipelineFlags; 1899 1900 /** 1901 * Flags used in connection with gst_plugin_add_dependency(). 1902 */ 1903 public enum GstPluginDependencyFlags 1904 { 1905 /** 1906 * no special flags 1907 */ 1908 NONE = 0, 1909 /** 1910 * recurse into subdirectories 1911 */ 1912 RECURSE = 1, 1913 /** 1914 * use paths 1915 * argument only if none of the environment variables is set 1916 */ 1917 PATHS_ARE_DEFAULT_ONLY = 2, 1918 /** 1919 * interpret 1920 * filename argument as filter suffix and check all matching files in 1921 * the directory 1922 */ 1923 FILE_NAME_IS_SUFFIX = 4, 1924 } 1925 alias GstPluginDependencyFlags PluginDependencyFlags; 1926 1927 /** 1928 * The plugin loading errors 1929 */ 1930 public enum GstPluginError 1931 { 1932 /** 1933 * The plugin could not be loaded 1934 */ 1935 MODULE = 0, 1936 /** 1937 * The plugin has unresolved dependencies 1938 */ 1939 DEPENDENCIES = 1, 1940 /** 1941 * The plugin has already be loaded from a different file 1942 */ 1943 NAME_MISMATCH = 2, 1944 } 1945 alias GstPluginError PluginError; 1946 1947 /** 1948 * The plugin loading state 1949 */ 1950 public enum GstPluginFlags 1951 { 1952 /** 1953 * Temporarily loaded plugins 1954 */ 1955 CACHED = 16, 1956 /** 1957 * The plugin won't be scanned (again) 1958 */ 1959 BLACKLISTED = 32, 1960 } 1961 alias GstPluginFlags PluginFlags; 1962 1963 /** 1964 * The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the 1965 * application of the status of asynchronous tasks. 1966 */ 1967 public enum GstProgressType 1968 { 1969 /** 1970 * A new task started. 1971 */ 1972 START = 0, 1973 /** 1974 * A task completed and a new one continues. 1975 */ 1976 CONTINUE = 1, 1977 /** 1978 * A task completed. 1979 */ 1980 COMPLETE = 2, 1981 /** 1982 * A task was canceled. 1983 */ 1984 CANCELED = 3, 1985 /** 1986 * A task caused an error. An error message is also 1987 * posted on the bus. 1988 */ 1989 ERROR = 4, 1990 } 1991 alias GstProgressType ProgressType; 1992 1993 /** 1994 * The different types of QoS events that can be given to the 1995 * gst_event_new_qos() method. 1996 */ 1997 public enum GstQOSType 1998 { 1999 /** 2000 * The QoS event type that is produced when downstream 2001 * elements are producing data too quickly and the element can't keep up 2002 * processing the data. Upstream should reduce their processing rate. This 2003 * type is also used when buffers arrive early or in time. 2004 */ 2005 OVERFLOW = 0, 2006 /** 2007 * The QoS event type that is produced when downstream 2008 * elements are producing data too slowly and need to speed up their processing 2009 * rate. 2010 */ 2011 UNDERFLOW = 1, 2012 /** 2013 * The QoS event type that is produced when the 2014 * application enabled throttling to limit the datarate. 2015 */ 2016 THROTTLE = 2, 2017 } 2018 alias GstQOSType QOSType; 2019 2020 /** 2021 * Standard predefined Query types 2022 */ 2023 public enum GstQueryType 2024 { 2025 /** 2026 * unknown query type 2027 */ 2028 UNKNOWN = 0, 2029 /** 2030 * current position in stream 2031 */ 2032 POSITION = 2563, 2033 /** 2034 * total duration of the stream 2035 */ 2036 DURATION = 5123, 2037 /** 2038 * latency of stream 2039 */ 2040 LATENCY = 7683, 2041 /** 2042 * current jitter of stream 2043 */ 2044 JITTER = 10243, 2045 /** 2046 * current rate of the stream 2047 */ 2048 RATE = 12803, 2049 /** 2050 * seeking capabilities 2051 */ 2052 SEEKING = 15363, 2053 /** 2054 * segment start/stop positions 2055 */ 2056 SEGMENT = 17923, 2057 /** 2058 * convert values between formats 2059 */ 2060 CONVERT = 20483, 2061 /** 2062 * query supported formats for convert 2063 */ 2064 FORMATS = 23043, 2065 /** 2066 * query available media for efficient seeking. 2067 */ 2068 BUFFERING = 28163, 2069 /** 2070 * a custom application or element defined query. 2071 */ 2072 CUSTOM = 30723, 2073 /** 2074 * query the URI of the source or sink. 2075 */ 2076 URI = 33283, 2077 /** 2078 * the buffer allocation properties 2079 */ 2080 ALLOCATION = 35846, 2081 /** 2082 * the scheduling properties 2083 */ 2084 SCHEDULING = 38401, 2085 /** 2086 * the accept caps query 2087 */ 2088 ACCEPT_CAPS = 40963, 2089 /** 2090 * the caps query 2091 */ 2092 CAPS = 43523, 2093 /** 2094 * wait till all serialized data is consumed downstream 2095 */ 2096 DRAIN = 46086, 2097 /** 2098 * query the pipeline-local context from 2099 * downstream or upstream (since 1.2) 2100 */ 2101 CONTEXT = 48643, 2102 } 2103 alias GstQueryType QueryType; 2104 2105 /** 2106 * #GstQueryTypeFlags indicate the aspects of the different #GstQueryType 2107 * values. You can get the type flags of a #GstQueryType with the 2108 * gst_query_type_get_flags() function. 2109 */ 2110 public enum GstQueryTypeFlags 2111 { 2112 /** 2113 * Set if the query can travel upstream. 2114 */ 2115 UPSTREAM = 1, 2116 /** 2117 * Set if the query can travel downstream. 2118 */ 2119 DOWNSTREAM = 2, 2120 /** 2121 * Set if the query should be serialized with data 2122 * flow. 2123 */ 2124 SERIALIZED = 4, 2125 } 2126 alias GstQueryTypeFlags QueryTypeFlags; 2127 2128 /** 2129 * Element priority ranks. Defines the order in which the autoplugger (or 2130 * similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri()) 2131 * will choose this element over an alternative one with the same function. 2132 * 2133 * These constants serve as a rough guidance for defining the rank of a 2134 * #GstPluginFeature. Any value is valid, including values bigger than 2135 * @GST_RANK_PRIMARY. 2136 */ 2137 public enum GstRank 2138 { 2139 /** 2140 * will be chosen last or not at all 2141 */ 2142 NONE = 0, 2143 /** 2144 * unlikely to be chosen 2145 */ 2146 MARGINAL = 64, 2147 /** 2148 * likely to be chosen 2149 */ 2150 SECONDARY = 128, 2151 /** 2152 * will be chosen first 2153 */ 2154 PRIMARY = 256, 2155 } 2156 alias GstRank Rank; 2157 2158 /** 2159 * Resource errors are for any resource used by an element: 2160 * memory, files, network connections, process space, ... 2161 * They're typically used by source and sink elements. 2162 */ 2163 public enum GstResourceError 2164 { 2165 /** 2166 * a general error which doesn't fit in any other 2167 * category. Make sure you add a custom message to the error call. 2168 */ 2169 FAILED = 1, 2170 /** 2171 * do not use this except as a placeholder for 2172 * deciding where to go while developing code. 2173 */ 2174 TOO_LAZY = 2, 2175 /** 2176 * used when the resource could not be found. 2177 */ 2178 NOT_FOUND = 3, 2179 /** 2180 * used when resource is busy. 2181 */ 2182 BUSY = 4, 2183 /** 2184 * used when resource fails to open for reading. 2185 */ 2186 OPEN_READ = 5, 2187 /** 2188 * used when resource fails to open for writing. 2189 */ 2190 OPEN_WRITE = 6, 2191 /** 2192 * used when resource cannot be opened for 2193 * both reading and writing, or either (but unspecified which). 2194 */ 2195 OPEN_READ_WRITE = 7, 2196 /** 2197 * used when the resource can't be closed. 2198 */ 2199 CLOSE = 8, 2200 /** 2201 * used when the resource can't be read from. 2202 */ 2203 READ = 9, 2204 /** 2205 * used when the resource can't be written to. 2206 */ 2207 WRITE = 10, 2208 /** 2209 * used when a seek on the resource fails. 2210 */ 2211 SEEK = 11, 2212 /** 2213 * used when a synchronize on the resource fails. 2214 */ 2215 SYNC = 12, 2216 /** 2217 * used when settings can't be manipulated on. 2218 */ 2219 SETTINGS = 13, 2220 /** 2221 * used when the resource has no space left. 2222 */ 2223 NO_SPACE_LEFT = 14, 2224 /** 2225 * used when the resource can't be opened 2226 * due to missing authorization. 2227 * Since: 1.2.4 2228 */ 2229 NOT_AUTHORIZED = 15, 2230 /** 2231 * the number of resource error types. 2232 */ 2233 NUM_ERRORS = 16, 2234 } 2235 alias GstResourceError ResourceError; 2236 2237 /** 2238 * The different scheduling flags. 2239 */ 2240 public enum GstSchedulingFlags 2241 { 2242 /** 2243 * if seeking is possible 2244 */ 2245 SEEKABLE = 1, 2246 /** 2247 * if sequential access is recommended 2248 */ 2249 SEQUENTIAL = 2, 2250 /** 2251 * if bandwidth is limited and buffering possible (since 1.2) 2252 */ 2253 BANDWIDTH_LIMITED = 4, 2254 } 2255 alias GstSchedulingFlags SchedulingFlags; 2256 2257 /** 2258 * The different search modes. 2259 */ 2260 public enum GstSearchMode 2261 { 2262 /** 2263 * Only search for exact matches. 2264 */ 2265 EXACT = 0, 2266 /** 2267 * Search for an exact match or the element just before. 2268 */ 2269 BEFORE = 1, 2270 /** 2271 * Search for an exact match or the element just after. 2272 */ 2273 AFTER = 2, 2274 } 2275 alias GstSearchMode SearchMode; 2276 2277 /** 2278 * Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags 2279 * can be used together. 2280 * 2281 * A non flushing seek might take some time to perform as the currently 2282 * playing data in the pipeline will not be cleared. 2283 * 2284 * An accurate seek might be slower for formats that don't have any indexes 2285 * or timestamp markers in the stream. Specifying this flag might require a 2286 * complete scan of the file in those cases. 2287 * 2288 * When performing a segment seek: after the playback of the segment completes, 2289 * no EOS will be emitted by the element that performed the seek, but a 2290 * #GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element. 2291 * When this message is posted, it is possible to send a new seek event to 2292 * continue playback. With this seek method it is possible to perform seamless 2293 * looping or simple linear editing. 2294 * 2295 * When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode 2296 * playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders 2297 * and demuxers to adjust the playback rate by skipping frames. This can improve 2298 * performance and decrease CPU usage because not all frames need to be decoded. 2299 * 2300 * The @GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous 2301 * relevant location, and the @GST_SEEK_FLAG_SNAP_AFTER flag can be used to 2302 * select the next relevant location. If KEY_UNIT is specified, the relevant 2303 * location is a keyframe. If both flags are specified, the nearest of these 2304 * locations will be selected. If none are specified, the implementation is 2305 * free to select whichever it wants. 2306 * The before and after here are in running time, so when playing backwards, 2307 * the next location refers to the one that will played in next, and not the 2308 * one that is located after in the actual source stream. 2309 * 2310 * Also see part-seeking.txt in the GStreamer design documentation for more 2311 * details on the meaning of these flags and the behaviour expected of 2312 * elements that handle them. 2313 */ 2314 public enum GstSeekFlags 2315 { 2316 /** 2317 * no flag 2318 */ 2319 NONE = 0, 2320 /** 2321 * flush pipeline 2322 */ 2323 FLUSH = 1, 2324 /** 2325 * accurate position is requested, this might 2326 * be considerably slower for some formats. 2327 */ 2328 ACCURATE = 2, 2329 /** 2330 * seek to the nearest keyframe. This might be 2331 * faster but less accurate. 2332 */ 2333 KEY_UNIT = 4, 2334 /** 2335 * perform a segment seek. 2336 */ 2337 SEGMENT = 8, 2338 /** 2339 * when doing fast forward or fast reverse playback, allow 2340 * elements to skip frames instead of generating all 2341 * frames. 2342 */ 2343 SKIP = 16, 2344 /** 2345 * go to a location before the requested position, 2346 * if KEY_UNIT this means the keyframe at or before the 2347 * requested position the one at or before the seek target. 2348 */ 2349 SNAP_BEFORE = 32, 2350 /** 2351 * go to a location after the requested position, 2352 * if KEY_UNIT this means the keyframe at of after the 2353 * requested position. 2354 */ 2355 SNAP_AFTER = 64, 2356 /** 2357 * go to a position near the requested position, 2358 * if KEY_UNIT this means the keyframe closest to the 2359 * requested position, if both keyframes are at an equal 2360 * distance, behaves like SNAP_BEFORE. 2361 */ 2362 SNAP_NEAREST = 96, 2363 } 2364 alias GstSeekFlags SeekFlags; 2365 2366 /** 2367 * The different types of seek events. When constructing a seek event with 2368 * gst_event_new_seek() or when doing gst_segment_do_seek (). 2369 */ 2370 public enum GstSeekType 2371 { 2372 /** 2373 * no change in position is required 2374 */ 2375 NONE = 0, 2376 /** 2377 * absolute position is requested 2378 */ 2379 SET = 1, 2380 /** 2381 * relative position to duration is requested 2382 */ 2383 END = 2, 2384 } 2385 alias GstSeekType SeekType; 2386 2387 /** 2388 * Flags for the GstSegment structure. Currently mapped to the corresponding 2389 * values of the seek flags. 2390 */ 2391 public enum GstSegmentFlags 2392 { 2393 /** 2394 * no flags 2395 */ 2396 NONE = 0, 2397 /** 2398 * reset the pipeline running_time to the segment 2399 * running_time 2400 */ 2401 RESET = 1, 2402 /** 2403 * perform skip playback 2404 */ 2405 SKIP = 16, 2406 /** 2407 * send SEGMENT_DONE instead of EOS 2408 */ 2409 SEGMENT = 8, 2410 } 2411 alias GstSegmentFlags SegmentFlags; 2412 2413 /** 2414 * The possible states an element can be in. States can be changed using 2415 * gst_element_set_state() and checked using gst_element_get_state(). 2416 */ 2417 public enum GstState 2418 { 2419 /** 2420 * no pending state. 2421 */ 2422 VOID_PENDING = 0, 2423 /** 2424 * the NULL state or initial state of an element. 2425 */ 2426 NULL = 1, 2427 /** 2428 * the element is ready to go to PAUSED. 2429 */ 2430 READY = 2, 2431 /** 2432 * the element is PAUSED, it is ready to accept and 2433 * process data. Sink elements however only accept one 2434 * buffer and then block. 2435 */ 2436 PAUSED = 3, 2437 /** 2438 * the element is PLAYING, the #GstClock is running and 2439 * the data is flowing. 2440 */ 2441 PLAYING = 4, 2442 } 2443 alias GstState State; 2444 2445 /** 2446 * These are the different state changes an element goes through. 2447 * %GST_STATE_NULL ⇒ %GST_STATE_PLAYING is called an upwards state change 2448 * and %GST_STATE_PLAYING ⇒ %GST_STATE_NULL a downwards state change. 2449 */ 2450 public enum GstStateChange 2451 { 2452 /** 2453 * state change from NULL to READY. 2454 * <itemizedlist> 2455 * <listitem><para> 2456 * The element must check if the resources it needs are available. Device 2457 * sinks and -sources typically try to probe the device to constrain their 2458 * caps. 2459 * </para></listitem> 2460 * <listitem><para> 2461 * The element opens the device (in case feature need to be probed). 2462 * </para></listitem> 2463 * </itemizedlist> 2464 */ 2465 NULL_TO_READY = 10, 2466 /** 2467 * state change from READY to PAUSED. 2468 * <itemizedlist> 2469 * <listitem><para> 2470 * The element pads are activated in order to receive data in PAUSED. 2471 * Streaming threads are started. 2472 * </para></listitem> 2473 * <listitem><para> 2474 * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete 2475 * the state change when they have enough information. It is a requirement 2476 * for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change 2477 * when they receive the first buffer or %GST_EVENT_EOS (preroll). 2478 * Sinks also block the dataflow when in PAUSED. 2479 * </para></listitem> 2480 * <listitem><para> 2481 * A pipeline resets the running_time to 0. 2482 * </para></listitem> 2483 * <listitem><para> 2484 * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data. 2485 * </para></listitem> 2486 * </itemizedlist> 2487 */ 2488 READY_TO_PAUSED = 19, 2489 /** 2490 * state change from PAUSED to PLAYING. 2491 * <itemizedlist> 2492 * <listitem><para> 2493 * Most elements ignore this state change. 2494 * </para></listitem> 2495 * <listitem><para> 2496 * The pipeline selects a #GstClock and distributes this to all the children 2497 * before setting them to PLAYING. This means that it is only allowed to 2498 * synchronize on the #GstClock in the PLAYING state. 2499 * </para></listitem> 2500 * <listitem><para> 2501 * The pipeline uses the #GstClock and the running_time to calculate the 2502 * base_time. The base_time is distributed to all children when performing 2503 * the state change. 2504 * </para></listitem> 2505 * <listitem><para> 2506 * Sink elements stop blocking on the preroll buffer or event and start 2507 * rendering the data. 2508 * </para></listitem> 2509 * <listitem><para> 2510 * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed 2511 * to post %GST_MESSAGE_EOS when not in the PLAYING state. 2512 * </para></listitem> 2513 * <listitem><para> 2514 * While streaming in PAUSED or PLAYING elements can create and remove 2515 * sometimes pads. 2516 * </para></listitem> 2517 * <listitem><para> 2518 * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS. 2519 * </para></listitem> 2520 * </itemizedlist> 2521 */ 2522 PAUSED_TO_PLAYING = 28, 2523 /** 2524 * state change from PLAYING to PAUSED. 2525 * <itemizedlist> 2526 * <listitem><para> 2527 * Most elements ignore this state change. 2528 * </para></listitem> 2529 * <listitem><para> 2530 * The pipeline calculates the running_time based on the last selected 2531 * #GstClock and the base_time. It stores this information to continue 2532 * playback when going back to the PLAYING state. 2533 * </para></listitem> 2534 * <listitem><para> 2535 * Sinks unblock any #GstClock wait calls. 2536 * </para></listitem> 2537 * <listitem><para> 2538 * When a sink does not have a pending buffer to play, it returns 2539 * %GST_STATE_CHANGE_ASYNC from this state change and completes the state 2540 * change when it receives a new buffer or an %GST_EVENT_EOS. 2541 * </para></listitem> 2542 * <listitem><para> 2543 * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted 2544 * when going back to the PLAYING state. The EOS messages are queued in 2545 * #GstBin containers. 2546 * </para></listitem> 2547 * <listitem><para> 2548 * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL. 2549 * </para></listitem> 2550 * </itemizedlist> 2551 */ 2552 PLAYING_TO_PAUSED = 35, 2553 /** 2554 * state change from PAUSED to READY. 2555 * <itemizedlist> 2556 * <listitem><para> 2557 * Sinks unblock any waits in the preroll. 2558 * </para></listitem> 2559 * <listitem><para> 2560 * Elements unblock any waits on devices 2561 * </para></listitem> 2562 * <listitem><para> 2563 * Chain or get_range functions return %GST_FLOW_FLUSHING. 2564 * </para></listitem> 2565 * <listitem><para> 2566 * The element pads are deactivated so that streaming becomes impossible and 2567 * all streaming threads are stopped. 2568 * </para></listitem> 2569 * <listitem><para> 2570 * The sink forgets all negotiated formats 2571 * </para></listitem> 2572 * <listitem><para> 2573 * Elements remove all sometimes pads 2574 * </para></listitem> 2575 * </itemizedlist> 2576 */ 2577 PAUSED_TO_READY = 26, 2578 /** 2579 * state change from READY to NULL. 2580 * <itemizedlist> 2581 * <listitem><para> 2582 * Elements close devices 2583 * </para></listitem> 2584 * <listitem><para> 2585 * Elements reset any internal state. 2586 * </para></listitem> 2587 * </itemizedlist> 2588 */ 2589 READY_TO_NULL = 17, 2590 } 2591 alias GstStateChange StateChange; 2592 2593 /** 2594 * The possible return values from a state change function such as 2595 * gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure. 2596 */ 2597 public enum GstStateChangeReturn 2598 { 2599 /** 2600 * the state change failed 2601 */ 2602 FAILURE = 0, 2603 /** 2604 * the state change succeeded 2605 */ 2606 SUCCESS = 1, 2607 /** 2608 * the state change will happen asynchronously 2609 */ 2610 ASYNC = 2, 2611 /** 2612 * the state change succeeded but the element 2613 * cannot produce data in %GST_STATE_PAUSED. 2614 * This typically happens with live sources. 2615 */ 2616 NO_PREROLL = 3, 2617 } 2618 alias GstStateChangeReturn StateChangeReturn; 2619 2620 /** 2621 * Stream errors are for anything related to the stream being processed: 2622 * format errors, media type errors, ... 2623 * They're typically used by decoders, demuxers, converters, ... 2624 */ 2625 public enum GstStreamError 2626 { 2627 /** 2628 * a general error which doesn't fit in any other 2629 * category. Make sure you add a custom message to the error call. 2630 */ 2631 FAILED = 1, 2632 /** 2633 * do not use this except as a placeholder for 2634 * deciding where to go while developing code. 2635 */ 2636 TOO_LAZY = 2, 2637 /** 2638 * use this when you do not want to implement 2639 * this functionality yet. 2640 */ 2641 NOT_IMPLEMENTED = 3, 2642 /** 2643 * used when the element doesn't know the 2644 * stream's type. 2645 */ 2646 TYPE_NOT_FOUND = 4, 2647 /** 2648 * used when the element doesn't handle this type 2649 * of stream. 2650 */ 2651 WRONG_TYPE = 5, 2652 /** 2653 * used when there's no codec to handle the 2654 * stream's type. 2655 */ 2656 CODEC_NOT_FOUND = 6, 2657 /** 2658 * used when decoding fails. 2659 */ 2660 DECODE = 7, 2661 /** 2662 * used when encoding fails. 2663 */ 2664 ENCODE = 8, 2665 /** 2666 * used when demuxing fails. 2667 */ 2668 DEMUX = 9, 2669 /** 2670 * used when muxing fails. 2671 */ 2672 MUX = 10, 2673 /** 2674 * used when the stream is of the wrong format 2675 * (for example, wrong caps). 2676 */ 2677 FORMAT = 11, 2678 /** 2679 * used when the stream is encrypted and can't be 2680 * decrypted because this is not supported by the element. 2681 */ 2682 DECRYPT = 12, 2683 /** 2684 * used when the stream is encrypted and 2685 * can't be decrypted because no suitable key is available. 2686 */ 2687 DECRYPT_NOKEY = 13, 2688 /** 2689 * the number of stream error types. 2690 */ 2691 NUM_ERRORS = 14, 2692 } 2693 alias GstStreamError StreamError; 2694 2695 public enum GstStreamFlags 2696 { 2697 /** 2698 * This stream has no special attributes 2699 */ 2700 NONE = 0, 2701 /** 2702 * This stream is a sparse stream (e.g. a subtitle 2703 * stream), data may flow only in irregular intervals with large gaps in 2704 * between. 2705 */ 2706 SPARSE = 1, 2707 /** 2708 * This stream should be selected by default. This 2709 * flag may be used by demuxers to signal that a stream should be selected 2710 * by default in a playback scenario. 2711 */ 2712 SELECT = 2, 2713 /** 2714 * This stream should not be selected by default. 2715 * This flag may be used by demuxers to signal that a stream should not 2716 * be selected by default in a playback scenario, but only if explicitly 2717 * selected by the user (e.g. an audio track for the hard of hearing or 2718 * a director's commentary track). 2719 */ 2720 UNSELECT = 4, 2721 } 2722 alias GstStreamFlags StreamFlags; 2723 2724 /** 2725 * The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the 2726 * application of new streaming threads and their status. 2727 */ 2728 public enum GstStreamStatusType 2729 { 2730 /** 2731 * A new thread need to be created. 2732 */ 2733 CREATE = 0, 2734 /** 2735 * a thread entered its loop function 2736 */ 2737 ENTER = 1, 2738 /** 2739 * a thread left its loop function 2740 */ 2741 LEAVE = 2, 2742 /** 2743 * a thread is destroyed 2744 */ 2745 DESTROY = 3, 2746 /** 2747 * a thread is started 2748 */ 2749 START = 8, 2750 /** 2751 * a thread is paused 2752 */ 2753 PAUSE = 9, 2754 /** 2755 * a thread is stopped 2756 */ 2757 STOP = 10, 2758 } 2759 alias GstStreamStatusType StreamStatusType; 2760 2761 /** 2762 * The type of a %GST_MESSAGE_STRUCTURE_CHANGE. 2763 */ 2764 public enum GstStructureChangeType 2765 { 2766 /** 2767 * Pad linking is starting or done. 2768 */ 2769 LINK = 0, 2770 /** 2771 * Pad unlinking is starting or done. 2772 */ 2773 UNLINK = 1, 2774 } 2775 alias GstStructureChangeType StructureChangeType; 2776 2777 /** 2778 * Extra tag flags used when registering tags. 2779 */ 2780 public enum GstTagFlag 2781 { 2782 /** 2783 * undefined flag 2784 */ 2785 UNDEFINED = 0, 2786 /** 2787 * tag is meta data 2788 */ 2789 META = 1, 2790 /** 2791 * tag is encoded 2792 */ 2793 ENCODED = 2, 2794 /** 2795 * tag is decoded 2796 */ 2797 DECODED = 3, 2798 /** 2799 * number of tag flags 2800 */ 2801 COUNT = 4, 2802 } 2803 alias GstTagFlag TagFlag; 2804 2805 /** 2806 * The different tag merging modes are basically replace, overwrite and append, 2807 * but they can be seen from two directions. Given two taglists: (A) the tags 2808 * already in the element and (B) the ones that are supplied to the element ( 2809 * e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a 2810 * %GST_EVENT_TAG), how are these tags merged? 2811 * In the table below this is shown for the cases that a tag exists in the list 2812 * (A) or does not exists (!A) and combinations thereof. 2813 * 2814 * <table frame="all" colsep="1" rowsep="1"> 2815 * <title>merge mode</title> 2816 * <tgroup cols='5' align='left'> 2817 * <thead> 2818 * <row> 2819 * <entry>merge mode</entry> 2820 * <entry>A + B</entry> 2821 * <entry>A + !B</entry> 2822 * <entry>!A + B</entry> 2823 * <entry>!A + !B</entry> 2824 * </row> 2825 * </thead> 2826 * <tbody> 2827 * <row> 2828 * <entry>REPLACE_ALL</entry> 2829 * <entry>B</entry> 2830 * <entry>-</entry> 2831 * <entry>B</entry> 2832 * <entry>-</entry> 2833 * </row> 2834 * <row> 2835 * <entry>REPLACE</entry> 2836 * <entry>B</entry> 2837 * <entry>A</entry> 2838 * <entry>B</entry> 2839 * <entry>-</entry> 2840 * </row> 2841 * <row> 2842 * <entry>APPEND</entry> 2843 * <entry>A, B</entry> 2844 * <entry>A</entry> 2845 * <entry>B</entry> 2846 * <entry>-</entry> 2847 * </row> 2848 * <row> 2849 * <entry>PREPEND</entry> 2850 * <entry>B, A</entry> 2851 * <entry>A</entry> 2852 * <entry>B</entry> 2853 * <entry>-</entry> 2854 * </row> 2855 * <row> 2856 * <entry>KEEP</entry> 2857 * <entry>A</entry> 2858 * <entry>A</entry> 2859 * <entry>B</entry> 2860 * <entry>-</entry> 2861 * </row> 2862 * <row> 2863 * <entry>KEEP_ALL</entry> 2864 * <entry>A</entry> 2865 * <entry>A</entry> 2866 * <entry>-</entry> 2867 * <entry>-</entry> 2868 * </row> 2869 * </tbody> 2870 * </tgroup> 2871 * </table> 2872 */ 2873 public enum GstTagMergeMode 2874 { 2875 /** 2876 * undefined merge mode 2877 */ 2878 UNDEFINED = 0, 2879 /** 2880 * replace all tags (clear list and append) 2881 */ 2882 REPLACE_ALL = 1, 2883 /** 2884 * replace tags 2885 */ 2886 REPLACE = 2, 2887 /** 2888 * append tags 2889 */ 2890 APPEND = 3, 2891 /** 2892 * prepend tags 2893 */ 2894 PREPEND = 4, 2895 /** 2896 * keep existing tags 2897 */ 2898 KEEP = 5, 2899 /** 2900 * keep all existing tags 2901 */ 2902 KEEP_ALL = 6, 2903 /** 2904 * the number of merge modes 2905 */ 2906 COUNT = 7, 2907 } 2908 alias GstTagMergeMode TagMergeMode; 2909 2910 /** 2911 * GstTagScope specifies if a taglist applies to the complete 2912 * medium or only to one single stream. 2913 */ 2914 public enum GstTagScope 2915 { 2916 /** 2917 * tags specific to this single stream 2918 */ 2919 STREAM = 0, 2920 /** 2921 * global tags for the complete medium 2922 */ 2923 GLOBAL = 1, 2924 } 2925 alias GstTagScope TagScope; 2926 2927 /** 2928 * The different states a task can be in 2929 */ 2930 public enum GstTaskState 2931 { 2932 /** 2933 * the task is started and running 2934 */ 2935 STARTED = 0, 2936 /** 2937 * the task is stopped 2938 */ 2939 STOPPED = 1, 2940 /** 2941 * the task is paused 2942 */ 2943 PAUSED = 2, 2944 } 2945 alias GstTaskState TaskState; 2946 2947 /** 2948 * The different types of TOC entries (see #GstTocEntry). 2949 * 2950 * There are two types of TOC entries: alternatives or parts in a sequence. 2951 */ 2952 public enum GstTocEntryType 2953 { 2954 /** 2955 * entry is an angle (i.e. an alternative) 2956 */ 2957 ANGLE = -3, 2958 /** 2959 * entry is a version (i.e. alternative) 2960 */ 2961 VERSION = -2, 2962 /** 2963 * entry is an edition (i.e. alternative) 2964 */ 2965 EDITION = -1, 2966 /** 2967 * invalid entry type value 2968 */ 2969 INVALID = 0, 2970 /** 2971 * entry is a title (i.e. a part of a sequence) 2972 */ 2973 TITLE = 1, 2974 /** 2975 * entry is a track (i.e. a part of a sequence) 2976 */ 2977 TRACK = 2, 2978 /** 2979 * entry is a chapter (i.e. a part of a sequence) 2980 */ 2981 CHAPTER = 3, 2982 } 2983 alias GstTocEntryType TocEntryType; 2984 2985 /** 2986 * How a #GstTocEntry should be repeated. By default, entries are played a 2987 * single time. 2988 * 2989 * Since: 1.4 2990 */ 2991 public enum GstTocLoopType 2992 { 2993 /** 2994 * single forward playback 2995 */ 2996 NONE = 0, 2997 /** 2998 * repeat forward 2999 */ 3000 FORWARD = 1, 3001 /** 3002 * repeat backward 3003 */ 3004 REVERSE = 2, 3005 /** 3006 * repeat forward and backward 3007 */ 3008 PING_PONG = 3, 3009 } 3010 alias GstTocLoopType TocLoopType; 3011 3012 /** 3013 * The scope of a TOC. 3014 */ 3015 public enum GstTocScope 3016 { 3017 /** 3018 * global TOC representing all selectable options 3019 * (this is what applications are usually interested in) 3020 */ 3021 GLOBAL = 1, 3022 /** 3023 * TOC for the currently active/selected stream 3024 * (this is a TOC representing the current stream from start to EOS, 3025 * and is what a TOC writer / muxer is usually interested in; it will 3026 * usually be a subset of the global TOC, e.g. just the chapters of 3027 * the current title, or the chapters selected for playback from the 3028 * current title) 3029 */ 3030 CURRENT = 2, 3031 } 3032 alias GstTocScope TocScope; 3033 3034 /** 3035 * The probability of the typefind function. Higher values have more certainty 3036 * in doing a reliable typefind. 3037 */ 3038 public enum GstTypeFindProbability 3039 { 3040 /** 3041 * type undetected. 3042 */ 3043 NONE = 0, 3044 /** 3045 * unlikely typefind. 3046 */ 3047 MINIMUM = 1, 3048 /** 3049 * possible type detected. 3050 */ 3051 POSSIBLE = 50, 3052 /** 3053 * likely a type was detected. 3054 */ 3055 LIKELY = 80, 3056 /** 3057 * nearly certain that a type was detected. 3058 */ 3059 NEARLY_CERTAIN = 99, 3060 /** 3061 * very certain a type was detected. 3062 */ 3063 MAXIMUM = 100, 3064 } 3065 alias GstTypeFindProbability TypeFindProbability; 3066 3067 /** 3068 * Different URI-related errors that can occur. 3069 */ 3070 public enum GstURIError 3071 { 3072 /** 3073 * The protocol is not supported 3074 */ 3075 UNSUPPORTED_PROTOCOL = 0, 3076 /** 3077 * There was a problem with the URI 3078 */ 3079 BAD_URI = 1, 3080 /** 3081 * Could not set or change the URI because the 3082 * URI handler was in a state where that is not possible or not permitted 3083 */ 3084 BAD_STATE = 2, 3085 /** 3086 * There was a problem with the entity that 3087 * the URI references 3088 */ 3089 BAD_REFERENCE = 3, 3090 } 3091 alias GstURIError URIError; 3092 3093 /** 3094 * The different types of URI direction. 3095 */ 3096 public enum GstURIType 3097 { 3098 /** 3099 * The URI direction is unknown 3100 */ 3101 UNKNOWN = 0, 3102 /** 3103 * The URI is a consumer. 3104 */ 3105 SINK = 1, 3106 /** 3107 * The URI is a producer. 3108 */ 3109 SRC = 2, 3110 } 3111 alias GstURIType URIType; 3112 3113 struct GstAllocationParams 3114 { 3115 /** 3116 * flags to control allocation 3117 */ 3118 GstMemoryFlags flags; 3119 /** 3120 * the desired alignment of the memory 3121 */ 3122 size_t alig; 3123 /** 3124 * the desired prefix 3125 */ 3126 size_t prefix; 3127 /** 3128 * the desired padding 3129 */ 3130 size_t padding; 3131 void*[4] GstReserved; 3132 } 3133 3134 struct GstAllocator 3135 { 3136 GstObject object; 3137 const(char)* memType; 3138 /** 3139 * the implementation of the GstMemoryMapFunction 3140 */ 3141 GstMemoryMapFunction memMap; 3142 /** 3143 * the implementation of the GstMemoryUnmapFunction 3144 */ 3145 GstMemoryUnmapFunction memUnmap; 3146 /** 3147 * the implementation of the GstMemoryCopyFunction 3148 */ 3149 GstMemoryCopyFunction memCopy; 3150 /** 3151 * the implementation of the GstMemoryShareFunction 3152 */ 3153 GstMemoryShareFunction memShare; 3154 /** 3155 * the implementation of the GstMemoryIsSpanFunction 3156 */ 3157 GstMemoryIsSpanFunction memIsSpan; 3158 void*[4] GstReserved; 3159 GstAllocatorPrivate* priv; 3160 } 3161 3162 /** 3163 * The #GstAllocator is used to create new memory. 3164 */ 3165 struct GstAllocatorClass 3166 { 3167 /** 3168 * Object parent class 3169 */ 3170 GstObjectClass objectClass; 3171 /** 3172 * 3173 * Params: 3174 * allocator = a #GstAllocator to use 3175 * size = size of the visible memory area 3176 * params = optional parameters 3177 * Return: a new #GstMemory. 3178 */ 3179 extern(C) GstMemory* function(GstAllocator* allocator, size_t size, GstAllocationParams* params) alloc; 3180 extern(C) void function(GstAllocator* allocator, GstMemory* memory) free; 3181 void*[4] GstReserved; 3182 } 3183 3184 struct GstAllocatorPrivate; 3185 3186 struct GstAtomicQueue; 3187 3188 struct GstBin 3189 { 3190 GstElement element; 3191 /** 3192 * the number of children in this bin 3193 */ 3194 int numchildren; 3195 /** 3196 * the list of children in this bin 3197 */ 3198 GList* children; 3199 /** 3200 * updated whenever @children changes 3201 */ 3202 uint childrenCookie; 3203 /** 3204 * internal bus for handling child messages 3205 */ 3206 GstBus* childBus; 3207 /** 3208 * queued and cached messages 3209 */ 3210 GList* messages; 3211 /** 3212 * the bin is currently calculating its state 3213 */ 3214 bool polling; 3215 /** 3216 * the bin needs to recalculate its state (deprecated) 3217 */ 3218 bool stateDirty; 3219 /** 3220 * the bin needs to select a new clock 3221 */ 3222 bool clockDirty; 3223 /** 3224 * the last clock selected 3225 */ 3226 GstClock* providedClock; 3227 /** 3228 * the element that provided @provided_clock 3229 */ 3230 GstElement* clockProvider; 3231 GstBinPrivate* priv; 3232 void*[4] GstReserved; 3233 } 3234 3235 /** 3236 * Subclasses can override the @add_element and @remove_element to 3237 * update the list of children in the bin. 3238 * 3239 * The @handle_message method can be overridden to implement custom 3240 * message handling. @handle_message takes ownership of the message, just like 3241 * #gst_element_post_message. 3242 */ 3243 struct GstBinClass 3244 { 3245 /** 3246 * bin parent class 3247 */ 3248 GstElementClass parentClass; 3249 GThreadPool* pool; 3250 extern(C) void function(GstBin* bin, GstElement* child) elementAdded; 3251 extern(C) void function(GstBin* bin, GstElement* child) elementRemoved; 3252 extern(C) int function(GstBin* bin, GstElement* element) addElement; 3253 extern(C) int function(GstBin* bin, GstElement* element) removeElement; 3254 extern(C) void function(GstBin* bin, GstMessage* message) handleMessage; 3255 extern(C) int function(GstBin* bin) doLatency; 3256 void*[4] GstReserved; 3257 } 3258 3259 struct GstBinPrivate; 3260 3261 3262 struct GstBuffer 3263 { 3264 /** 3265 * the parent structure 3266 */ 3267 GstMiniObject miniObject; 3268 /** 3269 * pointer to the pool owner of the buffer 3270 */ 3271 GstBufferPool* pool; 3272 /** 3273 * presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3274 * pts is not known or relevant. The pts contains the timestamp when the 3275 * media should be presented to the user. 3276 */ 3277 GstClockTime pts; 3278 /** 3279 * decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3280 * dts is not known or relevant. The dts contains the timestamp when the 3281 * media should be processed. 3282 */ 3283 GstClockTime dts; 3284 /** 3285 * duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE 3286 * when the duration is not known or relevant. 3287 */ 3288 GstClockTime duration; 3289 /** 3290 * a media specific offset for the buffer data. 3291 * For video frames, this is the frame number of this buffer. 3292 * For audio samples, this is the offset of the first sample in this buffer. 3293 * For file data or compressed data this is the byte offset of the first 3294 * byte in this buffer. 3295 */ 3296 ulong offset; 3297 /** 3298 * the last offset contained in this buffer. It has the same 3299 * format as @offset. 3300 */ 3301 ulong offsetEnd; 3302 } 3303 3304 struct GstBufferList; 3305 3306 struct GstBufferPool 3307 { 3308 GstObject object; 3309 int flushing; 3310 GstBufferPoolPrivate* priv; 3311 void*[4] GstReserved; 3312 } 3313 3314 /** 3315 * Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the 3316 * allocation of the buffer. 3317 * 3318 * The default implementation ignores the @start and @stop members but other 3319 * implementations can use this extra information to decide what buffer to 3320 * return. 3321 */ 3322 struct GstBufferPoolAcquireParams 3323 { 3324 /** 3325 * the format of @start and @stop 3326 */ 3327 GstFormat format; 3328 /** 3329 * the start position 3330 */ 3331 long start; 3332 /** 3333 * the stop position 3334 */ 3335 long stop; 3336 /** 3337 * additional flags 3338 */ 3339 GstBufferPoolAcquireFlags flags; 3340 void*[4] GstReserved; 3341 } 3342 3343 /** 3344 * The GstBufferPool class. 3345 */ 3346 struct GstBufferPoolClass 3347 { 3348 /** 3349 * Object parent class 3350 */ 3351 GstObjectClass objectClass; 3352 /** 3353 * 3354 * Params: 3355 * pool = a #GstBufferPool 3356 * Return: a %NULL terminated array 3357 * of strings. 3358 */ 3359 extern(C) char** function(GstBufferPool* pool) getOptions; 3360 /** 3361 * 3362 * Params: 3363 * pool = a #GstBufferPool 3364 * config = a #GstStructure 3365 * Return: %TRUE when the configuration could be set. 3366 */ 3367 extern(C) int function(GstBufferPool* pool, GstStructure* config) setConfig; 3368 extern(C) int function(GstBufferPool* pool) start; 3369 extern(C) int function(GstBufferPool* pool) stop; 3370 /** 3371 * 3372 * Params: 3373 * pool = a #GstBufferPool 3374 * buffer = a location for a #GstBuffer 3375 * params = parameters. 3376 * Return: a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is 3377 * inactive. 3378 */ 3379 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) acquireBuffer; 3380 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) allocBuffer; 3381 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) resetBuffer; 3382 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) releaseBuffer; 3383 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) freeBuffer; 3384 extern(C) void function(GstBufferPool* pool) flushStart; 3385 extern(C) void function(GstBufferPool* pool) flushStop; 3386 void*[2] GstReserved; 3387 } 3388 3389 struct GstBufferPoolPrivate; 3390 3391 struct GstBus 3392 { 3393 GstObject object; 3394 GstBusPrivate* priv; 3395 void*[4] GstReserved; 3396 } 3397 3398 struct GstBusClass 3399 { 3400 GstObjectClass parentClass; 3401 extern(C) void function(GstBus* bus, GstMessage* message) message; 3402 extern(C) void function(GstBus* bus, GstMessage* message) syncMessage; 3403 void*[4] GstReserved; 3404 } 3405 3406 struct GstBusPrivate; 3407 3408 struct GstCaps 3409 { 3410 /** 3411 * the parent type 3412 */ 3413 GstMiniObject miniObject; 3414 } 3415 3416 struct GstCapsFeatures; 3417 3418 struct GstChildProxy; 3419 3420 /** 3421 * #GstChildProxy interface. 3422 */ 3423 struct GstChildProxyInterface 3424 { 3425 /** 3426 * parent interface type. 3427 */ 3428 GTypeInterface parent; 3429 /** 3430 * 3431 * Params: 3432 * parent = the parent object to get the child from 3433 * name = the child's name 3434 * Return: the child object or %NULL if 3435 * not found. Unref after usage. 3436 * 3437 * MT safe. 3438 */ 3439 extern(C) GObject* function(GstChildProxy* parent, const(char)* name) getChildByName; 3440 /** 3441 * 3442 * Params: 3443 * parent = the parent object to get the child from 3444 * index = the child's position in the child list 3445 * Return: the child object or %NULL if 3446 * not found (index too high). Unref after usage. 3447 * 3448 * MT safe. 3449 */ 3450 extern(C) GObject* function(GstChildProxy* parent, uint index) getChildByIndex; 3451 /** 3452 * 3453 * Params: 3454 * parent = the parent object 3455 * Return: the number of child objects 3456 * 3457 * MT safe. 3458 */ 3459 extern(C) uint function(GstChildProxy* parent) getChildrenCount; 3460 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childAdded; 3461 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childRemoved; 3462 void*[4] GstReserved; 3463 } 3464 3465 struct GstClock 3466 { 3467 GstObject object; 3468 GstClockPrivate* priv; 3469 void*[4] GstReserved; 3470 } 3471 3472 /** 3473 * GStreamer clock class. Override the vmethods to implement the clock 3474 * functionality. 3475 */ 3476 struct GstClockClass 3477 { 3478 /** 3479 * the parent class structure 3480 */ 3481 GstObjectClass parentClass; 3482 extern(C) GstClockTime function(GstClock* clock, GstClockTime oldResolution, GstClockTime newResolution) changeResolution; 3483 /** 3484 * 3485 * Params: 3486 * clock = a #GstClock 3487 * Return: the resolution of the clock in units of #GstClockTime. 3488 * 3489 * MT safe. 3490 */ 3491 extern(C) GstClockTime function(GstClock* clock) getResolution; 3492 /** 3493 * 3494 * Params: 3495 * clock = a #GstClock to query 3496 * Return: the internal time of the clock. Or GST_CLOCK_TIME_NONE when 3497 * given invalid input. 3498 * 3499 * MT safe. 3500 */ 3501 extern(C) GstClockTime function(GstClock* clock) getInternalTime; 3502 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry, GstClockTimeDiff* jitter) wait; 3503 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry) waitAsync; 3504 extern(C) void function(GstClock* clock, GstClockEntry* entry) unschedule; 3505 void*[4] GstReserved; 3506 } 3507 3508 /** 3509 * All pending timeouts or periodic notifies are converted into 3510 * an entry. 3511 * Note that GstClockEntry should be treated as an opaque structure. It must 3512 * not be extended or allocated using a custom allocator. 3513 */ 3514 struct GstClockEntry 3515 { 3516 /** 3517 * reference counter (read-only) 3518 */ 3519 int refcount; 3520 GstClock* clock; 3521 GstClockEntryType type; 3522 GstClockTime time; 3523 GstClockTime interval; 3524 GstClockReturn status; 3525 GstClockCallback func; 3526 void* userData; 3527 GDestroyNotify destroyData; 3528 bool unscheduled; 3529 bool wokenUp; 3530 void*[4] GstReserved; 3531 } 3532 3533 struct GstClockPrivate; 3534 3535 struct GstContext; 3536 3537 struct GstControlBinding 3538 { 3539 GstObject parent; 3540 /** 3541 * name of the property of this binding 3542 */ 3543 char* name; 3544 /** 3545 * #GParamSpec for this property 3546 */ 3547 GParamSpec* pspec; 3548 GstObject* object; 3549 bool disabled; 3550 void*[4] GstReserved; 3551 } 3552 3553 /** 3554 * The class structure of #GstControlBinding. 3555 */ 3556 struct GstControlBindingClass 3557 { 3558 /** 3559 * Parent class 3560 */ 3561 GstObjectClass parentClass; 3562 /** 3563 * 3564 * Params: 3565 * binding = the control binding 3566 * object = the object that has controlled properties 3567 * timestamp = the time that should be processed 3568 * lastSync = the last time this was called 3569 * Return: %TRUE if the controller value could be applied to the object 3570 * property, %FALSE otherwise 3571 */ 3572 extern(C) int function(GstControlBinding* binding, GstObject* object, GstClockTime timestamp, GstClockTime lastSync) syncValues; 3573 /** 3574 * 3575 * Params: 3576 * binding = the control binding 3577 * timestamp = the time the control-change should be read from 3578 * Return: the GValue of the property at the given time, 3579 * or %NULL if the property isn't controlled. 3580 */ 3581 extern(C) GValue* function(GstControlBinding* binding, GstClockTime timestamp) getValue; 3582 /** 3583 * 3584 * Params: 3585 * binding = the control binding 3586 * timestamp = the time that should be processed 3587 * interval = the time spacing between subsequent values 3588 * nValues = the number of values 3589 * values = array to put control-values in 3590 * Return: %TRUE if the given array could be filled, %FALSE otherwise 3591 */ 3592 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, void* values) getValueArray; 3593 /** 3594 * 3595 * Params: 3596 * binding = the control binding 3597 * timestamp = the time that should be processed 3598 * interval = the time spacing between subsequent values 3599 * nValues = the number of values 3600 * values = array to put control-values in 3601 * Return: %TRUE if the given array could be filled, %FALSE otherwise 3602 */ 3603 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, GValue* values) getGValueArray; 3604 void*[4] GstReserved; 3605 } 3606 3607 struct GstControlSource 3608 { 3609 GstObject parent; 3610 /** 3611 * Function for returning a value for a given timestamp 3612 */ 3613 GstControlSourceGetValue getValue; 3614 /** 3615 * Function for returning a #GstValueArray for a given timestamp 3616 */ 3617 GstControlSourceGetValueArray getValueArray; 3618 void*[4] GstReserved; 3619 } 3620 3621 /** 3622 * The class structure of #GstControlSource. 3623 */ 3624 struct GstControlSourceClass 3625 { 3626 /** 3627 * Parent class 3628 */ 3629 GstObjectClass parentClass; 3630 void*[4] GstReserved; 3631 } 3632 3633 struct GstDateTime; 3634 3635 struct GstDebugCategory 3636 { 3637 int threshold; 3638 uint color; 3639 const(char)* name; 3640 const(char)* description; 3641 } 3642 3643 struct GstDebugMessage; 3644 3645 struct GstDevice 3646 { 3647 /** 3648 * The parent #GstObject strucuture. 3649 */ 3650 GstObject parent; 3651 GstDevicePrivate* priv; 3652 void*[4] GstReserved; 3653 } 3654 3655 /** 3656 * The class structure for a #GstDevice object. 3657 * 3658 * Since: 1.4 3659 */ 3660 struct GstDeviceClass 3661 { 3662 /** 3663 * The parent #GstObjectClass strucuture. 3664 */ 3665 GstObjectClass parentClass; 3666 /** 3667 * 3668 * Params: 3669 * device = a #GstDevice 3670 * name = name of new element, or %NULL to automatically 3671 * create a unique name. 3672 * Return: a new #GstElement configured to use this device 3673 */ 3674 extern(C) GstElement* function(GstDevice* device, const(char)* name) createElement; 3675 /** 3676 * 3677 * Params: 3678 * device = a #GstDevice 3679 * element = a #GstElement 3680 * Return: %TRUE if the element could be reconfigured to use this device, 3681 * %FALSE otherwise. 3682 */ 3683 extern(C) int function(GstDevice* device, GstElement* element) reconfigureElement; 3684 void*[4] GstReserved; 3685 } 3686 3687 struct GstDeviceMonitor 3688 { 3689 /** 3690 * the parent #GstObject structure 3691 */ 3692 GstObject parent; 3693 GstDeviceMonitorPrivate* priv; 3694 void*[4] GstReserved; 3695 } 3696 3697 /** 3698 * Opaque device monitor class structure. 3699 * 3700 * Since: 1.4 3701 */ 3702 struct GstDeviceMonitorClass 3703 { 3704 /** 3705 * the parent #GstObjectClass structure 3706 */ 3707 GstObjectClass parentClass; 3708 void*[4] GstReserved; 3709 } 3710 3711 struct GstDeviceMonitorPrivate; 3712 3713 struct GstDevicePrivate; 3714 3715 struct GstDeviceProvider 3716 { 3717 /** 3718 * The parent #GstObject 3719 */ 3720 GstObject parent; 3721 /** 3722 * a #GList of the #GstDevice objects 3723 */ 3724 GList* devices; 3725 GstDeviceProviderPrivate* priv; 3726 void*[4] GstReserved; 3727 } 3728 3729 struct GstDeviceProviderClass 3730 { 3731 /** 3732 * the parent #GstObjectClass structure 3733 */ 3734 GstObjectClass parentClass; 3735 /** 3736 * a pointer to the #GstDeviceProviderFactory that creates this 3737 * provider 3738 */ 3739 GstDeviceProviderFactory* factory; 3740 extern(C) GList* function(GstDeviceProvider* provider) probe; 3741 /** 3742 * 3743 * Params: 3744 * provider = A #GstDeviceProvider 3745 * Return: %TRUE if the device providering could be started 3746 */ 3747 extern(C) int function(GstDeviceProvider* provider) start; 3748 extern(C) void function(GstDeviceProvider* provider) stop; 3749 void* metadata; 3750 void*[4] GstReserved; 3751 } 3752 3753 struct GstDeviceProviderFactory; 3754 3755 /** 3756 * The opaque #GstDeviceProviderFactoryClass data structure. 3757 * 3758 * Since: 1.4 3759 */ 3760 struct GstDeviceProviderFactoryClass; 3761 3762 struct GstDeviceProviderPrivate; 3763 3764 3765 struct GstElement 3766 { 3767 GstObject object; 3768 /** 3769 * Used to serialize execution of gst_element_set_state() 3770 */ 3771 GRecMutex stateLock; 3772 /** 3773 * Used to signal completion of a state change 3774 */ 3775 GCond stateCond; 3776 /** 3777 * Used to detect concurrent execution of 3778 * gst_element_set_state() and gst_element_get_state() 3779 */ 3780 uint stateCookie; 3781 /** 3782 * the target state of an element as set by the application 3783 */ 3784 GstState targetState; 3785 /** 3786 * the current state of an element 3787 */ 3788 GstState currentState; 3789 /** 3790 * the next state of an element, can be #GST_STATE_VOID_PENDING if 3791 * the element is in the correct state. 3792 */ 3793 GstState nextState; 3794 /** 3795 * the final state the element should go to, can be 3796 * #GST_STATE_VOID_PENDING if the element is in the correct state 3797 */ 3798 GstState pendingState; 3799 /** 3800 * the last return value of an element state change 3801 */ 3802 GstStateChangeReturn lastReturn; 3803 /** 3804 * the bus of the element. This bus is provided to the element by the 3805 * parent element or the application. A #GstPipeline has a bus of its own. 3806 */ 3807 GstBus* bus; 3808 /** 3809 * the clock of the element. This clock is usually provided to the 3810 * element by the toplevel #GstPipeline. 3811 */ 3812 GstClock* clock; 3813 /** 3814 * the time of the clock right before the element is set to 3815 * PLAYING. Subtracting @base_time from the current clock time in the PLAYING 3816 * state will yield the running_time against the clock. 3817 */ 3818 GstClockTimeDiff baseTime; 3819 /** 3820 * the running_time of the last PAUSED state 3821 */ 3822 GstClockTime startTime; 3823 /** 3824 * number of pads of the element, includes both source and sink pads. 3825 */ 3826 ushort numpads; 3827 /** 3828 * list of pads 3829 */ 3830 GList* pads; 3831 /** 3832 * number of source pads of the element. 3833 */ 3834 ushort numsrcpads; 3835 /** 3836 * list of source pads 3837 */ 3838 GList* srcpads; 3839 /** 3840 * number of sink pads of the element. 3841 */ 3842 ushort numsinkpads; 3843 /** 3844 * list of sink pads 3845 */ 3846 GList* sinkpads; 3847 /** 3848 * updated whenever the a pad is added or removed 3849 */ 3850 uint padsCookie; 3851 void*[4] GstReserved; 3852 } 3853 3854 struct GstElementClass 3855 { 3856 /** 3857 * the parent class structure 3858 */ 3859 GstObjectClass parentClass; 3860 /** 3861 * metadata for elements of this class 3862 */ 3863 void* metadata; 3864 /** 3865 * the #GstElementFactory that creates these elements 3866 */ 3867 GstElementFactory* elementfactory; 3868 /** 3869 * a #GList of #GstPadTemplate 3870 */ 3871 GList* padtemplates; 3872 /** 3873 * the number of padtemplates 3874 */ 3875 int numpadtemplates; 3876 /** 3877 * changed whenever the padtemplates change 3878 */ 3879 uint padTemplCookie; 3880 extern(C) void function(GstElement* element, GstPad* pad) padAdded; 3881 extern(C) void function(GstElement* element, GstPad* pad) padRemoved; 3882 extern(C) void function(GstElement* element) noMorePads; 3883 extern(C) GstPad* function(GstElement* element, GstPadTemplate* templ, const(char)* name, GstCaps* caps) requestNewPad; 3884 extern(C) void function(GstElement* element, GstPad* pad) releasePad; 3885 /** 3886 * 3887 * Params: 3888 * element = a #GstElement to get the state of. 3889 * state = a pointer to #GstState to hold the state. 3890 * Can be %NULL. 3891 * pending = a pointer to #GstState to hold the pending 3892 * state. Can be %NULL. 3893 * timeout = a #GstClockTime to specify the timeout for an async 3894 * state change or %GST_CLOCK_TIME_NONE for infinite timeout. 3895 * Return: %GST_STATE_CHANGE_SUCCESS if the element has no more pending state 3896 * and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the 3897 * element is still performing a state change or 3898 * %GST_STATE_CHANGE_FAILURE if the last state change failed. 3899 * 3900 * MT safe. 3901 */ 3902 extern(C) GstStateChangeReturn function(GstElement* element, GstState* state, GstState* pending, GstClockTime timeout) getState; 3903 /** 3904 * 3905 * Params: 3906 * element = a #GstElement to change state of. 3907 * state = the element's new #GstState. 3908 * Return: Result of the state change using #GstStateChangeReturn. 3909 * 3910 * MT safe. 3911 */ 3912 extern(C) GstStateChangeReturn function(GstElement* element, GstState state) setState; 3913 /** 3914 * 3915 * Params: 3916 * element = a #GstElement 3917 * transition = the requested transition 3918 * Return: the #GstStateChangeReturn of the state transition. 3919 */ 3920 extern(C) GstStateChangeReturn function(GstElement* element, GstStateChange transition) changeState; 3921 extern(C) void function(GstElement* element, GstState oldstate, GstState newstate, GstState pending) stateChanged; 3922 extern(C) void function(GstElement* element, GstBus* bus) setBus; 3923 /** 3924 * 3925 * Params: 3926 * element = a #GstElement to query 3927 * Return: the GstClock provided by the 3928 * element or %NULL if no clock could be provided. Unref after usage. 3929 * 3930 * MT safe. 3931 */ 3932 extern(C) GstClock* function(GstElement* element) provideClock; 3933 /** 3934 * 3935 * Params: 3936 * element = a #GstElement to set the clock for. 3937 * clock = the #GstClock to set for the element. 3938 * Return: %TRUE if the element accepted the clock. An element can refuse a 3939 * clock when it, for example, is not able to slave its internal clock to the 3940 * @clock or when it requires a specific clock to operate. 3941 * 3942 * MT safe. 3943 */ 3944 extern(C) int function(GstElement* element, GstClock* clock) setClock; 3945 /** 3946 * 3947 * Params: 3948 * element = a #GstElement to send the event to. 3949 * event = the #GstEvent to send to the element. 3950 * Return: %TRUE if the event was handled. Events that trigger a preroll (such 3951 * as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. 3952 */ 3953 extern(C) int function(GstElement* element, GstEvent* event) sendEvent; 3954 /** 3955 * 3956 * Params: 3957 * element = a #GstElement to perform the query on. 3958 * query = the #GstQuery. 3959 * Return: %TRUE if the query could be performed. 3960 * 3961 * MT safe. 3962 */ 3963 extern(C) int function(GstElement* element, GstQuery* query) query; 3964 /** 3965 * 3966 * Params: 3967 * element = a #GstElement posting the message 3968 * message = a #GstMessage to post 3969 * Return: %TRUE if the message was successfully posted. The function returns 3970 * %FALSE if the element did not have a bus. 3971 * 3972 * MT safe. 3973 */ 3974 extern(C) int function(GstElement* element, GstMessage* message) postMessage; 3975 extern(C) void function(GstElement* element, GstContext* context) setContext; 3976 void*[18] GstReserved; 3977 } 3978 3979 struct GstElementFactory; 3980 3981 struct GstElementFactoryClass; 3982 3983 struct GstEvent 3984 { 3985 /** 3986 * the parent structure 3987 */ 3988 GstMiniObject miniObject; 3989 /** 3990 * the #GstEventType of the event 3991 */ 3992 GstEventType type; 3993 /** 3994 * the timestamp of the event 3995 */ 3996 ulong timestamp; 3997 /** 3998 * the sequence number of the event 3999 */ 4000 uint seqnum; 4001 } 4002 4003 /** 4004 * A format definition 4005 */ 4006 struct GstFormatDefinition 4007 { 4008 /** 4009 * The unique id of this format 4010 */ 4011 GstFormat value; 4012 /** 4013 * A short nick of the format 4014 */ 4015 const(char)* nick; 4016 /** 4017 * A longer description of the format 4018 */ 4019 const(char)* description; 4020 /** 4021 * A quark for the nick 4022 */ 4023 GQuark quark; 4024 } 4025 4026 4027 4028 struct GstGhostPad 4029 { 4030 GstProxyPad pad; 4031 GstGhostPadPrivate* priv; 4032 } 4033 4034 struct GstGhostPadClass 4035 { 4036 GstProxyPadClass parentClass; 4037 void*[4] GstReserved; 4038 } 4039 4040 struct GstGhostPadPrivate; 4041 4042 4043 4044 struct GstIterator 4045 { 4046 /** 4047 * The function to copy the iterator 4048 */ 4049 GstIteratorCopyFunction copy; 4050 /** 4051 * The function to get the next item in the iterator 4052 */ 4053 GstIteratorNextFunction next; 4054 /** 4055 * The function to be called for each item retrieved 4056 */ 4057 GstIteratorItemFunction item; 4058 /** 4059 * The function to call when a resync is needed. 4060 */ 4061 GstIteratorResyncFunction resync; 4062 /** 4063 * The function to call when the iterator is freed 4064 */ 4065 GstIteratorFreeFunction free; 4066 /** 4067 * The iterator that is currently pushed with gst_iterator_push() 4068 */ 4069 GstIterator* pushed; 4070 /** 4071 * The type of the object that this iterator will return 4072 */ 4073 GType type; 4074 /** 4075 * The lock protecting the data structure and the cookie. 4076 */ 4077 GMutex* lock; 4078 /** 4079 * The cookie; the value of the master_cookie when this iterator was 4080 * created. 4081 */ 4082 uint cookie; 4083 /** 4084 * A pointer to the master cookie. 4085 */ 4086 uint* masterCookie; 4087 /** 4088 * the size of the iterator 4089 */ 4090 uint size; 4091 void*[4] GstReserved; 4092 } 4093 4094 /** 4095 * A structure containing the result of a map operation such as 4096 * gst_memory_map(). It contains the data and size. 4097 */ 4098 struct GstMapInfo 4099 { 4100 /** 4101 * a pointer to the mapped memory 4102 */ 4103 GstMemory* memory; 4104 /** 4105 * flags used when mapping the memory 4106 */ 4107 GstMapFlags flags; 4108 /** 4109 * a pointer to the mapped data 4110 */ 4111 ubyte* data; 4112 /** 4113 * the valid size in @data 4114 */ 4115 size_t size; 4116 /** 4117 * the maximum bytes in @data 4118 */ 4119 size_t maxsize; 4120 /** 4121 * extra private user_data that the implementation of the memory 4122 * can use to store extra info. 4123 */ 4124 void*[4] userData; 4125 void*[4] GstReserved; 4126 } 4127 4128 struct GstMemory 4129 { 4130 /** 4131 * parent structure 4132 */ 4133 GstMiniObject miniObject; 4134 /** 4135 * pointer to the #GstAllocator 4136 */ 4137 GstAllocator* allocator; 4138 /** 4139 * parent memory block 4140 */ 4141 GstMemory* parent; 4142 /** 4143 * the maximum size allocated 4144 */ 4145 size_t maxsize; 4146 /** 4147 * the alignment of the memory 4148 */ 4149 size_t alig; 4150 /** 4151 * the offset where valid data starts 4152 */ 4153 size_t offset; 4154 /** 4155 * the size of valid data 4156 */ 4157 size_t size; 4158 } 4159 4160 struct GstMessage 4161 { 4162 /** 4163 * the parent structure 4164 */ 4165 GstMiniObject miniObject; 4166 /** 4167 * the #GstMessageType of the message 4168 */ 4169 GstMessageType type; 4170 /** 4171 * the timestamp of the message 4172 */ 4173 ulong timestamp; 4174 /** 4175 * the src of the message 4176 */ 4177 GstObject* src; 4178 /** 4179 * the sequence number of the message 4180 */ 4181 uint seqnum; 4182 GMutex lock; 4183 GCond cond; 4184 } 4185 4186 /** 4187 * The #GstMeta structure should be included as the first member of a #GstBuffer 4188 * metadata structure. The structure defines the API of the metadata and should 4189 * be accessible to all elements using the metadata. 4190 * 4191 * A metadata API is registered with gst_meta_api_type_register() which takes a 4192 * name for the metadata API and some tags associated with the metadata. 4193 * With gst_meta_api_type_has_tag() one can check if a certain metadata API 4194 * contains a given tag. 4195 * 4196 * Multiple implementations of a metadata API can be registered. 4197 * To implement a metadata API, gst_meta_register() should be used. This 4198 * function takes all parameters needed to create, free and transform metadata 4199 * along with the size of the metadata. The function returns a #GstMetaInfo 4200 * structure that contains the information for the implementation of the API. 4201 * 4202 * A specific implementation can be retrieved by name with gst_meta_get_info(). 4203 * 4204 * See #GstBuffer for how the metadata can be added, retrieved and removed from 4205 * buffers. 4206 */ 4207 struct GstMeta 4208 { 4209 /** 4210 * extra flags for the metadata 4211 */ 4212 GstMetaFlags flags; 4213 /** 4214 * pointer to the #GstMetaInfo 4215 */ 4216 GstMetaInfo* info; 4217 } 4218 4219 /** 4220 * The #GstMetaInfo provides information about a specific metadata 4221 * structure. 4222 */ 4223 struct GstMetaInfo 4224 { 4225 /** 4226 * tag identifying the metadata structure and api 4227 */ 4228 GType api; 4229 /** 4230 * type identifying the implementor of the api 4231 */ 4232 GType type; 4233 /** 4234 * size of the metadata 4235 */ 4236 size_t size; 4237 /** 4238 * function for initializing the metadata 4239 */ 4240 GstMetaInitFunction initFunc; 4241 /** 4242 * function for freeing the metadata 4243 */ 4244 GstMetaFreeFunction freeFunc; 4245 /** 4246 * function for transforming the metadata 4247 */ 4248 GstMetaTransformFunction transformFunc; 4249 void*[4] GstReserved; 4250 } 4251 4252 /** 4253 * Extra data passed to a "gst-copy" transform #GstMetaTransformFunction. 4254 */ 4255 struct GstMetaTransformCopy 4256 { 4257 /** 4258 * %TRUE if only region is copied 4259 */ 4260 bool region; 4261 /** 4262 * the offset to copy, 0 if @region is %FALSE, otherwise > 0 4263 */ 4264 size_t offset; 4265 /** 4266 * the size to copy, -1 or the buffer size when @region is %FALSE 4267 */ 4268 size_t size; 4269 } 4270 4271 struct GstMiniObject 4272 { 4273 /** 4274 * the GType of the object 4275 */ 4276 GType type; 4277 /** 4278 * atomic refcount 4279 */ 4280 int refcount; 4281 /** 4282 * atomic state of the locks 4283 */ 4284 int lockstate; 4285 /** 4286 * extra flags. 4287 */ 4288 uint flags; 4289 /** 4290 * a copy function 4291 */ 4292 GstMiniObjectCopyFunction copy; 4293 /** 4294 * a dispose function 4295 */ 4296 GstMiniObjectDisposeFunction dispose; 4297 /** 4298 * the free function 4299 */ 4300 GstMiniObjectFreeFunction free; 4301 uint nQdata; 4302 void* qdata; 4303 } 4304 4305 struct GstObject 4306 { 4307 GObject object; 4308 /** 4309 * object LOCK 4310 */ 4311 GMutex lock; 4312 /** 4313 * The name of the object 4314 */ 4315 char* name; 4316 /** 4317 * this object's parent, weak ref 4318 */ 4319 GstObject* parent; 4320 /** 4321 * flags for this object 4322 */ 4323 uint flags; 4324 GList* controlBindings; 4325 ulong controlRate; 4326 ulong lastSync; 4327 void* GstReserved; 4328 } 4329 4330 /** 4331 * GStreamer base object class. 4332 */ 4333 struct GstObjectClass 4334 { 4335 /** 4336 * parent 4337 */ 4338 GObjectClass parentClass; 4339 /** 4340 * separator used by gst_object_get_path_string() 4341 */ 4342 const(char)* pathStringSeparator; 4343 extern(C) void function(GstObject* object, GstObject* orig, GParamSpec* pspec) deepNotify; 4344 void*[4] GstReserved; 4345 } 4346 4347 struct GstPad 4348 { 4349 GstObject object; 4350 /** 4351 * private data owned by the parent element 4352 */ 4353 void* elementPrivate; 4354 /** 4355 * padtemplate for this pad 4356 */ 4357 GstPadTemplate* padtemplate; 4358 /** 4359 * the direction of the pad, cannot change after creating 4360 * the pad. 4361 */ 4362 GstPadDirection direction; 4363 GRecMutex streamRecLock; 4364 GstTask* task; 4365 GCond blockCond; 4366 GHookList probes; 4367 GstPadMode mode; 4368 GstPadActivateFunction activatefunc; 4369 void* activatedata; 4370 GDestroyNotify activatenotify; 4371 GstPadActivateModeFunction activatemodefunc; 4372 void* activatemodedata; 4373 GDestroyNotify activatemodenotify; 4374 GstPad* peer; 4375 GstPadLinkFunction linkfunc; 4376 void* linkdata; 4377 GDestroyNotify linknotify; 4378 GstPadUnlinkFunction unlinkfunc; 4379 void* unlinkdata; 4380 GDestroyNotify unlinknotify; 4381 GstPadChainFunction chainfunc; 4382 void* chaindata; 4383 GDestroyNotify chainnotify; 4384 GstPadChainListFunction chainlistfunc; 4385 void* chainlistdata; 4386 GDestroyNotify chainlistnotify; 4387 GstPadGetRangeFunction getrangefunc; 4388 void* getrangedata; 4389 GDestroyNotify getrangenotify; 4390 GstPadEventFunction eventfunc; 4391 void* eventdata; 4392 GDestroyNotify eventnotify; 4393 long offset; 4394 GstPadQueryFunction queryfunc; 4395 void* querydata; 4396 GDestroyNotify querynotify; 4397 GstPadIterIntLinkFunction iterintlinkfunc; 4398 void* iterintlinkdata; 4399 GDestroyNotify iterintlinknotify; 4400 int numProbes; 4401 int numBlocked; 4402 GstPadPrivate* priv; 4403 union ABI 4404 { 4405 void*[4] GstReserved; 4406 struct Abi 4407 { 4408 GstFlowReturn lastFlowret; 4409 } 4410 Abi abi; 4411 } 4412 ABI abi; 4413 } 4414 4415 struct GstPadClass 4416 { 4417 GstObjectClass parentClass; 4418 extern(C) void function(GstPad* pad, GstPad* peer) linked; 4419 extern(C) void function(GstPad* pad, GstPad* peer) unlinked; 4420 void*[4] GstReserved; 4421 } 4422 4423 struct GstPadPrivate; 4424 4425 struct GstPadProbeInfo 4426 { 4427 /** 4428 * the current probe type 4429 */ 4430 GstPadProbeType type; 4431 /** 4432 * the id of the probe 4433 */ 4434 gulong id; 4435 /** 4436 * type specific data, check the @type field to know the 4437 * datatype. This field can be %NULL. 4438 */ 4439 void* data; 4440 /** 4441 * offset of pull probe, this field is valid when @type contains 4442 * #GST_PAD_PROBE_TYPE_PULL 4443 */ 4444 ulong offset; 4445 /** 4446 * size of pull probe, this field is valid when @type contains 4447 * #GST_PAD_PROBE_TYPE_PULL 4448 */ 4449 uint size; 4450 void*[4] GstReserved; 4451 } 4452 4453 struct GstPadTemplate 4454 { 4455 GstObject object; 4456 char* nameTemplate; 4457 GstPadDirection direction; 4458 GstPadPresence presence; 4459 GstCaps* caps; 4460 void*[4] GstReserved; 4461 } 4462 4463 struct GstPadTemplateClass 4464 { 4465 GstObjectClass parentClass; 4466 extern(C) void function(GstPadTemplate* templ, GstPad* pad) padCreated; 4467 void*[4] GstReserved; 4468 } 4469 4470 4471 /** 4472 * A GParamSpec derived structure that contains the meta data for fractional 4473 * properties. 4474 */ 4475 struct GstParamSpecFraction 4476 { 4477 /** 4478 * super class 4479 */ 4480 GParamSpec parentInstance; 4481 /** 4482 * minimal numerator 4483 */ 4484 int minNum; 4485 /** 4486 * minimal denominator 4487 */ 4488 int minDen; 4489 /** 4490 * maximal numerator 4491 */ 4492 int maxNum; 4493 /** 4494 * maximal denominator 4495 */ 4496 int maxDen; 4497 /** 4498 * default numerator 4499 */ 4500 int defNum; 4501 /** 4502 * default denominator 4503 */ 4504 int defDen; 4505 } 4506 4507 struct GstParseContext; 4508 4509 struct GstPipeline 4510 { 4511 GstBin bin; 4512 /** 4513 * The fixed clock of the pipeline, used when 4514 * GST_PIPELINE_FLAG_FIXED_CLOCK is set. 4515 */ 4516 GstClock* fixedClock; 4517 /** 4518 * The stream time of the pipeline. A better name for this 4519 * property would be the running_time, the total time spent in the 4520 * PLAYING state without being flushed. (deprecated, use the start_time 4521 * on GstElement). 4522 */ 4523 GstClockTime streamTime; 4524 /** 4525 * Extra delay added to base_time to compensate for computing delays 4526 * when setting elements to PLAYING. 4527 */ 4528 GstClockTime delay; 4529 GstPipelinePrivate* priv; 4530 void*[4] GstReserved; 4531 } 4532 4533 struct GstPipelineClass 4534 { 4535 GstBinClass parentClass; 4536 void*[4] GstReserved; 4537 } 4538 4539 struct GstPipelinePrivate; 4540 4541 struct GstPlugin; 4542 4543 struct GstPluginClass; 4544 4545 /** 4546 * A plugin should export a variable of this type called plugin_desc. The plugin 4547 * loader will use the data provided there to initialize the plugin. 4548 * 4549 * The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL, 4550 * BSD, MIT/X11, Proprietary, unknown. 4551 */ 4552 struct GstPluginDesc 4553 { 4554 /** 4555 * the major version number of core that plugin was compiled for 4556 */ 4557 int majorVersion; 4558 /** 4559 * the minor version number of core that plugin was compiled for 4560 */ 4561 int minorVersion; 4562 /** 4563 * a unique name of the plugin 4564 */ 4565 const(char)* name; 4566 /** 4567 * description of plugin 4568 */ 4569 const(char)* description; 4570 /** 4571 * pointer to the init function of this plugin. 4572 */ 4573 GstPluginInitFunc pluginInit; 4574 /** 4575 * version of the plugin 4576 */ 4577 const(char)* versio; 4578 /** 4579 * effective license of plugin 4580 */ 4581 const(char)* license; 4582 /** 4583 * source module plugin belongs to 4584 */ 4585 const(char)* source; 4586 /** 4587 * shipped package plugin belongs to 4588 */ 4589 const(char)* p; 4590 /** 4591 * URL to provider of plugin 4592 */ 4593 const(char)* origin; 4594 /** 4595 * date time string in ISO 8601 4596 * format (or rather, a subset thereof), or %NULL. Allowed are the 4597 * following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with 4598 * 'T' a separator and 'Z' indicating UTC/Zulu time). This field 4599 * should be set via the %GST_PACKAGE_RELEASE_DATETIME 4600 * preprocessor macro. 4601 */ 4602 const(char)* releaseDatetime; 4603 void*[4] GstReserved; 4604 } 4605 4606 struct GstPluginFeature; 4607 4608 struct GstPluginFeatureClass; 4609 4610 struct GstPoll; 4611 4612 struct GstPollFD 4613 { 4614 /** 4615 * a file descriptor 4616 */ 4617 int fd; 4618 int idx; 4619 } 4620 4621 struct GstPreset; 4622 4623 /** 4624 * #GstPreset interface. 4625 */ 4626 struct GstPresetInterface 4627 { 4628 /** 4629 * parent interface type. 4630 */ 4631 GTypeInterface parent; 4632 /** 4633 * 4634 * Params: 4635 * preset = a #GObject that implements #GstPreset 4636 * Return: list with names, use g_strfreev() after usage. 4637 */ 4638 extern(C) char** function(GstPreset* preset) getPresetNames; 4639 /** 4640 * 4641 * Params: 4642 * preset = a #GObject that implements #GstPreset 4643 * Return: an 4644 * array of property names which should be freed with g_strfreev() after use. 4645 */ 4646 extern(C) char** function(GstPreset* preset) getPropertyNames; 4647 /** 4648 * 4649 * Params: 4650 * preset = a #GObject that implements #GstPreset 4651 * name = preset name to load 4652 * Return: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4653 */ 4654 extern(C) int function(GstPreset* preset, const(char)* name) loadPreset; 4655 /** 4656 * 4657 * Params: 4658 * preset = a #GObject that implements #GstPreset 4659 * name = preset name to save 4660 * Return: %TRUE for success, %FALSE 4661 */ 4662 extern(C) int function(GstPreset* preset, const(char)* name) savePreset; 4663 /** 4664 * 4665 * Params: 4666 * preset = a #GObject that implements #GstPreset 4667 * oldName = current preset name 4668 * newName = new preset name 4669 * Return: %TRUE for success, %FALSE if e.g. there is no preset with @old_name 4670 */ 4671 extern(C) int function(GstPreset* preset, const(char)* oldName, const(char)* newName) renamePreset; 4672 /** 4673 * 4674 * Params: 4675 * preset = a #GObject that implements #GstPreset 4676 * name = preset name to remove 4677 * Return: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4678 */ 4679 extern(C) int function(GstPreset* preset, const(char)* name) deletePreset; 4680 /** 4681 * 4682 * Params: 4683 * preset = a #GObject that implements #GstPreset 4684 * name = preset name 4685 * tag = meta data item name 4686 * value = new value 4687 * Return: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4688 */ 4689 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, const(char)* value) setMeta; 4690 /** 4691 * 4692 * Params: 4693 * preset = a #GObject that implements #GstPreset 4694 * name = preset name 4695 * tag = meta data item name 4696 * value = value 4697 * Return: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4698 * or no value for the given @tag 4699 */ 4700 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, char** value) getMeta; 4701 void*[4] GstReserved; 4702 } 4703 4704 struct GstProxyPad 4705 { 4706 GstPad pad; 4707 GstProxyPadPrivate* priv; 4708 } 4709 4710 struct GstProxyPadClass 4711 { 4712 GstPadClass parentClass; 4713 void*[1] GstReserved; 4714 } 4715 4716 struct GstProxyPadPrivate; 4717 4718 struct GstQuery 4719 { 4720 /** 4721 * The parent #GstMiniObject type 4722 */ 4723 GstMiniObject miniObject; 4724 /** 4725 * the #GstQueryType 4726 */ 4727 GstQueryType type; 4728 } 4729 4730 struct GstRegistry 4731 { 4732 GstObject object; 4733 GstRegistryPrivate* priv; 4734 } 4735 4736 struct GstRegistryClass 4737 { 4738 GstObjectClass parentClass; 4739 } 4740 4741 struct GstRegistryPrivate; 4742 4743 struct GstSample; 4744 4745 struct GstSegment 4746 { 4747 /** 4748 * flags for this segment 4749 */ 4750 GstSegmentFlags flags; 4751 /** 4752 * the rate of the segment 4753 */ 4754 double rate; 4755 /** 4756 * the already applied rate to the segment 4757 */ 4758 double appliedRate; 4759 /** 4760 * the format of the segment values 4761 */ 4762 GstFormat format; 4763 /** 4764 * the base of the segment 4765 */ 4766 ulong base; 4767 /** 4768 * the offset to apply to @start or @stop 4769 */ 4770 ulong offset; 4771 /** 4772 * the start of the segment 4773 */ 4774 ulong start; 4775 /** 4776 * the stop of the segment 4777 */ 4778 ulong stop; 4779 /** 4780 * the stream time of the segment 4781 */ 4782 ulong time; 4783 /** 4784 * the position in the segment 4785 */ 4786 ulong position; 4787 /** 4788 * the duration of the segment 4789 */ 4790 ulong duration; 4791 void*[4] GstReserved; 4792 } 4793 4794 struct GstStaticCaps 4795 { 4796 /** 4797 * the cached #GstCaps 4798 */ 4799 GstCaps* caps; 4800 /** 4801 * a string describing a caps 4802 */ 4803 const(char)* str; 4804 void*[4] GstReserved; 4805 } 4806 4807 struct GstStaticPadTemplate 4808 { 4809 /** 4810 * the name of the template 4811 */ 4812 const(char)* nameTemplate; 4813 /** 4814 * the direction of the template 4815 */ 4816 GstPadDirection direction; 4817 /** 4818 * the presence of the template 4819 */ 4820 GstPadPresence presence; 4821 /** 4822 * the caps of the template. 4823 */ 4824 GstStaticCaps staticCaps; 4825 } 4826 4827 struct GstStructure 4828 { 4829 /** 4830 * the GType of a structure 4831 */ 4832 GType type; 4833 GQuark name; 4834 } 4835 4836 struct GstSystemClock 4837 { 4838 GstClock clock; 4839 GstSystemClockPrivate* priv; 4840 void*[4] GstReserved; 4841 } 4842 4843 struct GstSystemClockClass 4844 { 4845 GstClockClass parentClass; 4846 void*[4] GstReserved; 4847 } 4848 4849 struct GstSystemClockPrivate; 4850 4851 struct GstTagList 4852 { 4853 /** 4854 * the parent type 4855 */ 4856 GstMiniObject miniObject; 4857 } 4858 4859 struct GstTagSetter; 4860 4861 /** 4862 * #GstTagSetterInterface interface. 4863 */ 4864 struct GstTagSetterInterface 4865 { 4866 /** 4867 * parent interface type. 4868 */ 4869 GTypeInterface gIface; 4870 } 4871 4872 struct GstTask 4873 { 4874 GstObject object; 4875 /** 4876 * the state of the task 4877 */ 4878 GstTaskState state; 4879 /** 4880 * used to pause/resume the task 4881 */ 4882 GCond cond; 4883 /** 4884 * The lock taken when iterating the task function 4885 */ 4886 GRecMutex* lock; 4887 /** 4888 * the function executed by this task 4889 */ 4890 GstTaskFunction func; 4891 /** 4892 * user_data passed to the task function 4893 */ 4894 void* userData; 4895 /** 4896 * GDestroyNotify for @user_data 4897 */ 4898 GDestroyNotify notify; 4899 /** 4900 * a flag indicating that the task is running 4901 */ 4902 bool running; 4903 GThread* thread; 4904 GstTaskPrivate* priv; 4905 void*[4] GstReserved; 4906 } 4907 4908 struct GstTaskClass 4909 { 4910 GstObjectClass parentClass; 4911 GstTaskPool* pool; 4912 void*[4] GstReserved; 4913 } 4914 4915 struct GstTaskPool 4916 { 4917 GstObject object; 4918 GThreadPool* pool; 4919 void*[4] GstReserved; 4920 } 4921 4922 /** 4923 * The #GstTaskPoolClass object. 4924 */ 4925 struct GstTaskPoolClass 4926 { 4927 /** 4928 * the parent class structure 4929 */ 4930 GstObjectClass parentClass; 4931 extern(C) void function(GstTaskPool* pool, GError** err) prepare; 4932 extern(C) void function(GstTaskPool* pool) cleanup; 4933 /** 4934 * 4935 * Params: 4936 * pool = a #GstTaskPool 4937 * func = the function to call 4938 * userData = data to pass to @func 4939 * Return: a pointer that should be used 4940 * for the gst_task_pool_join function. This pointer can be %NULL, you 4941 * must check @error to detect errors. 4942 * 4943 * Throws: GException on failure. 4944 */ 4945 extern(C) void* function(GstTaskPool* pool, GstTaskPoolFunction func, void* userData, GError** err) push; 4946 extern(C) void function(GstTaskPool* pool, void* id) join; 4947 void*[4] GstReserved; 4948 } 4949 4950 struct GstTaskPrivate; 4951 4952 /** 4953 * Structure for saving a timestamp and a value. 4954 */ 4955 struct GstTimedValue 4956 { 4957 /** 4958 * timestamp of the value change 4959 */ 4960 GstClockTime timestamp; 4961 /** 4962 * the corresponding value 4963 */ 4964 double value; 4965 } 4966 4967 struct GstToc; 4968 4969 struct GstTocEntry; 4970 4971 struct GstTocSetter; 4972 4973 /** 4974 * #GstTocSetterInterface interface. 4975 */ 4976 struct GstTocSetterInterface 4977 { 4978 /** 4979 * parent interface type. 4980 */ 4981 GTypeInterface gIface; 4982 } 4983 4984 struct GstTypeFind 4985 { 4986 extern(C) ubyte* function(void* data, long offset, uint size) peek; 4987 extern(C) void function(void* data, uint probability, GstCaps* caps) suggest; 4988 /** 4989 * The data used by the caller of the typefinding function. 4990 */ 4991 void* data; 4992 extern(C) ulong function(void* data) getLength; 4993 void*[4] GstReserved; 4994 } 4995 4996 struct GstTypeFindFactory; 4997 4998 struct GstTypeFindFactoryClass; 4999 5000 struct GstURIHandler; 5001 5002 /** 5003 * Any #GstElement using this interface should implement these methods. 5004 */ 5005 struct GstURIHandlerInterface 5006 { 5007 /** 5008 * The parent interface type 5009 */ 5010 GTypeInterface parent; 5011 extern(C) GstURIType function(GType type) getType; 5012 extern(C) char** function(GType type) getProtocols; 5013 /** 5014 * 5015 * Params: 5016 * handler = A #GstURIHandler 5017 * Return: the URI currently handled by 5018 * the @handler. Returns %NULL if there are no URI currently 5019 * handled. The returned string must be freed with g_free() when no 5020 * longer needed. 5021 */ 5022 extern(C) char* function(GstURIHandler* handler) getUri; 5023 /** 5024 * 5025 * Params: 5026 * handler = A #GstURIHandler 5027 * uri = URI to set 5028 * Return: %TRUE if the URI was set successfully, else %FALSE. 5029 * 5030 * Throws: GException on failure. 5031 */ 5032 extern(C) int function(GstURIHandler* handler, const(char)* uri, GError** err) setUri; 5033 } 5034 5035 struct GstValueArray; 5036 5037 5038 /** 5039 * VTable for the #GValue @type. 5040 */ 5041 struct GstValueTable 5042 { 5043 /** 5044 * a #GType 5045 */ 5046 GType type; 5047 /** 5048 * a #GstValueCompareFunc 5049 */ 5050 GstValueCompareFunc compare; 5051 /** 5052 * a #GstValueSerializeFunc 5053 */ 5054 GstValueSerializeFunc serialize; 5055 /** 5056 * a #GstValueDeserializeFunc 5057 */ 5058 GstValueDeserializeFunc deserialize; 5059 void*[4] GstReserved; 5060 } 5061 5062 /** 5063 * A function that will be called from gst_buffer_foreach_meta(). The @meta 5064 * field will point to a the reference of the meta. 5065 * 5066 * @buffer should not be modified from this callback. 5067 * 5068 * When this function returns %TRUE, the next meta will be 5069 * returned. When %FALSE is returned, gst_buffer_foreach_meta() will return. 5070 * 5071 * When @meta is set to %NULL, the item will be removed from the buffer. 5072 * 5073 * Params: 5074 * buffer = a #GstBuffer 5075 * meta = a pointer to a #GstMeta 5076 * userData = user data passed to gst_buffer_foreach_meta() 5077 * 5078 * Return: %FALSE when gst_buffer_foreach_meta() should stop 5079 */ 5080 public alias extern(C) int function(GstBuffer* buffer, GstMeta** meta, void* userData) GstBufferForeachMetaFunc; 5081 5082 /** 5083 * A function that will be called from gst_buffer_list_foreach(). The @buffer 5084 * field will point to a the reference of the buffer at @idx. 5085 * 5086 * When this function returns %TRUE, the next buffer will be 5087 * returned. When %FALSE is returned, gst_buffer_list_foreach() will return. 5088 * 5089 * When @buffer is set to %NULL, the item will be removed from the bufferlist. 5090 * When @buffer has been made writable, the new buffer reference can be assigned 5091 * to @buffer. This function is responsible for unreffing the old buffer when 5092 * removing or modifying. 5093 * 5094 * Params: 5095 * buffer = pointer the buffer 5096 * idx = the index of @buffer 5097 * userData = user data passed to gst_buffer_list_foreach() 5098 * 5099 * Return: %FALSE when gst_buffer_list_foreach() should stop 5100 */ 5101 public alias extern(C) int function(GstBuffer** buffer, uint idx, void* userData) GstBufferListFunc; 5102 5103 /** 5104 * Specifies the type of function passed to gst_bus_add_watch() or 5105 * gst_bus_add_watch_full(), which is called from the mainloop when a message 5106 * is available on the bus. 5107 * 5108 * The message passed to the function will be unreffed after execution of this 5109 * function so it should not be freed in the function. 5110 * 5111 * Note that this function is used as a GSourceFunc which means that returning 5112 * %FALSE will remove the GSource from the mainloop. 5113 * 5114 * Params: 5115 * bus = the #GstBus that sent the message 5116 * message = the #GstMessage 5117 * userData = user data that has been given, when registering the handler 5118 * 5119 * Return: %FALSE if the event source should be removed. 5120 */ 5121 public alias extern(C) int function(GstBus* bus, GstMessage* message, void* userData) GstBusFunc; 5122 5123 /** 5124 * Handler will be invoked synchronously, when a new message has been injected 5125 * into the bus. This function is mostly used internally. Only one sync handler 5126 * can be attached to a given bus. 5127 * 5128 * If the handler returns GST_BUS_DROP, it should unref the message, else the 5129 * message should not be unreffed by the sync handler. 5130 * 5131 * Params: 5132 * bus = the #GstBus that sent the message 5133 * message = the #GstMessage 5134 * userData = user data that has been given, when registering the handler 5135 * 5136 * Return: #GstBusSyncReply stating what to do with the message 5137 */ 5138 public alias extern(C) GstBusSyncReply function(GstBus* bus, GstMessage* message, void* userData) GstBusSyncHandler; 5139 5140 /** 5141 * The function prototype of the callback. 5142 * 5143 * Params: 5144 * clock = The clock that triggered the callback 5145 * time = The time it was triggered 5146 * id = The #GstClockID that expired 5147 * userData = user data passed in the gst_clock_id_wait_async() function 5148 * 5149 * Return: %TRUE or %FALSE (currently unused) 5150 */ 5151 public alias extern(C) int function(GstClock* clock, GstClockTime time, GstClockID id, void* userData) GstClockCallback; 5152 5153 public alias extern(C) void function(GstControlBinding* binding, double srcValue, GValue* destValue) GstControlBindingConvert; 5154 5155 /** 5156 * Function for returning a value for a given timestamp. 5157 * 5158 * Params: 5159 * self = the #GstControlSource instance 5160 * timestamp = timestamp for which a value should be calculated 5161 * value = a #GValue which will be set to the result. It must be initialized to the correct type. 5162 * 5163 * Return: %TRUE if the value was successfully calculated. 5164 */ 5165 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, double* value) GstControlSourceGetValue; 5166 5167 /** 5168 * Function for returning an array of values for starting at a given timestamp. 5169 * 5170 * Params: 5171 * self = the #GstControlSource instance 5172 * timestamp = timestamp for which a value should be calculated 5173 * interval = the time spacing between subsequent values 5174 * nValues = the number of values 5175 * values = array to put control-values in 5176 * 5177 * Return: %TRUE if the values were successfully calculated. 5178 */ 5179 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, GstClockTime interval, uint nValues, double* values) GstControlSourceGetValueArray; 5180 5181 public alias extern(C) void function() GstDebugFuncPtr; 5182 5183 /** 5184 * This function will be called when creating a copy of @it and should 5185 * create a copy of all custom iterator fields or increase their 5186 * reference counts. 5187 * 5188 * Params: 5189 * it = The original iterator 5190 * copy = The copied iterator 5191 */ 5192 public alias extern(C) void function(GstIterator* it, GstIterator* copy) GstIteratorCopyFunction; 5193 5194 /** 5195 * A function to be passed to gst_iterator_fold(). 5196 * 5197 * Params: 5198 * item = the item to fold 5199 * ret = a #GValue collecting the result 5200 * userData = data passed to gst_iterator_fold() 5201 * 5202 * Return: %TRUE if the fold should continue, %FALSE if it should stop. 5203 */ 5204 public alias extern(C) int function(GValue* item, GValue* ret, void* userData) GstIteratorFoldFunction; 5205 5206 /** 5207 * A function that is called by gst_iterator_foreach() for every element. 5208 * 5209 * Params: 5210 * item = The item 5211 * userData = User data 5212 */ 5213 public alias extern(C) void function(GValue* item, void* userData) GstIteratorForeachFunction; 5214 5215 /** 5216 * This function will be called when the iterator is freed. 5217 * 5218 * Implementors of a #GstIterator should implement this 5219 * function and pass it to the constructor of the custom iterator. 5220 * The function will be called with the iterator lock held. 5221 * 5222 * Params: 5223 * it = the iterator 5224 */ 5225 public alias extern(C) void function(GstIterator* it) GstIteratorFreeFunction; 5226 5227 /** 5228 * The function that will be called after the next item of the iterator 5229 * has been retrieved. This function can be used to skip items or stop 5230 * the iterator. 5231 * 5232 * The function will be called with the iterator lock held. 5233 * 5234 * Params: 5235 * it = the iterator 5236 * item = the item being retrieved. 5237 * 5238 * Return: the result of the operation. 5239 */ 5240 public alias extern(C) GstIteratorItem function(GstIterator* it, GValue* item) GstIteratorItemFunction; 5241 5242 /** 5243 * The function that will be called when the next element of the iterator 5244 * should be retrieved. 5245 * 5246 * Implementors of a #GstIterator should implement this 5247 * function and pass it to the constructor of the custom iterator. 5248 * The function will be called with the iterator lock held. 5249 * 5250 * Params: 5251 * it = the iterator 5252 * result = a pointer to hold the next item 5253 * 5254 * Return: the result of the operation. 5255 */ 5256 public alias extern(C) GstIteratorResult function(GstIterator* it, GValue* result) GstIteratorNextFunction; 5257 5258 /** 5259 * This function will be called whenever a concurrent update happened 5260 * to the iterated datastructure. The implementor of the iterator should 5261 * restart the iterator from the beginning and clean up any state it might 5262 * have. 5263 * 5264 * Implementors of a #GstIterator should implement this 5265 * function and pass it to the constructor of the custom iterator. 5266 * The function will be called with the iterator lock held. 5267 * 5268 * Params: 5269 * it = the iterator 5270 */ 5271 public alias extern(C) void function(GstIterator* it) GstIteratorResyncFunction; 5272 5273 /** 5274 * Function prototype for a logging function that can be registered with 5275 * gst_debug_add_log_function(). 5276 * Use G_GNUC_NO_INSTRUMENT on that function. 5277 * 5278 * Params: 5279 * category = a #GstDebugCategory 5280 * level = a #GstDebugLevel 5281 * file = file name 5282 * funct = function name 5283 * line = line number 5284 * object = a #GObject 5285 * message = the message 5286 * userData = user data for the log function 5287 */ 5288 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; 5289 5290 /** 5291 * Copy @size bytes from @mem starting at @offset and return them wrapped in a 5292 * new GstMemory object. 5293 * If @size is set to -1, all bytes starting at @offset are copied. 5294 * 5295 * Params: 5296 * mem = a #GstMemory 5297 * offset = an offset 5298 * size = a size or -1 5299 * 5300 * Return: a new #GstMemory object wrapping a copy of the requested region in 5301 * @mem. 5302 */ 5303 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryCopyFunction; 5304 5305 /** 5306 * Check if @mem1 and @mem2 occupy contiguous memory and return the offset of 5307 * @mem1 in the parent buffer in @offset. 5308 * 5309 * Params: 5310 * mem1 = a #GstMemory 5311 * mem2 = a #GstMemory 5312 * offset = a result offset 5313 * 5314 * Return: %TRUE if @mem1 and @mem2 are in contiguous memory. 5315 */ 5316 public alias extern(C) int function(GstMemory* mem1, GstMemory* mem2, size_t* offset) GstMemoryIsSpanFunction; 5317 5318 /** 5319 * Get the memory of @mem that can be accessed according to the mode specified 5320 * in @flags. The function should return a pointer that contains at least 5321 * @maxsize bytes. 5322 * 5323 * Params: 5324 * mem = a #GstMemory 5325 * maxsize = size to map 5326 * flags = access mode for the memory 5327 * 5328 * Return: a pointer to memory of which at least @maxsize bytes can be 5329 * accessed according to the access pattern in @flags. 5330 */ 5331 public alias extern(C) void* function(GstMemory* mem, size_t maxsize, GstMapFlags flags) GstMemoryMapFunction; 5332 5333 /** 5334 * Share @size bytes from @mem starting at @offset and return them wrapped in a 5335 * new GstMemory object. If @size is set to -1, all bytes starting at @offset are 5336 * shared. This function does not make a copy of the bytes in @mem. 5337 * 5338 * Params: 5339 * mem = a #GstMemory 5340 * offset = an offset 5341 * size = a size or -1 5342 * 5343 * Return: a new #GstMemory object sharing the requested region in @mem. 5344 */ 5345 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryShareFunction; 5346 5347 /** 5348 * Return the pointer previously retrieved with gst_memory_map(). 5349 * 5350 * Params: 5351 * mem = a #GstMemory 5352 * 5353 * Return: %TRUE on success. 5354 */ 5355 public alias extern(C) void function(GstMemory* mem) GstMemoryUnmapFunction; 5356 5357 /** 5358 * Function called when @meta is freed in @buffer. 5359 * 5360 * Params: 5361 * meta = a #GstMeta 5362 * buffer = a #GstBuffer 5363 */ 5364 public alias extern(C) void function(GstMeta* meta, GstBuffer* buffer) GstMetaFreeFunction; 5365 5366 /** 5367 * Function called when @meta is initialized in @buffer. 5368 * 5369 * Params: 5370 * meta = a #GstMeta 5371 * params = parameters passed to the init function 5372 * buffer = a #GstBuffer 5373 */ 5374 public alias extern(C) int function(GstMeta* meta, void* params, GstBuffer* buffer) GstMetaInitFunction; 5375 5376 /** 5377 * Function called for each @meta in @buffer as a result of performing a 5378 * transformation on @transbuf. Additional @type specific transform data 5379 * is passed to the function as @data. 5380 * 5381 * Implementations should check the @type of the transform and parse 5382 * additional type specific fields in @data that should be used to update 5383 * the metadata on @transbuf. 5384 * 5385 * Params: 5386 * transbuf = a #GstBuffer 5387 * meta = a #GstMeta 5388 * buffer = a #GstBuffer 5389 * type = the transform type 5390 * data = transform specific data. 5391 * 5392 * Return: %TRUE if the transform could be performed 5393 */ 5394 public alias extern(C) int function(GstBuffer* transbuf, GstMeta* meta, GstBuffer* buffer, GQuark type, void* data) GstMetaTransformFunction; 5395 5396 /** 5397 * Function prototype for methods to create copies of instances. 5398 * 5399 * Params: 5400 * obj = MiniObject to copy 5401 * 5402 * Return: reference to cloned instance. 5403 */ 5404 public alias extern(C) GstMiniObject* function(GstMiniObject* obj) GstMiniObjectCopyFunction; 5405 5406 /** 5407 * Function prototype for when a miniobject has lost its last refcount. 5408 * Implementation of the mini object are allowed to revive the 5409 * passed object by doing a gst_mini_object_ref(). If the object is not 5410 * revived after the dispose function, the function should return %TRUE 5411 * and the memory associated with the object is freed. 5412 * 5413 * Params: 5414 * obj = MiniObject to dispose 5415 * 5416 * Return: %TRUE if the object should be cleaned up. 5417 */ 5418 public alias extern(C) int function(GstMiniObject* obj) GstMiniObjectDisposeFunction; 5419 5420 /** 5421 * Virtual function prototype for methods to free resources used by 5422 * mini-objects. 5423 * 5424 * Params: 5425 * obj = MiniObject to free 5426 */ 5427 public alias extern(C) void function(GstMiniObject* obj) GstMiniObjectFreeFunction; 5428 5429 /** 5430 * A #GstMiniObjectNotify function can be added to a mini object as a 5431 * callback that gets triggered when gst_mini_object_unref() drops the 5432 * last ref and @obj is about to be freed. 5433 * 5434 * Params: 5435 * userData = data that was provided when the notify was added 5436 * obj = the mini object 5437 */ 5438 public alias extern(C) void function(void* userData, GstMiniObject* obj) GstMiniObjectNotify; 5439 5440 /** 5441 * This function is called when the pad is activated during the element 5442 * READY to PAUSED state change. By default this function will call the 5443 * activate function that puts the pad in push mode but elements can 5444 * override this function to activate the pad in pull mode if they wish. 5445 * 5446 * Params: 5447 * pad = a #GstPad 5448 * parent = the parent of @pad 5449 * 5450 * Return: %TRUE if the pad could be activated. 5451 */ 5452 public alias extern(C) int function(GstPad* pad, GstObject* parent) GstPadActivateFunction; 5453 5454 /** 5455 * The prototype of the push and pull activate functions. 5456 * 5457 * Params: 5458 * pad = a #GstPad 5459 * parent = the parent of @pad 5460 * mode = the requested activation mode of @pad 5461 * active = activate or deactivate the pad. 5462 * 5463 * Return: %TRUE if the pad could be activated or deactivated. 5464 */ 5465 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstPadMode mode, int active) GstPadActivateModeFunction; 5466 5467 /** 5468 * A function that will be called on sinkpads when chaining buffers. 5469 * The function typically processes the data contained in the buffer and 5470 * either consumes the data or passes it on to the internally linked pad(s). 5471 * 5472 * The implementer of this function receives a refcount to @buffer and should 5473 * gst_buffer_unref() when the buffer is no longer needed. 5474 * 5475 * When a chain function detects an error in the data stream, it must post an 5476 * error on the bus and return an appropriate #GstFlowReturn value. 5477 * 5478 * Params: 5479 * pad = the sink #GstPad that performed the chain. 5480 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5481 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5482 * during the execution of this function. 5483 * buffer = the #GstBuffer that is chained, not %NULL. 5484 * 5485 * Return: #GST_FLOW_OK for success 5486 */ 5487 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBuffer* buffer) GstPadChainFunction; 5488 5489 /** 5490 * A function that will be called on sinkpads when chaining buffer lists. 5491 * The function typically processes the data contained in the buffer list and 5492 * either consumes the data or passes it on to the internally linked pad(s). 5493 * 5494 * The implementer of this function receives a refcount to @list and 5495 * should gst_buffer_list_unref() when the list is no longer needed. 5496 * 5497 * When a chainlist function detects an error in the data stream, it must 5498 * post an error on the bus and return an appropriate #GstFlowReturn value. 5499 * 5500 * Params: 5501 * pad = the sink #GstPad that performed the chain. 5502 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5503 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5504 * during the execution of this function. 5505 * list = the #GstBufferList that is chained, not %NULL. 5506 * 5507 * Return: #GST_FLOW_OK for success 5508 */ 5509 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBufferList* list) GstPadChainListFunction; 5510 5511 /** 5512 * Function signature to handle an event for the pad. 5513 * 5514 * Params: 5515 * pad = the #GstPad to handle the event. 5516 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5517 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5518 * during the execution of this function. 5519 * event = the #GstEvent to handle. 5520 * 5521 * Return: %TRUE if the pad could handle the event. 5522 */ 5523 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFunction; 5524 5525 /** 5526 * A forward function is called for all internally linked pads, see 5527 * gst_pad_forward(). 5528 * 5529 * Params: 5530 * pad = the #GstPad that is forwarded. 5531 * userData = the gpointer to optional user data. 5532 * 5533 * Return: %TRUE if the dispatching procedure has to be stopped. 5534 */ 5535 public alias extern(C) int function(GstPad* pad, void* userData) GstPadForwardFunction; 5536 5537 /** 5538 * This function will be called on source pads when a peer element 5539 * request a buffer at the specified @offset and @length. If this function 5540 * returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The 5541 * contents of @buffer is invalid for any other return value. 5542 * 5543 * This function is installed on a source pad with 5544 * gst_pad_set_getrange_function() and can only be called on source pads after 5545 * they are successfully activated with gst_pad_activate_mode() with the 5546 * #GST_PAD_MODE_PULL. 5547 * 5548 * @offset and @length are always given in byte units. @offset must normally be a value 5549 * between 0 and the length in bytes of the data available on @pad. The 5550 * length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a 5551 * #GST_QUERY_SEEKING. 5552 * 5553 * Any @offset larger or equal than the length will make the function return 5554 * #GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not 5555 * contain a valid buffer. 5556 * 5557 * The buffer size of @buffer will only be smaller than @length when @offset is 5558 * near the end of the stream. In all other cases, the size of @buffer must be 5559 * exactly the requested size. 5560 * 5561 * It is allowed to call this function with a 0 @length and valid @offset, in 5562 * which case @buffer will contain a 0-sized buffer and the function returns 5563 * #GST_FLOW_OK. 5564 * 5565 * When this function is called with a -1 @offset, the sequentially next buffer 5566 * of length @length in the stream is returned. 5567 * 5568 * When this function is called with a -1 @length, a buffer with a default 5569 * optimal length is returned in @buffer. The length might depend on the value 5570 * of @offset. 5571 * 5572 * Params: 5573 * pad = the src #GstPad to perform the getrange on. 5574 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5575 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5576 * during the execution of this function. 5577 * offset = the offset of the range 5578 * length = the length of the range 5579 * buffer = a memory location to hold the result buffer, cannot be %NULL. 5580 * 5581 * Return: #GST_FLOW_OK for success and a valid buffer in @buffer. Any other 5582 * return value leaves @buffer undefined. 5583 */ 5584 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, ulong offset, uint length, GstBuffer** buffer) GstPadGetRangeFunction; 5585 5586 /** 5587 * The signature of the internal pad link iterator function. 5588 * 5589 * Params: 5590 * pad = The #GstPad to query. 5591 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5592 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5593 * during the execution of this function. 5594 * 5595 * Return: a new #GstIterator that will iterate over all pads that are 5596 * linked to the given pad on the inside of the parent element. 5597 * 5598 * the caller must call gst_iterator_free() after usage. 5599 */ 5600 public alias extern(C) GstIterator* function(GstPad* pad, GstObject* parent) GstPadIterIntLinkFunction; 5601 5602 /** 5603 * Function signature to handle a new link on the pad. 5604 * 5605 * Params: 5606 * pad = the #GstPad that is linked. 5607 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5608 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5609 * during the execution of this function. 5610 * peer = the peer #GstPad of the link 5611 * 5612 * Return: the result of the link with the specified peer. 5613 */ 5614 public alias extern(C) GstPadLinkReturn function(GstPad* pad, GstObject* parent, GstPad* peer) GstPadLinkFunction; 5615 5616 /** 5617 * Callback used by gst_pad_add_probe(). Gets called to notify about the current 5618 * blocking type. 5619 * 5620 * The callback is allowed to modify the data pointer in @info. 5621 * 5622 * Params: 5623 * pad = the #GstPad that is blocked 5624 * info = #GstPadProbeInfo 5625 * userData = the gpointer to optional user data. 5626 * 5627 * Return: a #GstPadProbeReturn 5628 */ 5629 public alias extern(C) GstPadProbeReturn function(GstPad* pad, GstPadProbeInfo* info, void* userData) GstPadProbeCallback; 5630 5631 /** 5632 * The signature of the query function. 5633 * 5634 * Params: 5635 * pad = the #GstPad to query. 5636 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5637 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5638 * during the execution of this function. 5639 * query = the #GstQuery object to execute 5640 * 5641 * Return: %TRUE if the query could be performed. 5642 */ 5643 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstQuery* query) GstPadQueryFunction; 5644 5645 /** 5646 * Callback used by gst_pad_sticky_events_foreach(). 5647 * 5648 * When this function returns %TRUE, the next event will be 5649 * returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return. 5650 * 5651 * When @event is set to %NULL, the item will be removed from the list of sticky events. 5652 * @event can be replaced by assigning a new reference to it. 5653 * This function is responsible for unreffing the old event when 5654 * removing or modifying. 5655 * 5656 * Params: 5657 * pad = the #GstPad. 5658 * event = a sticky #GstEvent. 5659 * userData = the #gpointer to optional user data. 5660 * 5661 * Return: %TRUE if the iteration should continue 5662 */ 5663 public alias extern(C) int function(GstPad* pad, GstEvent** event, void* userData) GstPadStickyEventsForeachFunction; 5664 5665 /** 5666 * Function signature to handle a unlinking the pad prom its peer. 5667 * 5668 * Params: 5669 * pad = the #GstPad that is linked. 5670 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5671 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5672 * during the execution of this function. 5673 */ 5674 public alias extern(C) void function(GstPad* pad, GstObject* parent) GstPadUnlinkFunction; 5675 5676 /** 5677 * A function that can be used with e.g. gst_registry_feature_filter() 5678 * to get a list of pluginfeature that match certain criteria. 5679 * 5680 * Params: 5681 * feature = the pluginfeature to check 5682 * userData = the user_data that has been passed on e.g. 5683 * gst_registry_feature_filter() 5684 * 5685 * Return: %TRUE for a positive match, %FALSE otherwise 5686 */ 5687 public alias extern(C) int function(GstPluginFeature* feature, void* userData) GstPluginFeatureFilter; 5688 5689 /** 5690 * A function that can be used with e.g. gst_registry_plugin_filter() 5691 * to get a list of plugins that match certain criteria. 5692 * 5693 * Params: 5694 * plugin = the plugin to check 5695 * userData = the user_data that has been passed on e.g. gst_registry_plugin_filter() 5696 * 5697 * Return: %TRUE for a positive match, %FALSE otherwise 5698 */ 5699 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginFilter; 5700 5701 /** 5702 * A plugin should provide a pointer to a function of either #GstPluginInitFunc 5703 * or this type in the plugin_desc struct. 5704 * The function will be called by the loader at startup. One would then 5705 * register each #GstPluginFeature. This version allows 5706 * user data to be passed to init function (useful for bindings). 5707 * 5708 * Params: 5709 * plugin = The plugin object 5710 * userData = extra data 5711 * 5712 * Return: %TRUE if plugin initialised successfully 5713 */ 5714 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginInitFullFunc; 5715 5716 /** 5717 * A plugin should provide a pointer to a function of this type in the 5718 * plugin_desc struct. 5719 * This function will be called by the loader at startup. One would then 5720 * register each #GstPluginFeature. 5721 * 5722 * Params: 5723 * plugin = The plugin object 5724 * 5725 * Return: %TRUE if plugin initialised successfully 5726 */ 5727 public alias extern(C) int function(GstPlugin* plugin) GstPluginInitFunc; 5728 5729 /** 5730 * A function that will be called in gst_structure_foreach(). The function may 5731 * not modify @value. 5732 * 5733 * Params: 5734 * fieldId = the #GQuark of the field name 5735 * value = the #GValue of the field 5736 * userData = user data 5737 * 5738 * Return: %TRUE if the foreach operation should continue, %FALSE if 5739 * the foreach operation should stop with %FALSE. 5740 */ 5741 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureForeachFunc; 5742 5743 /** 5744 * A function that will be called in gst_structure_map_in_place(). The function 5745 * may modify @value. 5746 * 5747 * Params: 5748 * fieldId = the #GQuark of the field name 5749 * value = the #GValue of the field 5750 * userData = user data 5751 * 5752 * Return: %TRUE if the map operation should continue, %FALSE if 5753 * the map operation should stop with %FALSE. 5754 */ 5755 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureMapFunc; 5756 5757 /** 5758 * A function that will be called in gst_tag_list_foreach(). The function may 5759 * not modify the tag list. 5760 * 5761 * Params: 5762 * list = the #GstTagList 5763 * tag = a name of a tag in @list 5764 * userData = user data 5765 */ 5766 public alias extern(C) void function(GstTagList* list, const(char)* tag, void* userData) GstTagForeachFunc; 5767 5768 /** 5769 * A function for merging multiple values of a tag used when registering 5770 * tags. 5771 * 5772 * Params: 5773 * dest = the destination #GValue 5774 * src = the source #GValue 5775 */ 5776 public alias extern(C) void function(GValue* dest, GValue* src) GstTagMergeFunc; 5777 5778 /** 5779 * A function that will repeatedly be called in the thread created by 5780 * a #GstTask. 5781 * 5782 * Params: 5783 * userData = user data passed to the function 5784 */ 5785 public alias extern(C) void function(void* userData) GstTaskFunction; 5786 5787 /** 5788 * Task function, see gst_task_pool_push(). 5789 * 5790 * Params: 5791 * userData = user data for the task function 5792 */ 5793 public alias extern(C) void function(void* userData) GstTaskPoolFunction; 5794 5795 /** 5796 * Custom GstTask thread callback functions that can be installed. 5797 * 5798 * Params: 5799 * task = The #GstTask 5800 * thread = The #GThread 5801 * userData = user data 5802 */ 5803 public alias extern(C) void function(GstTask* task, GThread* thread, void* userData) GstTaskThreadFunc; 5804 5805 /** 5806 * A function that will be called by typefinding. 5807 * 5808 * Params: 5809 * find = A #GstTypeFind structure 5810 * userData = optional data to pass to the function 5811 */ 5812 public alias extern(C) void function(GstTypeFind* find, void* userData) GstTypeFindFunction; 5813 5814 /** 5815 * Used together with gst_value_compare() to compare #GValue items. 5816 * 5817 * Params: 5818 * value1 = first value for comparison 5819 * value2 = second value for comparison 5820 * 5821 * Return: one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN 5822 * or GST_VALUE_UNORDERED 5823 */ 5824 public alias extern(C) int function(GValue* value1, GValue* value2) GstValueCompareFunc; 5825 5826 /** 5827 * Used by gst_value_deserialize() to parse a non-binary form into the #GValue. 5828 * 5829 * Params: 5830 * dest = a #GValue 5831 * s = a string 5832 * 5833 * Return: %TRUE for success 5834 */ 5835 public alias extern(C) int function(GValue* dest, const(char)* s) GstValueDeserializeFunc; 5836 5837 /** 5838 * Used by gst_value_serialize() to obtain a non-binary form of the #GValue. 5839 * 5840 * Free-function: g_free 5841 * 5842 * Params: 5843 * value1 = a #GValue 5844 * 5845 * Return: the string representation of the value 5846 */ 5847 public alias extern(C) char* function(GValue* value1) GstValueSerializeFunc;