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 * These are the different state changes an element goes through. 2619 * %GST_STATE_NULL ⇒ %GST_STATE_PLAYING is called an upwards state change 2620 * and %GST_STATE_PLAYING ⇒ %GST_STATE_NULL a downwards state change. 2621 */ 2622 public enum GstStateChange 2623 { 2624 /** 2625 * state change from NULL to READY. 2626 * * The element must check if the resources it needs are available. Device 2627 * sinks and -sources typically try to probe the device to constrain their 2628 * caps. 2629 * * The element opens the device (in case feature need to be probed). 2630 */ 2631 NULL_TO_READY = 10, 2632 /** 2633 * state change from READY to PAUSED. 2634 * * The element pads are activated in order to receive data in PAUSED. 2635 * Streaming threads are started. 2636 * * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete 2637 * the state change when they have enough information. It is a requirement 2638 * for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change 2639 * when they receive the first buffer or %GST_EVENT_EOS (preroll). 2640 * Sinks also block the dataflow when in PAUSED. 2641 * * A pipeline resets the running_time to 0. 2642 * * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data. 2643 */ 2644 READY_TO_PAUSED = 19, 2645 /** 2646 * state change from PAUSED to PLAYING. 2647 * * Most elements ignore this state change. 2648 * * The pipeline selects a #GstClock and distributes this to all the children 2649 * before setting them to PLAYING. This means that it is only allowed to 2650 * synchronize on the #GstClock in the PLAYING state. 2651 * * The pipeline uses the #GstClock and the running_time to calculate the 2652 * base_time. The base_time is distributed to all children when performing 2653 * the state change. 2654 * * Sink elements stop blocking on the preroll buffer or event and start 2655 * rendering the data. 2656 * * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed 2657 * to post %GST_MESSAGE_EOS when not in the PLAYING state. 2658 * * While streaming in PAUSED or PLAYING elements can create and remove 2659 * sometimes pads. 2660 * * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS. 2661 */ 2662 PAUSED_TO_PLAYING = 28, 2663 /** 2664 * state change from PLAYING to PAUSED. 2665 * * Most elements ignore this state change. 2666 * * The pipeline calculates the running_time based on the last selected 2667 * #GstClock and the base_time. It stores this information to continue 2668 * playback when going back to the PLAYING state. 2669 * * Sinks unblock any #GstClock wait calls. 2670 * * When a sink does not have a pending buffer to play, it returns 2671 * #GST_STATE_CHANGE_ASYNC from this state change and completes the state 2672 * change when it receives a new buffer or an %GST_EVENT_EOS. 2673 * * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted 2674 * when going back to the PLAYING state. The EOS messages are queued in 2675 * #GstBin containers. 2676 * * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL. 2677 */ 2678 PLAYING_TO_PAUSED = 35, 2679 /** 2680 * state change from PAUSED to READY. 2681 * * Sinks unblock any waits in the preroll. 2682 * * Elements unblock any waits on devices 2683 * * Chain or get_range functions return %GST_FLOW_FLUSHING. 2684 * * The element pads are deactivated so that streaming becomes impossible and 2685 * all streaming threads are stopped. 2686 * * The sink forgets all negotiated formats 2687 * * Elements remove all sometimes pads 2688 */ 2689 PAUSED_TO_READY = 26, 2690 /** 2691 * state change from READY to NULL. 2692 * * Elements close devices 2693 * * Elements reset any internal state. 2694 */ 2695 READY_TO_NULL = 17, 2696 } 2697 alias GstStateChange StateChange; 2698 2699 /** 2700 * The possible return values from a state change function such as 2701 * gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure. 2702 */ 2703 public enum GstStateChangeReturn 2704 { 2705 /** 2706 * the state change failed 2707 */ 2708 FAILURE = 0, 2709 /** 2710 * the state change succeeded 2711 */ 2712 SUCCESS = 1, 2713 /** 2714 * the state change will happen asynchronously 2715 */ 2716 ASYNC = 2, 2717 /** 2718 * the state change succeeded but the element 2719 * cannot produce data in %GST_STATE_PAUSED. 2720 * This typically happens with live sources. 2721 */ 2722 NO_PREROLL = 3, 2723 } 2724 alias GstStateChangeReturn StateChangeReturn; 2725 2726 /** 2727 * Stream errors are for anything related to the stream being processed: 2728 * format errors, media type errors, ... 2729 * They're typically used by decoders, demuxers, converters, ... 2730 */ 2731 public enum GstStreamError 2732 { 2733 /** 2734 * a general error which doesn't fit in any other 2735 * category. Make sure you add a custom message to the error call. 2736 */ 2737 FAILED = 1, 2738 /** 2739 * do not use this except as a placeholder for 2740 * deciding where to go while developing code. 2741 */ 2742 TOO_LAZY = 2, 2743 /** 2744 * use this when you do not want to implement 2745 * this functionality yet. 2746 */ 2747 NOT_IMPLEMENTED = 3, 2748 /** 2749 * used when the element doesn't know the 2750 * stream's type. 2751 */ 2752 TYPE_NOT_FOUND = 4, 2753 /** 2754 * used when the element doesn't handle this type 2755 * of stream. 2756 */ 2757 WRONG_TYPE = 5, 2758 /** 2759 * used when there's no codec to handle the 2760 * stream's type. 2761 */ 2762 CODEC_NOT_FOUND = 6, 2763 /** 2764 * used when decoding fails. 2765 */ 2766 DECODE = 7, 2767 /** 2768 * used when encoding fails. 2769 */ 2770 ENCODE = 8, 2771 /** 2772 * used when demuxing fails. 2773 */ 2774 DEMUX = 9, 2775 /** 2776 * used when muxing fails. 2777 */ 2778 MUX = 10, 2779 /** 2780 * used when the stream is of the wrong format 2781 * (for example, wrong caps). 2782 */ 2783 FORMAT = 11, 2784 /** 2785 * used when the stream is encrypted and can't be 2786 * decrypted because this is not supported by the element. 2787 */ 2788 DECRYPT = 12, 2789 /** 2790 * used when the stream is encrypted and 2791 * can't be decrypted because no suitable key is available. 2792 */ 2793 DECRYPT_NOKEY = 13, 2794 /** 2795 * the number of stream error types. 2796 */ 2797 NUM_ERRORS = 14, 2798 } 2799 alias GstStreamError StreamError; 2800 2801 public enum GstStreamFlags 2802 { 2803 /** 2804 * This stream has no special attributes 2805 */ 2806 NONE = 0, 2807 /** 2808 * This stream is a sparse stream (e.g. a subtitle 2809 * stream), data may flow only in irregular intervals with large gaps in 2810 * between. 2811 */ 2812 SPARSE = 1, 2813 /** 2814 * This stream should be selected by default. This 2815 * flag may be used by demuxers to signal that a stream should be selected 2816 * by default in a playback scenario. 2817 */ 2818 SELECT = 2, 2819 /** 2820 * This stream should not be selected by default. 2821 * This flag may be used by demuxers to signal that a stream should not 2822 * be selected by default in a playback scenario, but only if explicitly 2823 * selected by the user (e.g. an audio track for the hard of hearing or 2824 * a director's commentary track). 2825 */ 2826 UNSELECT = 4, 2827 } 2828 alias GstStreamFlags StreamFlags; 2829 2830 /** 2831 * The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the 2832 * application of new streaming threads and their status. 2833 */ 2834 public enum GstStreamStatusType 2835 { 2836 /** 2837 * A new thread need to be created. 2838 */ 2839 CREATE = 0, 2840 /** 2841 * a thread entered its loop function 2842 */ 2843 ENTER = 1, 2844 /** 2845 * a thread left its loop function 2846 */ 2847 LEAVE = 2, 2848 /** 2849 * a thread is destroyed 2850 */ 2851 DESTROY = 3, 2852 /** 2853 * a thread is started 2854 */ 2855 START = 8, 2856 /** 2857 * a thread is paused 2858 */ 2859 PAUSE = 9, 2860 /** 2861 * a thread is stopped 2862 */ 2863 STOP = 10, 2864 } 2865 alias GstStreamStatusType StreamStatusType; 2866 2867 /** 2868 * #GstStreamType describes a high level classification set for 2869 * flows of data in #GstStream objects. 2870 * 2871 * Note that this is a flag, and therefore users should not assume it 2872 * will be a single value. Do not use the equality operator for checking 2873 * whether a stream is of a certain type. 2874 */ 2875 public enum GstStreamType 2876 { 2877 /** 2878 * The stream is of unknown (unclassified) type. 2879 */ 2880 UNKNOWN = 1, 2881 /** 2882 * The stream is of audio data 2883 */ 2884 AUDIO = 2, 2885 /** 2886 * The stream carries video data 2887 */ 2888 VIDEO = 4, 2889 /** 2890 * The stream is a muxed container type 2891 */ 2892 CONTAINER = 8, 2893 /** 2894 * The stream contains subtitle / subpicture data. 2895 */ 2896 TEXT = 16, 2897 } 2898 alias GstStreamType StreamType; 2899 2900 /** 2901 * The type of a %GST_MESSAGE_STRUCTURE_CHANGE. 2902 */ 2903 public enum GstStructureChangeType 2904 { 2905 /** 2906 * Pad linking is starting or done. 2907 */ 2908 LINK = 0, 2909 /** 2910 * Pad unlinking is starting or done. 2911 */ 2912 UNLINK = 1, 2913 } 2914 alias GstStructureChangeType StructureChangeType; 2915 2916 /** 2917 * Extra tag flags used when registering tags. 2918 */ 2919 public enum GstTagFlag 2920 { 2921 /** 2922 * undefined flag 2923 */ 2924 UNDEFINED = 0, 2925 /** 2926 * tag is meta data 2927 */ 2928 META = 1, 2929 /** 2930 * tag is encoded 2931 */ 2932 ENCODED = 2, 2933 /** 2934 * tag is decoded 2935 */ 2936 DECODED = 3, 2937 /** 2938 * number of tag flags 2939 */ 2940 COUNT = 4, 2941 } 2942 alias GstTagFlag TagFlag; 2943 2944 /** 2945 * The different tag merging modes are basically replace, overwrite and append, 2946 * but they can be seen from two directions. Given two taglists: (A) the tags 2947 * already in the element and (B) the ones that are supplied to the element ( 2948 * e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a 2949 * %GST_EVENT_TAG), how are these tags merged? 2950 * In the table below this is shown for the cases that a tag exists in the list 2951 * (A) or does not exists (!A) and combinations thereof. 2952 * 2953 * <table frame="all" colsep="1" rowsep="1"> 2954 * <title>merge mode</title> 2955 * <tgroup cols='5' align='left'> 2956 * <thead> 2957 * <row> 2958 * <entry>merge mode</entry> 2959 * <entry>A + B</entry> 2960 * <entry>A + !B</entry> 2961 * <entry>!A + B</entry> 2962 * <entry>!A + !B</entry> 2963 * </row> 2964 * </thead> 2965 * <tbody> 2966 * <row> 2967 * <entry>REPLACE_ALL</entry> 2968 * <entry>B</entry> 2969 * <entry>-</entry> 2970 * <entry>B</entry> 2971 * <entry>-</entry> 2972 * </row> 2973 * <row> 2974 * <entry>REPLACE</entry> 2975 * <entry>B</entry> 2976 * <entry>A</entry> 2977 * <entry>B</entry> 2978 * <entry>-</entry> 2979 * </row> 2980 * <row> 2981 * <entry>APPEND</entry> 2982 * <entry>A, B</entry> 2983 * <entry>A</entry> 2984 * <entry>B</entry> 2985 * <entry>-</entry> 2986 * </row> 2987 * <row> 2988 * <entry>PREPEND</entry> 2989 * <entry>B, A</entry> 2990 * <entry>A</entry> 2991 * <entry>B</entry> 2992 * <entry>-</entry> 2993 * </row> 2994 * <row> 2995 * <entry>KEEP</entry> 2996 * <entry>A</entry> 2997 * <entry>A</entry> 2998 * <entry>B</entry> 2999 * <entry>-</entry> 3000 * </row> 3001 * <row> 3002 * <entry>KEEP_ALL</entry> 3003 * <entry>A</entry> 3004 * <entry>A</entry> 3005 * <entry>-</entry> 3006 * <entry>-</entry> 3007 * </row> 3008 * </tbody> 3009 * </tgroup> 3010 * </table> 3011 */ 3012 public enum GstTagMergeMode 3013 { 3014 /** 3015 * undefined merge mode 3016 */ 3017 UNDEFINED = 0, 3018 /** 3019 * replace all tags (clear list and append) 3020 */ 3021 REPLACE_ALL = 1, 3022 /** 3023 * replace tags 3024 */ 3025 REPLACE = 2, 3026 /** 3027 * append tags 3028 */ 3029 APPEND = 3, 3030 /** 3031 * prepend tags 3032 */ 3033 PREPEND = 4, 3034 /** 3035 * keep existing tags 3036 */ 3037 KEEP = 5, 3038 /** 3039 * keep all existing tags 3040 */ 3041 KEEP_ALL = 6, 3042 /** 3043 * the number of merge modes 3044 */ 3045 COUNT = 7, 3046 } 3047 alias GstTagMergeMode TagMergeMode; 3048 3049 /** 3050 * GstTagScope specifies if a taglist applies to the complete 3051 * medium or only to one single stream. 3052 */ 3053 public enum GstTagScope 3054 { 3055 /** 3056 * tags specific to this single stream 3057 */ 3058 STREAM = 0, 3059 /** 3060 * global tags for the complete medium 3061 */ 3062 GLOBAL = 1, 3063 } 3064 alias GstTagScope TagScope; 3065 3066 /** 3067 * The different states a task can be in 3068 */ 3069 public enum GstTaskState 3070 { 3071 /** 3072 * the task is started and running 3073 */ 3074 STARTED = 0, 3075 /** 3076 * the task is stopped 3077 */ 3078 STOPPED = 1, 3079 /** 3080 * the task is paused 3081 */ 3082 PAUSED = 2, 3083 } 3084 alias GstTaskState TaskState; 3085 3086 /** 3087 * The different types of TOC entries (see #GstTocEntry). 3088 * 3089 * There are two types of TOC entries: alternatives or parts in a sequence. 3090 */ 3091 public enum GstTocEntryType 3092 { 3093 /** 3094 * entry is an angle (i.e. an alternative) 3095 */ 3096 ANGLE = -3, 3097 /** 3098 * entry is a version (i.e. alternative) 3099 */ 3100 VERSION = -2, 3101 /** 3102 * entry is an edition (i.e. alternative) 3103 */ 3104 EDITION = -1, 3105 /** 3106 * invalid entry type value 3107 */ 3108 INVALID = 0, 3109 /** 3110 * entry is a title (i.e. a part of a sequence) 3111 */ 3112 TITLE = 1, 3113 /** 3114 * entry is a track (i.e. a part of a sequence) 3115 */ 3116 TRACK = 2, 3117 /** 3118 * entry is a chapter (i.e. a part of a sequence) 3119 */ 3120 CHAPTER = 3, 3121 } 3122 alias GstTocEntryType TocEntryType; 3123 3124 /** 3125 * How a #GstTocEntry should be repeated. By default, entries are played a 3126 * single time. 3127 * 3128 * Since: 1.4 3129 */ 3130 public enum GstTocLoopType 3131 { 3132 /** 3133 * single forward playback 3134 */ 3135 NONE = 0, 3136 /** 3137 * repeat forward 3138 */ 3139 FORWARD = 1, 3140 /** 3141 * repeat backward 3142 */ 3143 REVERSE = 2, 3144 /** 3145 * repeat forward and backward 3146 */ 3147 PING_PONG = 3, 3148 } 3149 alias GstTocLoopType TocLoopType; 3150 3151 /** 3152 * The scope of a TOC. 3153 */ 3154 public enum GstTocScope 3155 { 3156 /** 3157 * global TOC representing all selectable options 3158 * (this is what applications are usually interested in) 3159 */ 3160 GLOBAL = 1, 3161 /** 3162 * TOC for the currently active/selected stream 3163 * (this is a TOC representing the current stream from start to EOS, 3164 * and is what a TOC writer / muxer is usually interested in; it will 3165 * usually be a subset of the global TOC, e.g. just the chapters of 3166 * the current title, or the chapters selected for playback from the 3167 * current title) 3168 */ 3169 CURRENT = 2, 3170 } 3171 alias GstTocScope TocScope; 3172 3173 /** 3174 * Flag that describe the value. These flags help applications processing the 3175 * logs to understand the values. 3176 */ 3177 public enum GstTracerValueFlags 3178 { 3179 /** 3180 * no flags 3181 */ 3182 NONE = 0, 3183 /** 3184 * the value is optional. When using this flag 3185 * one need to have an additional boolean arg before this value in the 3186 * var-args list passed to gst_tracer_record_log(). 3187 */ 3188 OPTIONAL = 1, 3189 /** 3190 * the value is a combined figure, since the 3191 * start of tracing. Examples are averages or timestamps. 3192 */ 3193 AGGREGATED = 2, 3194 } 3195 alias GstTracerValueFlags TracerValueFlags; 3196 3197 /** 3198 * Tracing record will contain fields that contain a meassured value or extra 3199 * meta-data. One such meta data are values that tell where a measurement was 3200 * taken. This enumerating declares to which scope such a meta data field 3201 * relates to. If it is e.g. %GST_TRACER_VALUE_SCOPE_PAD, then each of the log 3202 * events may contain values for different #GstPads. 3203 * 3204 * Since: 1.8 3205 */ 3206 public enum GstTracerValueScope 3207 { 3208 /** 3209 * the value is related to the process 3210 */ 3211 PROCESS = 0, 3212 /** 3213 * the value is related to a thread 3214 */ 3215 THREAD = 1, 3216 /** 3217 * the value is related to an #GstElement 3218 */ 3219 ELEMENT = 2, 3220 /** 3221 * the value is related to a #GstPad 3222 */ 3223 PAD = 3, 3224 } 3225 alias GstTracerValueScope TracerValueScope; 3226 3227 /** 3228 * The probability of the typefind function. Higher values have more certainty 3229 * in doing a reliable typefind. 3230 */ 3231 public enum GstTypeFindProbability 3232 { 3233 /** 3234 * type undetected. 3235 */ 3236 NONE = 0, 3237 /** 3238 * unlikely typefind. 3239 */ 3240 MINIMUM = 1, 3241 /** 3242 * possible type detected. 3243 */ 3244 POSSIBLE = 50, 3245 /** 3246 * likely a type was detected. 3247 */ 3248 LIKELY = 80, 3249 /** 3250 * nearly certain that a type was detected. 3251 */ 3252 NEARLY_CERTAIN = 99, 3253 /** 3254 * very certain a type was detected. 3255 */ 3256 MAXIMUM = 100, 3257 } 3258 alias GstTypeFindProbability TypeFindProbability; 3259 3260 /** 3261 * Different URI-related errors that can occur. 3262 */ 3263 public enum GstURIError 3264 { 3265 /** 3266 * The protocol is not supported 3267 */ 3268 UNSUPPORTED_PROTOCOL = 0, 3269 /** 3270 * There was a problem with the URI 3271 */ 3272 BAD_URI = 1, 3273 /** 3274 * Could not set or change the URI because the 3275 * URI handler was in a state where that is not possible or not permitted 3276 */ 3277 BAD_STATE = 2, 3278 /** 3279 * There was a problem with the entity that 3280 * the URI references 3281 */ 3282 BAD_REFERENCE = 3, 3283 } 3284 alias GstURIError URIError; 3285 3286 /** 3287 * The different types of URI direction. 3288 */ 3289 public enum GstURIType 3290 { 3291 /** 3292 * The URI direction is unknown 3293 */ 3294 UNKNOWN = 0, 3295 /** 3296 * The URI is a consumer. 3297 */ 3298 SINK = 1, 3299 /** 3300 * The URI is a producer. 3301 */ 3302 SRC = 2, 3303 } 3304 alias GstURIType URIType; 3305 3306 struct GstAllocationParams 3307 { 3308 /** 3309 * flags to control allocation 3310 */ 3311 GstMemoryFlags flags; 3312 /** 3313 * the desired alignment of the memory 3314 */ 3315 size_t alig; 3316 /** 3317 * the desired prefix 3318 */ 3319 size_t prefix; 3320 /** 3321 * the desired padding 3322 */ 3323 size_t padding; 3324 void*[4] GstReserved; 3325 } 3326 3327 struct GstAllocator 3328 { 3329 GstObject object; 3330 const(char)* memType; 3331 /** 3332 * the implementation of the GstMemoryMapFunction 3333 */ 3334 GstMemoryMapFunction memMap; 3335 /** 3336 * the implementation of the GstMemoryUnmapFunction 3337 */ 3338 GstMemoryUnmapFunction memUnmap; 3339 /** 3340 * the implementation of the GstMemoryCopyFunction 3341 */ 3342 GstMemoryCopyFunction memCopy; 3343 /** 3344 * the implementation of the GstMemoryShareFunction 3345 */ 3346 GstMemoryShareFunction memShare; 3347 /** 3348 * the implementation of the GstMemoryIsSpanFunction 3349 */ 3350 GstMemoryIsSpanFunction memIsSpan; 3351 /** 3352 * the implementation of the GstMemoryMapFullFunction. 3353 * Will be used instead of @mem_map if present. (Since 1.6) 3354 */ 3355 GstMemoryMapFullFunction memMapFull; 3356 /** 3357 * the implementation of the GstMemoryUnmapFullFunction. 3358 * Will be used instead of @mem_unmap if present. (Since 1.6) 3359 */ 3360 GstMemoryUnmapFullFunction memUnmapFull; 3361 void*[2] GstReserved; 3362 GstAllocatorPrivate* priv; 3363 } 3364 3365 /** 3366 * The #GstAllocator is used to create new memory. 3367 */ 3368 struct GstAllocatorClass 3369 { 3370 /** 3371 * Object parent class 3372 */ 3373 GstObjectClass objectClass; 3374 /** 3375 * 3376 * Params: 3377 * allocator = a #GstAllocator to use 3378 * size = size of the visible memory area 3379 * params = optional parameters 3380 * Returns: a new #GstMemory. 3381 */ 3382 extern(C) GstMemory* function(GstAllocator* allocator, size_t size, GstAllocationParams* params) alloc; 3383 /** */ 3384 extern(C) void function(GstAllocator* allocator, GstMemory* memory) free; 3385 void*[4] GstReserved; 3386 } 3387 3388 struct GstAllocatorPrivate; 3389 3390 struct GstAtomicQueue; 3391 3392 struct GstBin 3393 { 3394 GstElement element; 3395 /** 3396 * the number of children in this bin 3397 */ 3398 int numchildren; 3399 /** 3400 * the list of children in this bin 3401 */ 3402 GList* children; 3403 /** 3404 * updated whenever @children changes 3405 */ 3406 uint childrenCookie; 3407 /** 3408 * internal bus for handling child messages 3409 */ 3410 GstBus* childBus; 3411 /** 3412 * queued and cached messages 3413 */ 3414 GList* messages; 3415 /** 3416 * the bin is currently calculating its state 3417 */ 3418 bool polling; 3419 /** 3420 * the bin needs to recalculate its state (deprecated) 3421 */ 3422 bool stateDirty; 3423 /** 3424 * the bin needs to select a new clock 3425 */ 3426 bool clockDirty; 3427 /** 3428 * the last clock selected 3429 */ 3430 GstClock* providedClock; 3431 /** 3432 * the element that provided @provided_clock 3433 */ 3434 GstElement* clockProvider; 3435 GstBinPrivate* priv; 3436 void*[4] GstReserved; 3437 } 3438 3439 /** 3440 * Subclasses can override the @add_element and @remove_element to 3441 * update the list of children in the bin. 3442 * 3443 * The @handle_message method can be overridden to implement custom 3444 * message handling. @handle_message takes ownership of the message, just like 3445 * #gst_element_post_message. 3446 * 3447 * The @deep_element_added vfunc will be called when a new element has been 3448 * added to any bin inside this bin, so it will also be called if a new child 3449 * was added to a sub-bin of this bin. #GstBin implementations that override 3450 * this message should chain up to the parent class implementation so the 3451 * element-added-deep signal is emitted on all parents. 3452 */ 3453 struct GstBinClass 3454 { 3455 /** 3456 * bin parent class 3457 */ 3458 GstElementClass parentClass; 3459 GThreadPool* pool; 3460 /** */ 3461 extern(C) void function(GstBin* bin, GstElement* child) elementAdded; 3462 /** */ 3463 extern(C) void function(GstBin* bin, GstElement* child) elementRemoved; 3464 /** */ 3465 extern(C) int function(GstBin* bin, GstElement* element) addElement; 3466 /** */ 3467 extern(C) int function(GstBin* bin, GstElement* element) removeElement; 3468 /** */ 3469 extern(C) void function(GstBin* bin, GstMessage* message) handleMessage; 3470 /** */ 3471 extern(C) int function(GstBin* bin) doLatency; 3472 /** */ 3473 extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementAdded; 3474 /** */ 3475 extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementRemoved; 3476 void*[2] GstReserved; 3477 } 3478 3479 struct GstBinPrivate; 3480 3481 3482 struct GstBuffer 3483 { 3484 /** 3485 * the parent structure 3486 */ 3487 GstMiniObject miniObject; 3488 /** 3489 * pointer to the pool owner of the buffer 3490 */ 3491 GstBufferPool* pool; 3492 /** 3493 * presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3494 * pts is not known or relevant. The pts contains the timestamp when the 3495 * media should be presented to the user. 3496 */ 3497 GstClockTime pts; 3498 /** 3499 * decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the 3500 * dts is not known or relevant. The dts contains the timestamp when the 3501 * media should be processed. 3502 */ 3503 GstClockTime dts; 3504 /** 3505 * duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE 3506 * when the duration is not known or relevant. 3507 */ 3508 GstClockTime duration; 3509 /** 3510 * a media specific offset for the buffer data. 3511 * For video frames, this is the frame number of this buffer. 3512 * For audio samples, this is the offset of the first sample in this buffer. 3513 * For file data or compressed data this is the byte offset of the first 3514 * byte in this buffer. 3515 */ 3516 ulong offset; 3517 /** 3518 * the last offset contained in this buffer. It has the same 3519 * format as @offset. 3520 */ 3521 ulong offsetEnd; 3522 } 3523 3524 struct GstBufferList; 3525 3526 struct GstBufferPool 3527 { 3528 GstObject object; 3529 int flushing; 3530 GstBufferPoolPrivate* priv; 3531 void*[4] GstReserved; 3532 } 3533 3534 /** 3535 * Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the 3536 * allocation of the buffer. 3537 * 3538 * The default implementation ignores the @start and @stop members but other 3539 * implementations can use this extra information to decide what buffer to 3540 * return. 3541 */ 3542 struct GstBufferPoolAcquireParams 3543 { 3544 /** 3545 * the format of @start and @stop 3546 */ 3547 GstFormat format; 3548 /** 3549 * the start position 3550 */ 3551 long start; 3552 /** 3553 * the stop position 3554 */ 3555 long stop; 3556 /** 3557 * additional flags 3558 */ 3559 GstBufferPoolAcquireFlags flags; 3560 void*[4] GstReserved; 3561 } 3562 3563 /** 3564 * The GstBufferPool class. 3565 */ 3566 struct GstBufferPoolClass 3567 { 3568 /** 3569 * Object parent class 3570 */ 3571 GstObjectClass objectClass; 3572 /** 3573 * 3574 * Params: 3575 * pool = a #GstBufferPool 3576 * Returns: a %NULL terminated array 3577 * of strings. 3578 */ 3579 extern(C) char** function(GstBufferPool* pool) getOptions; 3580 /** 3581 * 3582 * Params: 3583 * pool = a #GstBufferPool 3584 * config = a #GstStructure 3585 * Returns: %TRUE when the configuration could be set. 3586 */ 3587 extern(C) int function(GstBufferPool* pool, GstStructure* config) setConfig; 3588 /** */ 3589 extern(C) int function(GstBufferPool* pool) start; 3590 /** */ 3591 extern(C) int function(GstBufferPool* pool) stop; 3592 /** 3593 * 3594 * Params: 3595 * pool = a #GstBufferPool 3596 * buffer = a location for a #GstBuffer 3597 * params = parameters. 3598 * Returns: a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is 3599 * inactive. 3600 */ 3601 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) acquireBuffer; 3602 /** */ 3603 extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) allocBuffer; 3604 /** */ 3605 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) resetBuffer; 3606 /** */ 3607 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) releaseBuffer; 3608 /** */ 3609 extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) freeBuffer; 3610 /** */ 3611 extern(C) void function(GstBufferPool* pool) flushStart; 3612 /** */ 3613 extern(C) void function(GstBufferPool* pool) flushStop; 3614 void*[2] GstReserved; 3615 } 3616 3617 struct GstBufferPoolPrivate; 3618 3619 struct GstBus 3620 { 3621 GstObject object; 3622 GstBusPrivate* priv; 3623 void*[4] GstReserved; 3624 } 3625 3626 struct GstBusClass 3627 { 3628 GstObjectClass parentClass; 3629 /** */ 3630 extern(C) void function(GstBus* bus, GstMessage* message) message; 3631 /** */ 3632 extern(C) void function(GstBus* bus, GstMessage* message) syncMessage; 3633 void*[4] GstReserved; 3634 } 3635 3636 struct GstBusPrivate; 3637 3638 struct GstCaps 3639 { 3640 /** 3641 * the parent type 3642 */ 3643 GstMiniObject miniObject; 3644 } 3645 3646 struct GstCapsFeatures; 3647 3648 struct GstChildProxy; 3649 3650 /** 3651 * #GstChildProxy interface. 3652 */ 3653 struct GstChildProxyInterface 3654 { 3655 /** 3656 * parent interface type. 3657 */ 3658 GTypeInterface parent; 3659 /** 3660 * 3661 * Params: 3662 * parent = the parent object to get the child from 3663 * name = the child's name 3664 * Returns: the child object or %NULL if 3665 * not found. Unref after usage. 3666 * 3667 * MT safe. 3668 */ 3669 extern(C) GObject* function(GstChildProxy* parent, const(char)* name) getChildByName; 3670 /** 3671 * 3672 * Params: 3673 * parent = the parent object to get the child from 3674 * index = the child's position in the child list 3675 * Returns: the child object or %NULL if 3676 * not found (index too high). Unref after usage. 3677 * 3678 * MT safe. 3679 */ 3680 extern(C) GObject* function(GstChildProxy* parent, uint index) getChildByIndex; 3681 /** 3682 * 3683 * Params: 3684 * parent = the parent object 3685 * Returns: the number of child objects 3686 * 3687 * MT safe. 3688 */ 3689 extern(C) uint function(GstChildProxy* parent) getChildrenCount; 3690 /** */ 3691 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childAdded; 3692 /** */ 3693 extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childRemoved; 3694 void*[4] GstReserved; 3695 } 3696 3697 struct GstClock 3698 { 3699 GstObject object; 3700 GstClockPrivate* priv; 3701 void*[4] GstReserved; 3702 } 3703 3704 /** 3705 * GStreamer clock class. Override the vmethods to implement the clock 3706 * functionality. 3707 */ 3708 struct GstClockClass 3709 { 3710 /** 3711 * the parent class structure 3712 */ 3713 GstObjectClass parentClass; 3714 /** */ 3715 extern(C) GstClockTime function(GstClock* clock, GstClockTime oldResolution, GstClockTime newResolution) changeResolution; 3716 /** 3717 * 3718 * Params: 3719 * clock = a #GstClock 3720 * Returns: the resolution of the clock in units of #GstClockTime. 3721 * 3722 * MT safe. 3723 */ 3724 extern(C) GstClockTime function(GstClock* clock) getResolution; 3725 /** 3726 * 3727 * Params: 3728 * clock = a #GstClock to query 3729 * Returns: the internal time of the clock. Or GST_CLOCK_TIME_NONE when 3730 * given invalid input. 3731 * 3732 * MT safe. 3733 */ 3734 extern(C) GstClockTime function(GstClock* clock) getInternalTime; 3735 /** */ 3736 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry, GstClockTimeDiff* jitter) wait; 3737 /** */ 3738 extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry) waitAsync; 3739 /** */ 3740 extern(C) void function(GstClock* clock, GstClockEntry* entry) unschedule; 3741 void*[4] GstReserved; 3742 } 3743 3744 /** 3745 * All pending timeouts or periodic notifies are converted into 3746 * an entry. 3747 * Note that GstClockEntry should be treated as an opaque structure. It must 3748 * not be extended or allocated using a custom allocator. 3749 */ 3750 struct GstClockEntry 3751 { 3752 /** 3753 * reference counter (read-only) 3754 */ 3755 int refcount; 3756 GstClock* clock; 3757 GstClockEntryType type; 3758 GstClockTime time; 3759 GstClockTime interval; 3760 GstClockReturn status; 3761 GstClockCallback func; 3762 void* userData; 3763 GDestroyNotify destroyData; 3764 bool unscheduled; 3765 bool wokenUp; 3766 void*[4] GstReserved; 3767 } 3768 3769 struct GstClockPrivate; 3770 3771 struct GstContext; 3772 3773 struct GstControlBinding 3774 { 3775 GstObject parent; 3776 /** 3777 * name of the property of this binding 3778 */ 3779 char* name; 3780 /** 3781 * #GParamSpec for this property 3782 */ 3783 GParamSpec* pspec; 3784 GstObject* object; 3785 bool disabled; 3786 union ABI 3787 { 3788 struct Abi 3789 { 3790 GstControlBindingPrivate* priv; 3791 } 3792 Abi abi; 3793 void*[4] GstReserved; 3794 } 3795 ABI abi; 3796 } 3797 3798 /** 3799 * The class structure of #GstControlBinding. 3800 */ 3801 struct GstControlBindingClass 3802 { 3803 /** 3804 * Parent class 3805 */ 3806 GstObjectClass parentClass; 3807 /** 3808 * 3809 * Params: 3810 * binding = the control binding 3811 * object = the object that has controlled properties 3812 * timestamp = the time that should be processed 3813 * lastSync = the last time this was called 3814 * Returns: %TRUE if the controller value could be applied to the object 3815 * property, %FALSE otherwise 3816 */ 3817 extern(C) int function(GstControlBinding* binding, GstObject* object, GstClockTime timestamp, GstClockTime lastSync) syncValues; 3818 /** 3819 * 3820 * Params: 3821 * binding = the control binding 3822 * timestamp = the time the control-change should be read from 3823 * Returns: the GValue of the property at the given time, 3824 * or %NULL if the property isn't controlled. 3825 */ 3826 extern(C) GValue* function(GstControlBinding* binding, GstClockTime timestamp) getValue; 3827 /** 3828 * 3829 * Params: 3830 * binding = the control binding 3831 * timestamp = the time that should be processed 3832 * interval = the time spacing between subsequent values 3833 * nValues = the number of values 3834 * values = array to put control-values in 3835 * Returns: %TRUE if the given array could be filled, %FALSE otherwise 3836 */ 3837 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, void* values) getValueArray; 3838 /** 3839 * 3840 * Params: 3841 * binding = the control binding 3842 * timestamp = the time that should be processed 3843 * interval = the time spacing between subsequent values 3844 * nValues = the number of values 3845 * values = array to put control-values in 3846 * Returns: %TRUE if the given array could be filled, %FALSE otherwise 3847 */ 3848 extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, GValue* values) getGValueArray; 3849 void*[4] GstReserved; 3850 } 3851 3852 struct GstControlBindingPrivate; 3853 3854 struct GstControlSource 3855 { 3856 GstObject parent; 3857 /** 3858 * Function for returning a value for a given timestamp 3859 */ 3860 GstControlSourceGetValue getValue; 3861 /** 3862 * Function for returning a values array for a given timestamp 3863 */ 3864 GstControlSourceGetValueArray getValueArray; 3865 void*[4] GstReserved; 3866 } 3867 3868 /** 3869 * The class structure of #GstControlSource. 3870 */ 3871 struct GstControlSourceClass 3872 { 3873 /** 3874 * Parent class 3875 */ 3876 GstObjectClass parentClass; 3877 void*[4] GstReserved; 3878 } 3879 3880 struct GstDateTime; 3881 3882 struct GstDebugCategory 3883 { 3884 int threshold; 3885 uint color; 3886 const(char)* name; 3887 const(char)* description; 3888 } 3889 3890 struct GstDebugMessage; 3891 3892 struct GstDevice 3893 { 3894 /** 3895 * The parent #GstObject strucuture. 3896 */ 3897 GstObject parent; 3898 GstDevicePrivate* priv; 3899 void*[4] GstReserved; 3900 } 3901 3902 /** 3903 * The class structure for a #GstDevice object. 3904 * 3905 * Since: 1.4 3906 */ 3907 struct GstDeviceClass 3908 { 3909 /** 3910 * The parent #GstObjectClass strucuture. 3911 */ 3912 GstObjectClass parentClass; 3913 /** 3914 * 3915 * Params: 3916 * device = a #GstDevice 3917 * name = name of new element, or %NULL to automatically 3918 * create a unique name. 3919 * Returns: a new #GstElement configured to use this device 3920 */ 3921 extern(C) GstElement* function(GstDevice* device, const(char)* name) createElement; 3922 /** 3923 * 3924 * Params: 3925 * device = a #GstDevice 3926 * element = a #GstElement 3927 * Returns: %TRUE if the element could be reconfigured to use this device, 3928 * %FALSE otherwise. 3929 */ 3930 extern(C) int function(GstDevice* device, GstElement* element) reconfigureElement; 3931 void*[4] GstReserved; 3932 } 3933 3934 struct GstDeviceMonitor 3935 { 3936 /** 3937 * the parent #GstObject structure 3938 */ 3939 GstObject parent; 3940 GstDeviceMonitorPrivate* priv; 3941 void*[4] GstReserved; 3942 } 3943 3944 /** 3945 * Opaque device monitor class structure. 3946 * 3947 * Since: 1.4 3948 */ 3949 struct GstDeviceMonitorClass 3950 { 3951 /** 3952 * the parent #GstObjectClass structure 3953 */ 3954 GstObjectClass parentClass; 3955 void*[4] GstReserved; 3956 } 3957 3958 struct GstDeviceMonitorPrivate; 3959 3960 struct GstDevicePrivate; 3961 3962 struct GstDeviceProvider 3963 { 3964 /** 3965 * The parent #GstObject 3966 */ 3967 GstObject parent; 3968 /** 3969 * a #GList of the #GstDevice objects 3970 */ 3971 GList* devices; 3972 GstDeviceProviderPrivate* priv; 3973 void*[4] GstReserved; 3974 } 3975 3976 struct GstDeviceProviderClass 3977 { 3978 /** 3979 * the parent #GstObjectClass structure 3980 */ 3981 GstObjectClass parentClass; 3982 /** 3983 * a pointer to the #GstDeviceProviderFactory that creates this 3984 * provider 3985 */ 3986 GstDeviceProviderFactory* factory; 3987 /** */ 3988 extern(C) GList* function(GstDeviceProvider* provider) probe; 3989 /** 3990 * 3991 * Params: 3992 * provider = A #GstDeviceProvider 3993 * Returns: %TRUE if the device providering could be started 3994 */ 3995 extern(C) int function(GstDeviceProvider* provider) start; 3996 /** */ 3997 extern(C) void function(GstDeviceProvider* provider) stop; 3998 void* metadata; 3999 void*[4] GstReserved; 4000 } 4001 4002 struct GstDeviceProviderFactory; 4003 4004 /** 4005 * The opaque #GstDeviceProviderFactoryClass data structure. 4006 * 4007 * Since: 1.4 4008 */ 4009 struct GstDeviceProviderFactoryClass; 4010 4011 struct GstDeviceProviderPrivate; 4012 4013 4014 struct GstDynamicTypeFactory; 4015 4016 struct GstDynamicTypeFactoryClass; 4017 4018 struct GstElement 4019 { 4020 GstObject object; 4021 /** 4022 * Used to serialize execution of gst_element_set_state() 4023 */ 4024 GRecMutex stateLock; 4025 /** 4026 * Used to signal completion of a state change 4027 */ 4028 GCond stateCond; 4029 /** 4030 * Used to detect concurrent execution of 4031 * gst_element_set_state() and gst_element_get_state() 4032 */ 4033 uint stateCookie; 4034 /** 4035 * the target state of an element as set by the application 4036 */ 4037 GstState targetState; 4038 /** 4039 * the current state of an element 4040 */ 4041 GstState currentState; 4042 /** 4043 * the next state of an element, can be #GST_STATE_VOID_PENDING if 4044 * the element is in the correct state. 4045 */ 4046 GstState nextState; 4047 /** 4048 * the final state the element should go to, can be 4049 * #GST_STATE_VOID_PENDING if the element is in the correct state 4050 */ 4051 GstState pendingState; 4052 /** 4053 * the last return value of an element state change 4054 */ 4055 GstStateChangeReturn lastReturn; 4056 /** 4057 * the bus of the element. This bus is provided to the element by the 4058 * parent element or the application. A #GstPipeline has a bus of its own. 4059 */ 4060 GstBus* bus; 4061 /** 4062 * the clock of the element. This clock is usually provided to the 4063 * element by the toplevel #GstPipeline. 4064 */ 4065 GstClock* clock; 4066 /** 4067 * the time of the clock right before the element is set to 4068 * PLAYING. Subtracting @base_time from the current clock time in the PLAYING 4069 * state will yield the running_time against the clock. 4070 */ 4071 GstClockTimeDiff baseTime; 4072 /** 4073 * the running_time of the last PAUSED state 4074 */ 4075 GstClockTime startTime; 4076 /** 4077 * number of pads of the element, includes both source and sink pads. 4078 */ 4079 ushort numpads; 4080 /** 4081 * list of pads 4082 */ 4083 GList* pads; 4084 /** 4085 * number of source pads of the element. 4086 */ 4087 ushort numsrcpads; 4088 /** 4089 * list of source pads 4090 */ 4091 GList* srcpads; 4092 /** 4093 * number of sink pads of the element. 4094 */ 4095 ushort numsinkpads; 4096 /** 4097 * list of sink pads 4098 */ 4099 GList* sinkpads; 4100 /** 4101 * updated whenever the a pad is added or removed 4102 */ 4103 uint padsCookie; 4104 /** 4105 * list of contexts 4106 */ 4107 GList* contexts; 4108 void*[3] GstReserved; 4109 } 4110 4111 struct GstElementClass 4112 { 4113 /** 4114 * the parent class structure 4115 */ 4116 GstObjectClass parentClass; 4117 /** 4118 * metadata for elements of this class 4119 */ 4120 void* metadata; 4121 /** 4122 * the #GstElementFactory that creates these elements 4123 */ 4124 GstElementFactory* elementfactory; 4125 /** 4126 * a #GList of #GstPadTemplate 4127 */ 4128 GList* padtemplates; 4129 /** 4130 * the number of padtemplates 4131 */ 4132 int numpadtemplates; 4133 /** 4134 * changed whenever the padtemplates change 4135 */ 4136 uint padTemplCookie; 4137 /** */ 4138 extern(C) void function(GstElement* element, GstPad* pad) padAdded; 4139 /** */ 4140 extern(C) void function(GstElement* element, GstPad* pad) padRemoved; 4141 /** */ 4142 extern(C) void function(GstElement* element) noMorePads; 4143 /** 4144 * 4145 * Params: 4146 * element = a #GstElement to find a request pad of. 4147 * templ = a #GstPadTemplate of which we want a pad of. 4148 * name = the name of the request #GstPad 4149 * to retrieve. Can be %NULL. 4150 * caps = the caps of the pad we want to 4151 * request. Can be %NULL. 4152 * Returns: requested #GstPad if found, 4153 * otherwise %NULL. Release after usage. 4154 */ 4155 extern(C) GstPad* function(GstElement* element, GstPadTemplate* templ, const(char)* name, GstCaps* caps) requestNewPad; 4156 /** */ 4157 extern(C) void function(GstElement* element, GstPad* pad) releasePad; 4158 /** 4159 * 4160 * Params: 4161 * element = a #GstElement to get the state of. 4162 * state = a pointer to #GstState to hold the state. 4163 * Can be %NULL. 4164 * pending = a pointer to #GstState to hold the pending 4165 * state. Can be %NULL. 4166 * timeout = a #GstClockTime to specify the timeout for an async 4167 * state change or %GST_CLOCK_TIME_NONE for infinite timeout. 4168 * Returns: %GST_STATE_CHANGE_SUCCESS if the element has no more pending state 4169 * and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the 4170 * element is still performing a state change or 4171 * %GST_STATE_CHANGE_FAILURE if the last state change failed. 4172 * 4173 * MT safe. 4174 */ 4175 extern(C) GstStateChangeReturn function(GstElement* element, GstState* state, GstState* pending, GstClockTime timeout) getState; 4176 /** 4177 * 4178 * Params: 4179 * element = a #GstElement to change state of. 4180 * state = the element's new #GstState. 4181 * Returns: Result of the state change using #GstStateChangeReturn. 4182 * 4183 * MT safe. 4184 */ 4185 extern(C) GstStateChangeReturn function(GstElement* element, GstState state) setState; 4186 /** 4187 * 4188 * Params: 4189 * element = a #GstElement 4190 * transition = the requested transition 4191 * Returns: the #GstStateChangeReturn of the state transition. 4192 */ 4193 extern(C) GstStateChangeReturn function(GstElement* element, GstStateChange transition) changeState; 4194 /** */ 4195 extern(C) void function(GstElement* element, GstState oldstate, GstState newstate, GstState pending) stateChanged; 4196 /** */ 4197 extern(C) void function(GstElement* element, GstBus* bus) setBus; 4198 /** 4199 * 4200 * Params: 4201 * element = a #GstElement to query 4202 * Returns: the GstClock provided by the 4203 * element or %NULL if no clock could be provided. Unref after usage. 4204 * 4205 * MT safe. 4206 */ 4207 extern(C) GstClock* function(GstElement* element) provideClock; 4208 /** 4209 * 4210 * Params: 4211 * element = a #GstElement to set the clock for. 4212 * clock = the #GstClock to set for the element. 4213 * Returns: %TRUE if the element accepted the clock. An element can refuse a 4214 * clock when it, for example, is not able to slave its internal clock to the 4215 * @clock or when it requires a specific clock to operate. 4216 * 4217 * MT safe. 4218 */ 4219 extern(C) int function(GstElement* element, GstClock* clock) setClock; 4220 /** 4221 * 4222 * Params: 4223 * element = a #GstElement to send the event to. 4224 * event = the #GstEvent to send to the element. 4225 * Returns: %TRUE if the event was handled. Events that trigger a preroll (such 4226 * as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. 4227 */ 4228 extern(C) int function(GstElement* element, GstEvent* event) sendEvent; 4229 /** 4230 * 4231 * Params: 4232 * element = a #GstElement to perform the query on. 4233 * query = the #GstQuery. 4234 * Returns: %TRUE if the query could be performed. 4235 * 4236 * MT safe. 4237 */ 4238 extern(C) int function(GstElement* element, GstQuery* query) query; 4239 /** 4240 * 4241 * Params: 4242 * element = a #GstElement posting the message 4243 * message = a #GstMessage to post 4244 * Returns: %TRUE if the message was successfully posted. The function returns 4245 * %FALSE if the element did not have a bus. 4246 * 4247 * MT safe. 4248 */ 4249 extern(C) int function(GstElement* element, GstMessage* message) postMessage; 4250 /** */ 4251 extern(C) void function(GstElement* element, GstContext* context) setContext; 4252 void*[18] GstReserved; 4253 } 4254 4255 struct GstElementFactory; 4256 4257 struct GstElementFactoryClass; 4258 4259 struct GstEvent 4260 { 4261 /** 4262 * the parent structure 4263 */ 4264 GstMiniObject miniObject; 4265 /** 4266 * the #GstEventType of the event 4267 */ 4268 GstEventType type; 4269 /** 4270 * the timestamp of the event 4271 */ 4272 ulong timestamp; 4273 /** 4274 * the sequence number of the event 4275 */ 4276 uint seqnum; 4277 } 4278 4279 4280 /** 4281 * A format definition 4282 */ 4283 struct GstFormatDefinition 4284 { 4285 /** 4286 * The unique id of this format 4287 */ 4288 GstFormat value; 4289 /** 4290 * A short nick of the format 4291 */ 4292 const(char)* nick; 4293 /** 4294 * A longer description of the format 4295 */ 4296 const(char)* description; 4297 /** 4298 * A quark for the nick 4299 */ 4300 GQuark quark; 4301 } 4302 4303 4304 4305 struct GstGhostPad 4306 { 4307 GstProxyPad pad; 4308 GstGhostPadPrivate* priv; 4309 } 4310 4311 struct GstGhostPadClass 4312 { 4313 GstProxyPadClass parentClass; 4314 void*[4] GstReserved; 4315 } 4316 4317 struct GstGhostPadPrivate; 4318 4319 4320 4321 struct GstIterator 4322 { 4323 /** 4324 * The function to copy the iterator 4325 */ 4326 GstIteratorCopyFunction copy; 4327 /** 4328 * The function to get the next item in the iterator 4329 */ 4330 GstIteratorNextFunction next; 4331 /** 4332 * The function to be called for each item retrieved 4333 */ 4334 GstIteratorItemFunction item; 4335 /** 4336 * The function to call when a resync is needed. 4337 */ 4338 GstIteratorResyncFunction resync; 4339 /** 4340 * The function to call when the iterator is freed 4341 */ 4342 GstIteratorFreeFunction free; 4343 /** 4344 * The iterator that is currently pushed with gst_iterator_push() 4345 */ 4346 GstIterator* pushed; 4347 /** 4348 * The type of the object that this iterator will return 4349 */ 4350 GType type; 4351 /** 4352 * The lock protecting the data structure and the cookie. 4353 */ 4354 GMutex* lock; 4355 /** 4356 * The cookie; the value of the master_cookie when this iterator was 4357 * created. 4358 */ 4359 uint cookie; 4360 /** 4361 * A pointer to the master cookie. 4362 */ 4363 uint* masterCookie; 4364 /** 4365 * the size of the iterator 4366 */ 4367 uint size; 4368 void*[4] GstReserved; 4369 } 4370 4371 /** 4372 * A structure containing the result of a map operation such as 4373 * gst_memory_map(). It contains the data and size. 4374 */ 4375 struct GstMapInfo 4376 { 4377 /** 4378 * a pointer to the mapped memory 4379 */ 4380 GstMemory* memory; 4381 /** 4382 * flags used when mapping the memory 4383 */ 4384 GstMapFlags flags; 4385 /** 4386 * a pointer to the mapped data 4387 */ 4388 ubyte* data; 4389 /** 4390 * the valid size in @data 4391 */ 4392 size_t size; 4393 /** 4394 * the maximum bytes in @data 4395 */ 4396 size_t maxsize; 4397 /** 4398 * extra private user_data that the implementation of the memory 4399 * can use to store extra info. 4400 */ 4401 void*[4] userData; 4402 void*[4] GstReserved; 4403 } 4404 4405 struct GstMemory 4406 { 4407 /** 4408 * parent structure 4409 */ 4410 GstMiniObject miniObject; 4411 /** 4412 * pointer to the #GstAllocator 4413 */ 4414 GstAllocator* allocator; 4415 /** 4416 * parent memory block 4417 */ 4418 GstMemory* parent; 4419 /** 4420 * the maximum size allocated 4421 */ 4422 size_t maxsize; 4423 /** 4424 * the alignment of the memory 4425 */ 4426 size_t alig; 4427 /** 4428 * the offset where valid data starts 4429 */ 4430 size_t offset; 4431 /** 4432 * the size of valid data 4433 */ 4434 size_t size; 4435 } 4436 4437 struct GstMessage 4438 { 4439 /** 4440 * the parent structure 4441 */ 4442 GstMiniObject miniObject; 4443 /** 4444 * the #GstMessageType of the message 4445 */ 4446 GstMessageType type; 4447 /** 4448 * the timestamp of the message 4449 */ 4450 ulong timestamp; 4451 /** 4452 * the src of the message 4453 */ 4454 GstObject* src; 4455 /** 4456 * the sequence number of the message 4457 */ 4458 uint seqnum; 4459 GMutex lock; 4460 GCond cond; 4461 } 4462 4463 /** 4464 * The #GstMeta structure should be included as the first member of a #GstBuffer 4465 * metadata structure. The structure defines the API of the metadata and should 4466 * be accessible to all elements using the metadata. 4467 * 4468 * A metadata API is registered with gst_meta_api_type_register() which takes a 4469 * name for the metadata API and some tags associated with the metadata. 4470 * With gst_meta_api_type_has_tag() one can check if a certain metadata API 4471 * contains a given tag. 4472 * 4473 * Multiple implementations of a metadata API can be registered. 4474 * To implement a metadata API, gst_meta_register() should be used. This 4475 * function takes all parameters needed to create, free and transform metadata 4476 * along with the size of the metadata. The function returns a #GstMetaInfo 4477 * structure that contains the information for the implementation of the API. 4478 * 4479 * A specific implementation can be retrieved by name with gst_meta_get_info(). 4480 * 4481 * See #GstBuffer for how the metadata can be added, retrieved and removed from 4482 * buffers. 4483 */ 4484 struct GstMeta 4485 { 4486 /** 4487 * extra flags for the metadata 4488 */ 4489 GstMetaFlags flags; 4490 /** 4491 * pointer to the #GstMetaInfo 4492 */ 4493 GstMetaInfo* info; 4494 } 4495 4496 /** 4497 * The #GstMetaInfo provides information about a specific metadata 4498 * structure. 4499 */ 4500 struct GstMetaInfo 4501 { 4502 /** 4503 * tag identifying the metadata structure and api 4504 */ 4505 GType api; 4506 /** 4507 * type identifying the implementor of the api 4508 */ 4509 GType type; 4510 /** 4511 * size of the metadata 4512 */ 4513 size_t size; 4514 /** 4515 * function for initializing the metadata 4516 */ 4517 GstMetaInitFunction initFunc; 4518 /** 4519 * function for freeing the metadata 4520 */ 4521 GstMetaFreeFunction freeFunc; 4522 /** 4523 * function for transforming the metadata 4524 */ 4525 GstMetaTransformFunction transformFunc; 4526 } 4527 4528 /** 4529 * Extra data passed to a "gst-copy" transform #GstMetaTransformFunction. 4530 */ 4531 struct GstMetaTransformCopy 4532 { 4533 /** 4534 * %TRUE if only region is copied 4535 */ 4536 bool region; 4537 /** 4538 * the offset to copy, 0 if @region is %FALSE, otherwise > 0 4539 */ 4540 size_t offset; 4541 /** 4542 * the size to copy, -1 or the buffer size when @region is %FALSE 4543 */ 4544 size_t size; 4545 } 4546 4547 struct GstMiniObject 4548 { 4549 /** 4550 * the GType of the object 4551 */ 4552 GType type; 4553 /** 4554 * atomic refcount 4555 */ 4556 int refcount; 4557 /** 4558 * atomic state of the locks 4559 */ 4560 int lockstate; 4561 /** 4562 * extra flags. 4563 */ 4564 uint flags; 4565 /** 4566 * a copy function 4567 */ 4568 GstMiniObjectCopyFunction copy; 4569 /** 4570 * a dispose function 4571 */ 4572 GstMiniObjectDisposeFunction dispose; 4573 /** 4574 * the free function 4575 */ 4576 GstMiniObjectFreeFunction free; 4577 uint nQdata; 4578 void* qdata; 4579 } 4580 4581 struct GstObject 4582 { 4583 GObject object; 4584 /** 4585 * object LOCK 4586 */ 4587 GMutex lock; 4588 /** 4589 * The name of the object 4590 */ 4591 char* name; 4592 /** 4593 * this object's parent, weak ref 4594 */ 4595 GstObject* parent; 4596 /** 4597 * flags for this object 4598 */ 4599 uint flags; 4600 GList* controlBindings; 4601 ulong controlRate; 4602 ulong lastSync; 4603 void* GstReserved; 4604 } 4605 4606 /** 4607 * GStreamer base object class. 4608 */ 4609 struct GstObjectClass 4610 { 4611 /** 4612 * parent 4613 */ 4614 GObjectClass parentClass; 4615 /** 4616 * separator used by gst_object_get_path_string() 4617 */ 4618 const(char)* pathStringSeparator; 4619 /** */ 4620 extern(C) void function(GstObject* object, GstObject* orig, GParamSpec* pspec) deepNotify; 4621 void*[4] GstReserved; 4622 } 4623 4624 struct GstPad 4625 { 4626 GstObject object; 4627 /** 4628 * private data owned by the parent element 4629 */ 4630 void* elementPrivate; 4631 /** 4632 * padtemplate for this pad 4633 */ 4634 GstPadTemplate* padtemplate; 4635 /** 4636 * the direction of the pad, cannot change after creating 4637 * the pad. 4638 */ 4639 GstPadDirection direction; 4640 GRecMutex streamRecLock; 4641 GstTask* task; 4642 GCond blockCond; 4643 GHookList probes; 4644 GstPadMode mode; 4645 GstPadActivateFunction activatefunc; 4646 void* activatedata; 4647 GDestroyNotify activatenotify; 4648 GstPadActivateModeFunction activatemodefunc; 4649 void* activatemodedata; 4650 GDestroyNotify activatemodenotify; 4651 GstPad* peer; 4652 GstPadLinkFunction linkfunc; 4653 void* linkdata; 4654 GDestroyNotify linknotify; 4655 GstPadUnlinkFunction unlinkfunc; 4656 void* unlinkdata; 4657 GDestroyNotify unlinknotify; 4658 GstPadChainFunction chainfunc; 4659 void* chaindata; 4660 GDestroyNotify chainnotify; 4661 GstPadChainListFunction chainlistfunc; 4662 void* chainlistdata; 4663 GDestroyNotify chainlistnotify; 4664 GstPadGetRangeFunction getrangefunc; 4665 void* getrangedata; 4666 GDestroyNotify getrangenotify; 4667 GstPadEventFunction eventfunc; 4668 void* eventdata; 4669 GDestroyNotify eventnotify; 4670 long offset; 4671 GstPadQueryFunction queryfunc; 4672 void* querydata; 4673 GDestroyNotify querynotify; 4674 GstPadIterIntLinkFunction iterintlinkfunc; 4675 void* iterintlinkdata; 4676 GDestroyNotify iterintlinknotify; 4677 int numProbes; 4678 int numBlocked; 4679 GstPadPrivate* priv; 4680 union ABI 4681 { 4682 void*[4] GstReserved; 4683 struct Abi 4684 { 4685 GstFlowReturn lastFlowret; 4686 GstPadEventFullFunction eventfullfunc; 4687 } 4688 Abi abi; 4689 } 4690 ABI abi; 4691 } 4692 4693 struct GstPadClass 4694 { 4695 GstObjectClass parentClass; 4696 /** */ 4697 extern(C) void function(GstPad* pad, GstPad* peer) linked; 4698 /** */ 4699 extern(C) void function(GstPad* pad, GstPad* peer) unlinked; 4700 void*[4] GstReserved; 4701 } 4702 4703 struct GstPadPrivate; 4704 4705 struct GstPadProbeInfo 4706 { 4707 /** 4708 * the current probe type 4709 */ 4710 GstPadProbeType type; 4711 /** 4712 * the id of the probe 4713 */ 4714 gulong id; 4715 /** 4716 * type specific data, check the @type field to know the 4717 * datatype. This field can be %NULL. 4718 */ 4719 void* data; 4720 /** 4721 * offset of pull probe, this field is valid when @type contains 4722 * #GST_PAD_PROBE_TYPE_PULL 4723 */ 4724 ulong offset; 4725 /** 4726 * size of pull probe, this field is valid when @type contains 4727 * #GST_PAD_PROBE_TYPE_PULL 4728 */ 4729 uint size; 4730 union ABI 4731 { 4732 void*[4] GstReserved; 4733 struct Abi 4734 { 4735 GstFlowReturn flowRet; 4736 } 4737 Abi abi; 4738 } 4739 ABI abi; 4740 } 4741 4742 struct GstPadTemplate 4743 { 4744 GstObject object; 4745 char* nameTemplate; 4746 GstPadDirection direction; 4747 GstPadPresence presence; 4748 GstCaps* caps; 4749 void*[4] GstReserved; 4750 } 4751 4752 struct GstPadTemplateClass 4753 { 4754 GstObjectClass parentClass; 4755 /** */ 4756 extern(C) void function(GstPadTemplate* templ, GstPad* pad) padCreated; 4757 void*[4] GstReserved; 4758 } 4759 4760 4761 4762 /** 4763 * A GParamSpec derived structure that contains the meta data for fractional 4764 * properties. 4765 */ 4766 struct GstParamSpecArray 4767 { 4768 /** 4769 * super class 4770 */ 4771 GParamSpec parentInstance; 4772 GParamSpec* elementSpec; 4773 } 4774 4775 /** 4776 * A GParamSpec derived structure that contains the meta data for fractional 4777 * properties. 4778 */ 4779 struct GstParamSpecFraction 4780 { 4781 /** 4782 * super class 4783 */ 4784 GParamSpec parentInstance; 4785 /** 4786 * minimal numerator 4787 */ 4788 int minNum; 4789 /** 4790 * minimal denominator 4791 */ 4792 int minDen; 4793 /** 4794 * maximal numerator 4795 */ 4796 int maxNum; 4797 /** 4798 * maximal denominator 4799 */ 4800 int maxDen; 4801 /** 4802 * default numerator 4803 */ 4804 int defNum; 4805 /** 4806 * default denominator 4807 */ 4808 int defDen; 4809 } 4810 4811 /** 4812 * The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer 4813 * to hold a reference to another buffer that is only released when the child 4814 * #GstBuffer is released. 4815 * 4816 * Typically, #GstParentBufferMeta is used when the child buffer is directly 4817 * using the #GstMemory of the parent buffer, and wants to prevent the parent 4818 * buffer from being returned to a buffer pool until the #GstMemory is available 4819 * for re-use. 4820 * 4821 * Since: 1.6 4822 */ 4823 struct GstParentBufferMeta 4824 { 4825 /** 4826 * the parent #GstMeta structure 4827 */ 4828 GstMeta parent; 4829 /** 4830 * the #GstBuffer on which a reference is being held. 4831 */ 4832 GstBuffer* buffer; 4833 } 4834 4835 struct GstParseContext; 4836 4837 struct GstPipeline 4838 { 4839 GstBin bin; 4840 /** 4841 * The fixed clock of the pipeline, used when 4842 * GST_PIPELINE_FLAG_FIXED_CLOCK is set. 4843 */ 4844 GstClock* fixedClock; 4845 /** 4846 * The stream time of the pipeline. A better name for this 4847 * property would be the running_time, the total time spent in the 4848 * PLAYING state without being flushed. (deprecated, use the start_time 4849 * on GstElement). 4850 */ 4851 GstClockTime streamTime; 4852 /** 4853 * Extra delay added to base_time to compensate for computing delays 4854 * when setting elements to PLAYING. 4855 */ 4856 GstClockTime delay; 4857 GstPipelinePrivate* priv; 4858 void*[4] GstReserved; 4859 } 4860 4861 struct GstPipelineClass 4862 { 4863 GstBinClass parentClass; 4864 void*[4] GstReserved; 4865 } 4866 4867 struct GstPipelinePrivate; 4868 4869 struct GstPlugin; 4870 4871 struct GstPluginClass; 4872 4873 /** 4874 * A plugin should export a variable of this type called plugin_desc. The plugin 4875 * loader will use the data provided there to initialize the plugin. 4876 * 4877 * The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL, 4878 * BSD, MIT/X11, Proprietary, unknown. 4879 */ 4880 struct GstPluginDesc 4881 { 4882 /** 4883 * the major version number of core that plugin was compiled for 4884 */ 4885 int majorVersion; 4886 /** 4887 * the minor version number of core that plugin was compiled for 4888 */ 4889 int minorVersion; 4890 /** 4891 * a unique name of the plugin 4892 */ 4893 const(char)* name; 4894 /** 4895 * description of plugin 4896 */ 4897 const(char)* description; 4898 /** 4899 * pointer to the init function of this plugin. 4900 */ 4901 GstPluginInitFunc pluginInit; 4902 /** 4903 * version of the plugin 4904 */ 4905 const(char)* versio; 4906 /** 4907 * effective license of plugin 4908 */ 4909 const(char)* license; 4910 /** 4911 * source module plugin belongs to 4912 */ 4913 const(char)* source; 4914 /** 4915 * shipped package plugin belongs to 4916 */ 4917 const(char)* p; 4918 /** 4919 * URL to provider of plugin 4920 */ 4921 const(char)* origin; 4922 /** 4923 * date time string in ISO 8601 4924 * format (or rather, a subset thereof), or %NULL. Allowed are the 4925 * following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with 4926 * 'T' a separator and 'Z' indicating UTC/Zulu time). This field 4927 * should be set via the GST_PACKAGE_RELEASE_DATETIME 4928 * preprocessor macro. 4929 */ 4930 const(char)* releaseDatetime; 4931 void*[4] GstReserved; 4932 } 4933 4934 struct GstPluginFeature; 4935 4936 struct GstPluginFeatureClass; 4937 4938 struct GstPoll; 4939 4940 struct GstPollFD 4941 { 4942 /** 4943 * a file descriptor 4944 */ 4945 int fd; 4946 int idx; 4947 } 4948 4949 struct GstPreset; 4950 4951 /** 4952 * #GstPreset interface. 4953 */ 4954 struct GstPresetInterface 4955 { 4956 /** 4957 * parent interface type. 4958 */ 4959 GTypeInterface parent; 4960 /** 4961 * 4962 * Params: 4963 * preset = a #GObject that implements #GstPreset 4964 * Returns: list with names, use g_strfreev() after usage. 4965 */ 4966 extern(C) char** function(GstPreset* preset) getPresetNames; 4967 /** 4968 * 4969 * Params: 4970 * preset = a #GObject that implements #GstPreset 4971 * Returns: an 4972 * array of property names which should be freed with g_strfreev() after use. 4973 */ 4974 extern(C) char** function(GstPreset* preset) getPropertyNames; 4975 /** 4976 * 4977 * Params: 4978 * preset = a #GObject that implements #GstPreset 4979 * name = preset name to load 4980 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 4981 */ 4982 extern(C) int function(GstPreset* preset, const(char)* name) loadPreset; 4983 /** 4984 * 4985 * Params: 4986 * preset = a #GObject that implements #GstPreset 4987 * name = preset name to save 4988 * Returns: %TRUE for success, %FALSE 4989 */ 4990 extern(C) int function(GstPreset* preset, const(char)* name) savePreset; 4991 /** 4992 * 4993 * Params: 4994 * preset = a #GObject that implements #GstPreset 4995 * oldName = current preset name 4996 * newName = new preset name 4997 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with @old_name 4998 */ 4999 extern(C) int function(GstPreset* preset, const(char)* oldName, const(char)* newName) renamePreset; 5000 /** 5001 * 5002 * Params: 5003 * preset = a #GObject that implements #GstPreset 5004 * name = preset name to remove 5005 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5006 */ 5007 extern(C) int function(GstPreset* preset, const(char)* name) deletePreset; 5008 /** 5009 * 5010 * Params: 5011 * preset = a #GObject that implements #GstPreset 5012 * name = preset name 5013 * tag = meta data item name 5014 * value = new value 5015 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5016 */ 5017 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, const(char)* value) setMeta; 5018 /** 5019 * 5020 * Params: 5021 * preset = a #GObject that implements #GstPreset 5022 * name = preset name 5023 * tag = meta data item name 5024 * value = value 5025 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name 5026 * or no value for the given @tag 5027 */ 5028 extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, char** value) getMeta; 5029 void*[4] GstReserved; 5030 } 5031 5032 /** 5033 * Metadata type that holds information about a sample from a protection-protected 5034 * track, including the information needed to decrypt it (if it is encrypted). 5035 * 5036 * Since: 1.6 5037 */ 5038 struct GstProtectionMeta 5039 { 5040 /** 5041 * the parent #GstMeta. 5042 */ 5043 GstMeta meta; 5044 /** 5045 * the cryptographic information needed to decrypt the sample. 5046 */ 5047 GstStructure* info; 5048 } 5049 5050 struct GstProxyPad 5051 { 5052 GstPad pad; 5053 GstProxyPadPrivate* priv; 5054 } 5055 5056 struct GstProxyPadClass 5057 { 5058 GstPadClass parentClass; 5059 void*[1] GstReserved; 5060 } 5061 5062 struct GstProxyPadPrivate; 5063 5064 struct GstQuery 5065 { 5066 /** 5067 * The parent #GstMiniObject type 5068 */ 5069 GstMiniObject miniObject; 5070 /** 5071 * the #GstQueryType 5072 */ 5073 GstQueryType type; 5074 } 5075 5076 struct GstRegistry 5077 { 5078 GstObject object; 5079 GstRegistryPrivate* priv; 5080 } 5081 5082 struct GstRegistryClass 5083 { 5084 GstObjectClass parentClass; 5085 } 5086 5087 struct GstRegistryPrivate; 5088 5089 struct GstSample; 5090 5091 struct GstSegment 5092 { 5093 /** 5094 * flags for this segment 5095 */ 5096 GstSegmentFlags flags; 5097 /** 5098 * the playback rate of the segment 5099 */ 5100 double rate; 5101 /** 5102 * the already applied rate to the segment 5103 */ 5104 double appliedRate; 5105 /** 5106 * the format of the segment values 5107 */ 5108 GstFormat format; 5109 /** 5110 * the running time (plus elapsed time, see offset) of the segment start 5111 */ 5112 ulong base; 5113 /** 5114 * the amount (in buffer timestamps) that has already been elapsed in 5115 * the segment 5116 */ 5117 ulong offset; 5118 /** 5119 * the start of the segment in buffer timestamp time (PTS) 5120 */ 5121 ulong start; 5122 /** 5123 * the stop of the segment in buffer timestamp time (PTS) 5124 */ 5125 ulong stop; 5126 /** 5127 * the stream time of the segment start 5128 */ 5129 ulong time; 5130 /** 5131 * the buffer timestamp position in the segment (used internally by 5132 * elements such as sources, demuxers or parsers to track progress) 5133 */ 5134 ulong position; 5135 /** 5136 * the duration of the segment 5137 */ 5138 ulong duration; 5139 void*[4] GstReserved; 5140 } 5141 5142 struct GstStaticCaps 5143 { 5144 /** 5145 * the cached #GstCaps 5146 */ 5147 GstCaps* caps; 5148 /** 5149 * a string describing a caps 5150 */ 5151 const(char)* str; 5152 void*[4] GstReserved; 5153 } 5154 5155 struct GstStaticPadTemplate 5156 { 5157 /** 5158 * the name of the template 5159 */ 5160 const(char)* nameTemplate; 5161 /** 5162 * the direction of the template 5163 */ 5164 GstPadDirection direction; 5165 /** 5166 * the presence of the template 5167 */ 5168 GstPadPresence presence; 5169 /** 5170 * the caps of the template. 5171 */ 5172 GstStaticCaps staticCaps; 5173 } 5174 5175 struct GstStream 5176 { 5177 GstObject object; 5178 /** 5179 * The Stream Identifier for this #GstStream 5180 */ 5181 const(char)* streamId; 5182 GstStreamPrivate* priv; 5183 void*[4] GstReserved; 5184 } 5185 5186 /** 5187 * GstStream class structure 5188 */ 5189 struct GstStreamClass 5190 { 5191 /** 5192 * the parent class structure 5193 */ 5194 GstObjectClass parentClass; 5195 void*[4] GstReserved; 5196 } 5197 5198 struct GstStreamCollection 5199 { 5200 GstObject object; 5201 char* upstreamId; 5202 GstStreamCollectionPrivate* priv; 5203 void*[4] GstReserved; 5204 } 5205 5206 /** 5207 * GstStreamCollection class structure 5208 */ 5209 struct GstStreamCollectionClass 5210 { 5211 /** 5212 * the parent class structure 5213 */ 5214 GstObjectClass parentClass; 5215 /** */ 5216 extern(C) void function(GstStreamCollection* collection, GstStream* stream, GParamSpec* pspec) streamNotify; 5217 void*[4] GstReserved; 5218 } 5219 5220 struct GstStreamCollectionPrivate; 5221 5222 struct GstStreamPrivate; 5223 5224 struct GstStructure 5225 { 5226 /** 5227 * the GType of a structure 5228 */ 5229 GType type; 5230 GQuark name; 5231 } 5232 5233 struct GstSystemClock 5234 { 5235 GstClock clock; 5236 GstSystemClockPrivate* priv; 5237 void*[4] GstReserved; 5238 } 5239 5240 struct GstSystemClockClass 5241 { 5242 GstClockClass parentClass; 5243 void*[4] GstReserved; 5244 } 5245 5246 struct GstSystemClockPrivate; 5247 5248 struct GstTagList 5249 { 5250 /** 5251 * the parent type 5252 */ 5253 GstMiniObject miniObject; 5254 } 5255 5256 struct GstTagSetter; 5257 5258 /** 5259 * #GstTagSetterInterface interface. 5260 */ 5261 struct GstTagSetterInterface 5262 { 5263 /** 5264 * parent interface type. 5265 */ 5266 GTypeInterface gIface; 5267 } 5268 5269 struct GstTask 5270 { 5271 GstObject object; 5272 /** 5273 * the state of the task 5274 */ 5275 GstTaskState state; 5276 /** 5277 * used to pause/resume the task 5278 */ 5279 GCond cond; 5280 /** 5281 * The lock taken when iterating the task function 5282 */ 5283 GRecMutex* lock; 5284 /** 5285 * the function executed by this task 5286 */ 5287 GstTaskFunction func; 5288 /** 5289 * user_data passed to the task function 5290 */ 5291 void* userData; 5292 /** 5293 * GDestroyNotify for @user_data 5294 */ 5295 GDestroyNotify notify; 5296 /** 5297 * a flag indicating that the task is running 5298 */ 5299 bool running; 5300 GThread* thread; 5301 GstTaskPrivate* priv; 5302 void*[4] GstReserved; 5303 } 5304 5305 struct GstTaskClass 5306 { 5307 GstObjectClass parentClass; 5308 GstTaskPool* pool; 5309 void*[4] GstReserved; 5310 } 5311 5312 struct GstTaskPool 5313 { 5314 GstObject object; 5315 GThreadPool* pool; 5316 void*[4] GstReserved; 5317 } 5318 5319 /** 5320 * The #GstTaskPoolClass object. 5321 */ 5322 struct GstTaskPoolClass 5323 { 5324 /** 5325 * the parent class structure 5326 */ 5327 GstObjectClass parentClass; 5328 /** */ 5329 extern(C) void function(GstTaskPool* pool, GError** err) prepare; 5330 /** */ 5331 extern(C) void function(GstTaskPool* pool) cleanup; 5332 /** 5333 * 5334 * Params: 5335 * pool = a #GstTaskPool 5336 * func = the function to call 5337 * userData = data to pass to @func 5338 * Returns: a pointer that should be used 5339 * for the gst_task_pool_join function. This pointer can be %NULL, you 5340 * must check @error to detect errors. 5341 * 5342 * Throws: GException on failure. 5343 */ 5344 extern(C) void* function(GstTaskPool* pool, GstTaskPoolFunction func, void* userData, GError** err) push; 5345 /** */ 5346 extern(C) void function(GstTaskPool* pool, void* id) join; 5347 void*[4] GstReserved; 5348 } 5349 5350 struct GstTaskPrivate; 5351 5352 /** 5353 * Structure for saving a timestamp and a value. 5354 */ 5355 struct GstTimedValue 5356 { 5357 /** 5358 * timestamp of the value change 5359 */ 5360 GstClockTime timestamp; 5361 /** 5362 * the corresponding value 5363 */ 5364 double value; 5365 } 5366 5367 struct GstToc; 5368 5369 struct GstTocEntry; 5370 5371 struct GstTocSetter; 5372 5373 /** 5374 * #GstTocSetterInterface interface. 5375 */ 5376 struct GstTocSetterInterface 5377 { 5378 /** 5379 * parent interface type. 5380 */ 5381 GTypeInterface gIface; 5382 } 5383 5384 struct GstTracer 5385 { 5386 GstObject parent; 5387 GstTracerPrivate* priv; 5388 void*[4] GstReserved; 5389 } 5390 5391 struct GstTracerClass 5392 { 5393 GstObjectClass parentClass; 5394 void*[4] GstReserved; 5395 } 5396 5397 struct GstTracerFactory; 5398 5399 struct GstTracerFactoryClass; 5400 5401 struct GstTracerPrivate; 5402 5403 struct GstTracerRecord; 5404 5405 struct GstTracerRecordClass; 5406 5407 struct GstTypeFind 5408 { 5409 /** */ 5410 extern(C) ubyte* function(void* data, long offset, uint size) peek; 5411 /** */ 5412 extern(C) void function(void* data, uint probability, GstCaps* caps) suggest; 5413 /** 5414 * The data used by the caller of the typefinding function. 5415 */ 5416 void* data; 5417 /** */ 5418 extern(C) ulong function(void* data) getLength; 5419 void*[4] GstReserved; 5420 } 5421 5422 struct GstTypeFindFactory; 5423 5424 struct GstTypeFindFactoryClass; 5425 5426 struct GstURIHandler; 5427 5428 /** 5429 * Any #GstElement using this interface should implement these methods. 5430 */ 5431 struct GstURIHandlerInterface 5432 { 5433 /** 5434 * The parent interface type 5435 */ 5436 GTypeInterface parent; 5437 /** */ 5438 extern(C) GstURIType function(GType type) getType; 5439 /** */ 5440 extern(C) char** function(GType type) getProtocols; 5441 /** 5442 * 5443 * Params: 5444 * handler = A #GstURIHandler 5445 * Returns: the URI currently handled by 5446 * the @handler. Returns %NULL if there are no URI currently 5447 * handled. The returned string must be freed with g_free() when no 5448 * longer needed. 5449 */ 5450 extern(C) char* function(GstURIHandler* handler) getUri; 5451 /** 5452 * 5453 * Params: 5454 * handler = A #GstURIHandler 5455 * uri = URI to set 5456 * Returns: %TRUE if the URI was set successfully, else %FALSE. 5457 * 5458 * Throws: GException on failure. 5459 */ 5460 extern(C) int function(GstURIHandler* handler, const(char)* uri, GError** err) setUri; 5461 } 5462 5463 struct GstUri; 5464 5465 struct GstValueArray; 5466 5467 5468 /** 5469 * VTable for the #GValue @type. 5470 */ 5471 struct GstValueTable 5472 { 5473 /** 5474 * a #GType 5475 */ 5476 GType type; 5477 /** 5478 * a #GstValueCompareFunc 5479 */ 5480 GstValueCompareFunc compare; 5481 /** 5482 * a #GstValueSerializeFunc 5483 */ 5484 GstValueSerializeFunc serialize; 5485 /** 5486 * a #GstValueDeserializeFunc 5487 */ 5488 GstValueDeserializeFunc deserialize; 5489 void*[4] GstReserved; 5490 } 5491 5492 /** 5493 * A function that will be called from gst_buffer_foreach_meta(). The @meta 5494 * field will point to a the reference of the meta. 5495 * 5496 * @buffer should not be modified from this callback. 5497 * 5498 * When this function returns %TRUE, the next meta will be 5499 * returned. When %FALSE is returned, gst_buffer_foreach_meta() will return. 5500 * 5501 * When @meta is set to %NULL, the item will be removed from the buffer. 5502 * 5503 * Params: 5504 * buffer = a #GstBuffer 5505 * meta = a pointer to a #GstMeta 5506 * userData = user data passed to gst_buffer_foreach_meta() 5507 * 5508 * Returns: %FALSE when gst_buffer_foreach_meta() should stop 5509 */ 5510 public alias extern(C) int function(GstBuffer* buffer, GstMeta** meta, void* userData) GstBufferForeachMetaFunc; 5511 5512 /** 5513 * A function that will be called from gst_buffer_list_foreach(). The @buffer 5514 * field will point to a the reference of the buffer at @idx. 5515 * 5516 * When this function returns %TRUE, the next buffer will be 5517 * returned. When %FALSE is returned, gst_buffer_list_foreach() will return. 5518 * 5519 * When @buffer is set to %NULL, the item will be removed from the bufferlist. 5520 * When @buffer has been made writable, the new buffer reference can be assigned 5521 * to @buffer. This function is responsible for unreffing the old buffer when 5522 * removing or modifying. 5523 * 5524 * Params: 5525 * buffer = pointer the buffer 5526 * idx = the index of @buffer 5527 * userData = user data passed to gst_buffer_list_foreach() 5528 * 5529 * Returns: %FALSE when gst_buffer_list_foreach() should stop 5530 */ 5531 public alias extern(C) int function(GstBuffer** buffer, uint idx, void* userData) GstBufferListFunc; 5532 5533 /** 5534 * Specifies the type of function passed to gst_bus_add_watch() or 5535 * gst_bus_add_watch_full(), which is called from the mainloop when a message 5536 * is available on the bus. 5537 * 5538 * The message passed to the function will be unreffed after execution of this 5539 * function so it should not be freed in the function. 5540 * 5541 * Note that this function is used as a GSourceFunc which means that returning 5542 * %FALSE will remove the GSource from the mainloop. 5543 * 5544 * Params: 5545 * bus = the #GstBus that sent the message 5546 * message = the #GstMessage 5547 * userData = user data that has been given, when registering the handler 5548 * 5549 * Returns: %FALSE if the event source should be removed. 5550 */ 5551 public alias extern(C) int function(GstBus* bus, GstMessage* message, void* userData) GstBusFunc; 5552 5553 /** 5554 * Handler will be invoked synchronously, when a new message has been injected 5555 * into the bus. This function is mostly used internally. Only one sync handler 5556 * can be attached to a given bus. 5557 * 5558 * If the handler returns GST_BUS_DROP, it should unref the message, else the 5559 * message should not be unreffed by the sync handler. 5560 * 5561 * Params: 5562 * bus = the #GstBus that sent the message 5563 * message = the #GstMessage 5564 * userData = user data that has been given, when registering the handler 5565 * 5566 * Returns: #GstBusSyncReply stating what to do with the message 5567 */ 5568 public alias extern(C) GstBusSyncReply function(GstBus* bus, GstMessage* message, void* userData) GstBusSyncHandler; 5569 5570 /** 5571 * A function that will be called in gst_caps_filter_and_map_in_place(). 5572 * The function may modify @features and @structure, and both will be 5573 * removed from the caps if %FALSE is returned. 5574 * 5575 * Params: 5576 * features = the #GstCapsFeatures 5577 * structure = the #GstStructure 5578 * userData = user data 5579 * 5580 * Returns: %TRUE if the features and structure should be preserved, 5581 * %FALSE if it should be removed. 5582 */ 5583 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsFilterMapFunc; 5584 5585 /** 5586 * A function that will be called in gst_caps_foreach(). The function may 5587 * not modify @features or @structure. 5588 * 5589 * Params: 5590 * features = the #GstCapsFeatures 5591 * structure = the #GstStructure 5592 * userData = user data 5593 * 5594 * Returns: %TRUE if the foreach operation should continue, %FALSE if 5595 * the foreach operation should stop with %FALSE. 5596 * 5597 * Since: 1.6 5598 */ 5599 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsForeachFunc; 5600 5601 /** 5602 * A function that will be called in gst_caps_map_in_place(). The function 5603 * may modify @features and @structure. 5604 * 5605 * Params: 5606 * features = the #GstCapsFeatures 5607 * structure = the #GstStructure 5608 * userData = user data 5609 * 5610 * Returns: %TRUE if the map operation should continue, %FALSE if 5611 * the map operation should stop with %FALSE. 5612 */ 5613 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsMapFunc; 5614 5615 /** 5616 * The function prototype of the callback. 5617 * 5618 * Params: 5619 * clock = The clock that triggered the callback 5620 * time = The time it was triggered 5621 * id = The #GstClockID that expired 5622 * userData = user data passed in the gst_clock_id_wait_async() function 5623 * 5624 * Returns: %TRUE or %FALSE (currently unused) 5625 */ 5626 public alias extern(C) int function(GstClock* clock, GstClockTime time, GstClockID id, void* userData) GstClockCallback; 5627 5628 /** */ 5629 public alias extern(C) void function(GstControlBinding* binding, double srcValue, GValue* destValue) GstControlBindingConvert; 5630 5631 /** 5632 * Function for returning a value for a given timestamp. 5633 * 5634 * Params: 5635 * self = the #GstControlSource instance 5636 * timestamp = timestamp for which a value should be calculated 5637 * value = a value which will be set to the result. 5638 * 5639 * Returns: %TRUE if the value was successfully calculated. 5640 */ 5641 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, double* value) GstControlSourceGetValue; 5642 5643 /** 5644 * Function for returning an array of values for starting at a given timestamp. 5645 * 5646 * Params: 5647 * self = the #GstControlSource instance 5648 * timestamp = timestamp for which a value should be calculated 5649 * interval = the time spacing between subsequent values 5650 * nValues = the number of values 5651 * values = array to put control-values in 5652 * 5653 * Returns: %TRUE if the values were successfully calculated. 5654 */ 5655 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, GstClockTime interval, uint nValues, double* values) GstControlSourceGetValueArray; 5656 5657 /** */ 5658 public alias extern(C) void function() GstDebugFuncPtr; 5659 5660 /** */ 5661 public alias extern(C) void function(GstElement* element, void* userData) GstElementCallAsyncFunc; 5662 5663 /** 5664 * This function will be called when creating a copy of @it and should 5665 * create a copy of all custom iterator fields or increase their 5666 * reference counts. 5667 * 5668 * Params: 5669 * it = The original iterator 5670 * copy = The copied iterator 5671 */ 5672 public alias extern(C) void function(GstIterator* it, GstIterator* copy) GstIteratorCopyFunction; 5673 5674 /** 5675 * A function to be passed to gst_iterator_fold(). 5676 * 5677 * Params: 5678 * item = the item to fold 5679 * ret = a #GValue collecting the result 5680 * userData = data passed to gst_iterator_fold() 5681 * 5682 * Returns: %TRUE if the fold should continue, %FALSE if it should stop. 5683 */ 5684 public alias extern(C) int function(GValue* item, GValue* ret, void* userData) GstIteratorFoldFunction; 5685 5686 /** 5687 * A function that is called by gst_iterator_foreach() for every element. 5688 * 5689 * Params: 5690 * item = The item 5691 * userData = User data 5692 */ 5693 public alias extern(C) void function(GValue* item, void* userData) GstIteratorForeachFunction; 5694 5695 /** 5696 * This function will be called when the iterator is freed. 5697 * 5698 * Implementors of a #GstIterator should implement this 5699 * function and pass it to the constructor of the custom iterator. 5700 * The function will be called with the iterator lock held. 5701 * 5702 * Params: 5703 * it = the iterator 5704 */ 5705 public alias extern(C) void function(GstIterator* it) GstIteratorFreeFunction; 5706 5707 /** 5708 * The function that will be called after the next item of the iterator 5709 * has been retrieved. This function can be used to skip items or stop 5710 * the iterator. 5711 * 5712 * The function will be called with the iterator lock held. 5713 * 5714 * Params: 5715 * it = the iterator 5716 * item = the item being retrieved. 5717 * 5718 * Returns: the result of the operation. 5719 */ 5720 public alias extern(C) GstIteratorItem function(GstIterator* it, GValue* item) GstIteratorItemFunction; 5721 5722 /** 5723 * The function that will be called when the next element of the iterator 5724 * should be retrieved. 5725 * 5726 * Implementors of a #GstIterator should implement this 5727 * function and pass it to the constructor of the custom iterator. 5728 * The function will be called with the iterator lock held. 5729 * 5730 * Params: 5731 * it = the iterator 5732 * result = a pointer to hold the next item 5733 * 5734 * Returns: the result of the operation. 5735 */ 5736 public alias extern(C) GstIteratorResult function(GstIterator* it, GValue* result) GstIteratorNextFunction; 5737 5738 /** 5739 * This function will be called whenever a concurrent update happened 5740 * to the iterated datastructure. The implementor of the iterator should 5741 * restart the iterator from the beginning and clean up any state it might 5742 * have. 5743 * 5744 * Implementors of a #GstIterator should implement this 5745 * function and pass it to the constructor of the custom iterator. 5746 * The function will be called with the iterator lock held. 5747 * 5748 * Params: 5749 * it = the iterator 5750 */ 5751 public alias extern(C) void function(GstIterator* it) GstIteratorResyncFunction; 5752 5753 /** 5754 * Function prototype for a logging function that can be registered with 5755 * gst_debug_add_log_function(). 5756 * Use G_GNUC_NO_INSTRUMENT on that function. 5757 * 5758 * Params: 5759 * category = a #GstDebugCategory 5760 * level = a #GstDebugLevel 5761 * file = file name 5762 * funct = function name 5763 * line = line number 5764 * object = a #GObject 5765 * message = the message 5766 * userData = user data for the log function 5767 */ 5768 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; 5769 5770 /** 5771 * Copy @size bytes from @mem starting at @offset and return them wrapped in a 5772 * new GstMemory object. 5773 * If @size is set to -1, all bytes starting at @offset are copied. 5774 * 5775 * Params: 5776 * mem = a #GstMemory 5777 * offset = an offset 5778 * size = a size or -1 5779 * 5780 * Returns: a new #GstMemory object wrapping a copy of the requested region in 5781 * @mem. 5782 */ 5783 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryCopyFunction; 5784 5785 /** 5786 * Check if @mem1 and @mem2 occupy contiguous memory and return the offset of 5787 * @mem1 in the parent buffer in @offset. 5788 * 5789 * Params: 5790 * mem1 = a #GstMemory 5791 * mem2 = a #GstMemory 5792 * offset = a result offset 5793 * 5794 * Returns: %TRUE if @mem1 and @mem2 are in contiguous memory. 5795 */ 5796 public alias extern(C) int function(GstMemory* mem1, GstMemory* mem2, size_t* offset) GstMemoryIsSpanFunction; 5797 5798 /** 5799 * Get the memory of @mem that can be accessed according to the mode specified 5800 * in @info's flags. The function should return a pointer that contains at least 5801 * @maxsize bytes. 5802 * 5803 * Params: 5804 * mem = a #GstMemory 5805 * info = the #GstMapInfo to map with 5806 * maxsize = size to map 5807 * 5808 * Returns: a pointer to memory of which at least @maxsize bytes can be 5809 * accessed according to the access pattern in @info's flags. 5810 */ 5811 public alias extern(C) void* function(GstMemory* mem, GstMapInfo* info, size_t maxsize) GstMemoryMapFullFunction; 5812 5813 /** 5814 * Get the memory of @mem that can be accessed according to the mode specified 5815 * in @flags. The function should return a pointer that contains at least 5816 * @maxsize bytes. 5817 * 5818 * Params: 5819 * mem = a #GstMemory 5820 * maxsize = size to map 5821 * flags = access mode for the memory 5822 * 5823 * Returns: a pointer to memory of which at least @maxsize bytes can be 5824 * accessed according to the access pattern in @flags. 5825 */ 5826 public alias extern(C) void* function(GstMemory* mem, size_t maxsize, GstMapFlags flags) GstMemoryMapFunction; 5827 5828 /** 5829 * Share @size bytes from @mem starting at @offset and return them wrapped in a 5830 * new GstMemory object. If @size is set to -1, all bytes starting at @offset are 5831 * shared. This function does not make a copy of the bytes in @mem. 5832 * 5833 * Params: 5834 * mem = a #GstMemory 5835 * offset = an offset 5836 * size = a size or -1 5837 * 5838 * Returns: a new #GstMemory object sharing the requested region in @mem. 5839 */ 5840 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryShareFunction; 5841 5842 /** 5843 * Return the pointer previously retrieved with gst_memory_map() with @info. 5844 * 5845 * Params: 5846 * mem = a #GstMemory 5847 * info = a #GstMapInfo 5848 */ 5849 public alias extern(C) void function(GstMemory* mem, GstMapInfo* info) GstMemoryUnmapFullFunction; 5850 5851 /** 5852 * Return the pointer previously retrieved with gst_memory_map(). 5853 * 5854 * Params: 5855 * mem = a #GstMemory 5856 */ 5857 public alias extern(C) void function(GstMemory* mem) GstMemoryUnmapFunction; 5858 5859 /** 5860 * Function called when @meta is freed in @buffer. 5861 * 5862 * Params: 5863 * meta = a #GstMeta 5864 * buffer = a #GstBuffer 5865 */ 5866 public alias extern(C) void function(GstMeta* meta, GstBuffer* buffer) GstMetaFreeFunction; 5867 5868 /** 5869 * Function called when @meta is initialized in @buffer. 5870 * 5871 * Params: 5872 * meta = a #GstMeta 5873 * params = parameters passed to the init function 5874 * buffer = a #GstBuffer 5875 */ 5876 public alias extern(C) int function(GstMeta* meta, void* params, GstBuffer* buffer) GstMetaInitFunction; 5877 5878 /** 5879 * Function called for each @meta in @buffer as a result of performing a 5880 * transformation on @transbuf. Additional @type specific transform data 5881 * is passed to the function as @data. 5882 * 5883 * Implementations should check the @type of the transform and parse 5884 * additional type specific fields in @data that should be used to update 5885 * the metadata on @transbuf. 5886 * 5887 * Params: 5888 * transbuf = a #GstBuffer 5889 * meta = a #GstMeta 5890 * buffer = a #GstBuffer 5891 * type = the transform type 5892 * data = transform specific data. 5893 * 5894 * Returns: %TRUE if the transform could be performed 5895 */ 5896 public alias extern(C) int function(GstBuffer* transbuf, GstMeta* meta, GstBuffer* buffer, GQuark type, void* data) GstMetaTransformFunction; 5897 5898 /** 5899 * Function prototype for methods to create copies of instances. 5900 * 5901 * Params: 5902 * obj = MiniObject to copy 5903 * 5904 * Returns: reference to cloned instance. 5905 */ 5906 public alias extern(C) GstMiniObject* function(GstMiniObject* obj) GstMiniObjectCopyFunction; 5907 5908 /** 5909 * Function prototype for when a miniobject has lost its last refcount. 5910 * Implementation of the mini object are allowed to revive the 5911 * passed object by doing a gst_mini_object_ref(). If the object is not 5912 * revived after the dispose function, the function should return %TRUE 5913 * and the memory associated with the object is freed. 5914 * 5915 * Params: 5916 * obj = MiniObject to dispose 5917 * 5918 * Returns: %TRUE if the object should be cleaned up. 5919 */ 5920 public alias extern(C) int function(GstMiniObject* obj) GstMiniObjectDisposeFunction; 5921 5922 /** 5923 * Virtual function prototype for methods to free resources used by 5924 * mini-objects. 5925 * 5926 * Params: 5927 * obj = MiniObject to free 5928 */ 5929 public alias extern(C) void function(GstMiniObject* obj) GstMiniObjectFreeFunction; 5930 5931 /** 5932 * A #GstMiniObjectNotify function can be added to a mini object as a 5933 * callback that gets triggered when gst_mini_object_unref() drops the 5934 * last ref and @obj is about to be freed. 5935 * 5936 * Params: 5937 * userData = data that was provided when the notify was added 5938 * obj = the mini object 5939 */ 5940 public alias extern(C) void function(void* userData, GstMiniObject* obj) GstMiniObjectNotify; 5941 5942 /** 5943 * This function is called when the pad is activated during the element 5944 * READY to PAUSED state change. By default this function will call the 5945 * activate function that puts the pad in push mode but elements can 5946 * override this function to activate the pad in pull mode if they wish. 5947 * 5948 * Params: 5949 * pad = a #GstPad 5950 * parent = the parent of @pad 5951 * 5952 * Returns: %TRUE if the pad could be activated. 5953 */ 5954 public alias extern(C) int function(GstPad* pad, GstObject* parent) GstPadActivateFunction; 5955 5956 /** 5957 * The prototype of the push and pull activate functions. 5958 * 5959 * Params: 5960 * pad = a #GstPad 5961 * parent = the parent of @pad 5962 * mode = the requested activation mode of @pad 5963 * active = activate or deactivate the pad. 5964 * 5965 * Returns: %TRUE if the pad could be activated or deactivated. 5966 */ 5967 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstPadMode mode, int active) GstPadActivateModeFunction; 5968 5969 /** 5970 * A function that will be called on sinkpads when chaining buffers. 5971 * The function typically processes the data contained in the buffer and 5972 * either consumes the data or passes it on to the internally linked pad(s). 5973 * 5974 * The implementer of this function receives a refcount to @buffer and should 5975 * gst_buffer_unref() when the buffer is no longer needed. 5976 * 5977 * When a chain function detects an error in the data stream, it must post an 5978 * error on the bus and return an appropriate #GstFlowReturn value. 5979 * 5980 * Params: 5981 * pad = the sink #GstPad that performed the chain. 5982 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 5983 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 5984 * during the execution of this function. 5985 * buffer = the #GstBuffer that is chained, not %NULL. 5986 * 5987 * Returns: #GST_FLOW_OK for success 5988 */ 5989 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBuffer* buffer) GstPadChainFunction; 5990 5991 /** 5992 * A function that will be called on sinkpads when chaining buffer lists. 5993 * The function typically processes the data contained in the buffer list and 5994 * either consumes the data or passes it on to the internally linked pad(s). 5995 * 5996 * The implementer of this function receives a refcount to @list and 5997 * should gst_buffer_list_unref() when the list is no longer needed. 5998 * 5999 * When a chainlist function detects an error in the data stream, it must 6000 * post an error on the bus and return an appropriate #GstFlowReturn value. 6001 * 6002 * Params: 6003 * pad = the sink #GstPad that performed the chain. 6004 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6005 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6006 * during the execution of this function. 6007 * list = the #GstBufferList that is chained, not %NULL. 6008 * 6009 * Returns: #GST_FLOW_OK for success 6010 */ 6011 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBufferList* list) GstPadChainListFunction; 6012 6013 /** 6014 * Function signature to handle an event for the pad. 6015 * 6016 * This variant is for specific elements that will take into account the 6017 * last downstream flow return (from a pad push), in which case they can 6018 * return it. 6019 * 6020 * Params: 6021 * pad = the #GstPad to handle the event. 6022 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6023 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6024 * during the execution of this function. 6025 * event = the #GstEvent to handle. 6026 * 6027 * Returns: %GST_FLOW_OK if the event was handled properly, or any other 6028 * #GstFlowReturn dependent on downstream state. 6029 * 6030 * Since: 1.8 6031 */ 6032 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFullFunction; 6033 6034 /** 6035 * Function signature to handle an event for the pad. 6036 * 6037 * Params: 6038 * pad = the #GstPad to handle the event. 6039 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6040 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6041 * during the execution of this function. 6042 * event = the #GstEvent to handle. 6043 * 6044 * Returns: %TRUE if the pad could handle the event. 6045 */ 6046 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFunction; 6047 6048 /** 6049 * A forward function is called for all internally linked pads, see 6050 * gst_pad_forward(). 6051 * 6052 * Params: 6053 * pad = the #GstPad that is forwarded. 6054 * userData = the gpointer to optional user data. 6055 * 6056 * Returns: %TRUE if the dispatching procedure has to be stopped. 6057 */ 6058 public alias extern(C) int function(GstPad* pad, void* userData) GstPadForwardFunction; 6059 6060 /** 6061 * This function will be called on source pads when a peer element 6062 * request a buffer at the specified @offset and @length. If this function 6063 * returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The 6064 * contents of @buffer is invalid for any other return value. 6065 * 6066 * This function is installed on a source pad with 6067 * gst_pad_set_getrange_function() and can only be called on source pads after 6068 * they are successfully activated with gst_pad_activate_mode() with the 6069 * #GST_PAD_MODE_PULL. 6070 * 6071 * @offset and @length are always given in byte units. @offset must normally be a value 6072 * between 0 and the length in bytes of the data available on @pad. The 6073 * length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a 6074 * #GST_QUERY_SEEKING. 6075 * 6076 * Any @offset larger or equal than the length will make the function return 6077 * #GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not 6078 * contain a valid buffer. 6079 * 6080 * The buffer size of @buffer will only be smaller than @length when @offset is 6081 * near the end of the stream. In all other cases, the size of @buffer must be 6082 * exactly the requested size. 6083 * 6084 * It is allowed to call this function with a 0 @length and valid @offset, in 6085 * which case @buffer will contain a 0-sized buffer and the function returns 6086 * #GST_FLOW_OK. 6087 * 6088 * When this function is called with a -1 @offset, the sequentially next buffer 6089 * of length @length in the stream is returned. 6090 * 6091 * When this function is called with a -1 @length, a buffer with a default 6092 * optimal length is returned in @buffer. The length might depend on the value 6093 * of @offset. 6094 * 6095 * Params: 6096 * pad = the src #GstPad to perform the getrange on. 6097 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6098 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6099 * during the execution of this function. 6100 * offset = the offset of the range 6101 * length = the length of the range 6102 * buffer = a memory location to hold the result buffer, cannot be %NULL. 6103 * 6104 * Returns: #GST_FLOW_OK for success and a valid buffer in @buffer. Any other 6105 * return value leaves @buffer undefined. 6106 */ 6107 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, ulong offset, uint length, GstBuffer** buffer) GstPadGetRangeFunction; 6108 6109 /** 6110 * The signature of the internal pad link iterator function. 6111 * 6112 * Params: 6113 * pad = The #GstPad to query. 6114 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6115 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6116 * during the execution of this function. 6117 * 6118 * Returns: a new #GstIterator that will iterate over all pads that are 6119 * linked to the given pad on the inside of the parent element. 6120 * 6121 * the caller must call gst_iterator_free() after usage. 6122 */ 6123 public alias extern(C) GstIterator* function(GstPad* pad, GstObject* parent) GstPadIterIntLinkFunction; 6124 6125 /** 6126 * Function signature to handle a new link on the pad. 6127 * 6128 * Params: 6129 * pad = the #GstPad that is linked. 6130 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6131 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6132 * during the execution of this function. 6133 * peer = the peer #GstPad of the link 6134 * 6135 * Returns: the result of the link with the specified peer. 6136 */ 6137 public alias extern(C) GstPadLinkReturn function(GstPad* pad, GstObject* parent, GstPad* peer) GstPadLinkFunction; 6138 6139 /** 6140 * Callback used by gst_pad_add_probe(). Gets called to notify about the current 6141 * blocking type. 6142 * 6143 * The callback is allowed to modify the data pointer in @info. 6144 * 6145 * Params: 6146 * pad = the #GstPad that is blocked 6147 * info = #GstPadProbeInfo 6148 * userData = the gpointer to optional user data. 6149 * 6150 * Returns: a #GstPadProbeReturn 6151 */ 6152 public alias extern(C) GstPadProbeReturn function(GstPad* pad, GstPadProbeInfo* info, void* userData) GstPadProbeCallback; 6153 6154 /** 6155 * The signature of the query function. 6156 * 6157 * Params: 6158 * pad = the #GstPad to query. 6159 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6160 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6161 * during the execution of this function. 6162 * query = the #GstQuery object to execute 6163 * 6164 * Returns: %TRUE if the query could be performed. 6165 */ 6166 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstQuery* query) GstPadQueryFunction; 6167 6168 /** 6169 * Callback used by gst_pad_sticky_events_foreach(). 6170 * 6171 * When this function returns %TRUE, the next event will be 6172 * returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return. 6173 * 6174 * When @event is set to %NULL, the item will be removed from the list of sticky events. 6175 * @event can be replaced by assigning a new reference to it. 6176 * This function is responsible for unreffing the old event when 6177 * removing or modifying. 6178 * 6179 * Params: 6180 * pad = the #GstPad. 6181 * event = a sticky #GstEvent. 6182 * userData = the #gpointer to optional user data. 6183 * 6184 * Returns: %TRUE if the iteration should continue 6185 */ 6186 public alias extern(C) int function(GstPad* pad, GstEvent** event, void* userData) GstPadStickyEventsForeachFunction; 6187 6188 /** 6189 * Function signature to handle a unlinking the pad prom its peer. 6190 * 6191 * Params: 6192 * pad = the #GstPad that is linked. 6193 * parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT 6194 * flag is set, @parent is guaranteed to be not-%NULL and remain valid 6195 * during the execution of this function. 6196 */ 6197 public alias extern(C) void function(GstPad* pad, GstObject* parent) GstPadUnlinkFunction; 6198 6199 /** 6200 * A function that can be used with e.g. gst_registry_feature_filter() 6201 * to get a list of pluginfeature that match certain criteria. 6202 * 6203 * Params: 6204 * feature = the pluginfeature to check 6205 * userData = the user_data that has been passed on e.g. 6206 * gst_registry_feature_filter() 6207 * 6208 * Returns: %TRUE for a positive match, %FALSE otherwise 6209 */ 6210 public alias extern(C) int function(GstPluginFeature* feature, void* userData) GstPluginFeatureFilter; 6211 6212 /** 6213 * A function that can be used with e.g. gst_registry_plugin_filter() 6214 * to get a list of plugins that match certain criteria. 6215 * 6216 * Params: 6217 * plugin = the plugin to check 6218 * userData = the user_data that has been passed on e.g. gst_registry_plugin_filter() 6219 * 6220 * Returns: %TRUE for a positive match, %FALSE otherwise 6221 */ 6222 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginFilter; 6223 6224 /** 6225 * A plugin should provide a pointer to a function of either #GstPluginInitFunc 6226 * or this type in the plugin_desc struct. 6227 * The function will be called by the loader at startup. One would then 6228 * register each #GstPluginFeature. This version allows 6229 * user data to be passed to init function (useful for bindings). 6230 * 6231 * Params: 6232 * plugin = The plugin object 6233 * userData = extra data 6234 * 6235 * Returns: %TRUE if plugin initialised successfully 6236 */ 6237 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginInitFullFunc; 6238 6239 /** 6240 * A plugin should provide a pointer to a function of this type in the 6241 * plugin_desc struct. 6242 * This function will be called by the loader at startup. One would then 6243 * register each #GstPluginFeature. 6244 * 6245 * Params: 6246 * plugin = The plugin object 6247 * 6248 * Returns: %TRUE if plugin initialised successfully 6249 */ 6250 public alias extern(C) int function(GstPlugin* plugin) GstPluginInitFunc; 6251 6252 /** 6253 * A function that will be called in gst_structure_filter_and_map_in_place(). 6254 * The function may modify @value, and the value will be removed from 6255 * the structure if %FALSE is returned. 6256 * 6257 * Params: 6258 * fieldId = the #GQuark of the field name 6259 * value = the #GValue of the field 6260 * userData = user data 6261 * 6262 * Returns: %TRUE if the field should be preserved, %FALSE if it 6263 * should be removed. 6264 */ 6265 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureFilterMapFunc; 6266 6267 /** 6268 * A function that will be called in gst_structure_foreach(). The function may 6269 * not modify @value. 6270 * 6271 * Params: 6272 * fieldId = the #GQuark of the field name 6273 * value = the #GValue of the field 6274 * userData = user data 6275 * 6276 * Returns: %TRUE if the foreach operation should continue, %FALSE if 6277 * the foreach operation should stop with %FALSE. 6278 */ 6279 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureForeachFunc; 6280 6281 /** 6282 * A function that will be called in gst_structure_map_in_place(). The function 6283 * may modify @value. 6284 * 6285 * Params: 6286 * fieldId = the #GQuark of the field name 6287 * value = the #GValue of the field 6288 * userData = user data 6289 * 6290 * Returns: %TRUE if the map operation should continue, %FALSE if 6291 * the map operation should stop with %FALSE. 6292 */ 6293 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureMapFunc; 6294 6295 /** 6296 * A function that will be called in gst_tag_list_foreach(). The function may 6297 * not modify the tag list. 6298 * 6299 * Params: 6300 * list = the #GstTagList 6301 * tag = a name of a tag in @list 6302 * userData = user data 6303 */ 6304 public alias extern(C) void function(GstTagList* list, const(char)* tag, void* userData) GstTagForeachFunc; 6305 6306 /** 6307 * A function for merging multiple values of a tag used when registering 6308 * tags. 6309 * 6310 * Params: 6311 * dest = the destination #GValue 6312 * src = the source #GValue 6313 */ 6314 public alias extern(C) void function(GValue* dest, GValue* src) GstTagMergeFunc; 6315 6316 /** 6317 * A function that will repeatedly be called in the thread created by 6318 * a #GstTask. 6319 * 6320 * Params: 6321 * userData = user data passed to the function 6322 */ 6323 public alias extern(C) void function(void* userData) GstTaskFunction; 6324 6325 /** 6326 * Task function, see gst_task_pool_push(). 6327 * 6328 * Params: 6329 * userData = user data for the task function 6330 */ 6331 public alias extern(C) void function(void* userData) GstTaskPoolFunction; 6332 6333 /** 6334 * Custom GstTask thread callback functions that can be installed. 6335 * 6336 * Params: 6337 * task = The #GstTask 6338 * thread = The #GThread 6339 * userData = user data 6340 */ 6341 public alias extern(C) void function(GstTask* task, GThread* thread, void* userData) GstTaskThreadFunc; 6342 6343 /** 6344 * A function that will be called by typefinding. 6345 * 6346 * Params: 6347 * find = A #GstTypeFind structure 6348 * userData = optional data to pass to the function 6349 */ 6350 public alias extern(C) void function(GstTypeFind* find, void* userData) GstTypeFindFunction; 6351 6352 /** 6353 * Used together with gst_value_compare() to compare #GValue items. 6354 * 6355 * Params: 6356 * value1 = first value for comparison 6357 * value2 = second value for comparison 6358 * 6359 * Returns: one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN 6360 * or GST_VALUE_UNORDERED 6361 */ 6362 public alias extern(C) int function(GValue* value1, GValue* value2) GstValueCompareFunc; 6363 6364 /** 6365 * Used by gst_value_deserialize() to parse a non-binary form into the #GValue. 6366 * 6367 * Params: 6368 * dest = a #GValue 6369 * s = a string 6370 * 6371 * Returns: %TRUE for success 6372 */ 6373 public alias extern(C) int function(GValue* dest, const(char)* s) GstValueDeserializeFunc; 6374 6375 /** 6376 * Used by gst_value_serialize() to obtain a non-binary form of the #GValue. 6377 * 6378 * Free-function: g_free 6379 * 6380 * Params: 6381 * value1 = a #GValue 6382 * 6383 * Returns: the string representation of the value 6384 */ 6385 public alias extern(C) char* function(GValue* value1) GstValueSerializeFunc;