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