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