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