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