gstbuffer.inc 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. {* GStreamer
  2. * Copyright (C) 1999,2000 Erik Walthinsen <[email protected]>
  3. * 2000 Wim Taymans <[email protected]>
  4. *
  5. * gstbuffer.h: Header for GstBuffer object
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Library General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2 of the License, or (at your option) any later version.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Library General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Library General Public
  18. * License along with this library; if not, write to the
  19. * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
  20. * Boston, MA 02110-1301, USA.
  21. *}
  22. Type
  23. P_GstBuffer = ^T_GstBuffer;
  24. P_GstParentBufferMeta = ^T_GstParentBufferMeta;
  25. P_GstReferenceTimestampMeta = ^T_GstReferenceTimestampMeta;
  26. PGBytes = ^TGBytes;
  27. Pgpointer = ^Tgpointer;
  28. Pgsize = ^Tgsize;
  29. PGstBuffer_autoptr = ^TGstBuffer_autoptr;
  30. PGstBuffer_listautoptr = ^TGstBuffer_listautoptr;
  31. PGstBuffer_queueautoptr = ^TGstBuffer_queueautoptr;
  32. PGstBuffer_slistautoptr = ^TGstBuffer_slistautoptr;
  33. PGstBufferCopyFlags = ^TGstBufferCopyFlags;
  34. PGstBufferFlags = ^TGstBufferFlags;
  35. PGstBufferPool_autoptr = ^TGstBufferPool_autoptr;
  36. PGstBufferPool_listautoptr = ^TGstBufferPool_listautoptr;
  37. PGstBufferPool_queueautoptr = ^TGstBufferPool_queueautoptr;
  38. PGstBufferPool_slistautoptr = ^TGstBufferPool_slistautoptr;
  39. PGstParentBufferMeta = ^TGstParentBufferMeta;
  40. PGstReferenceTimestampMeta = ^TGstReferenceTimestampMeta;
  41. {$IFDEF FPC}
  42. {$PACKRECORDS C}
  43. {$ENDIF}
  44. TGstBufferCopyFlags = (
  45. GST_BUFFER_COPY_NONE := 0,
  46. GST_BUFFER_COPY_FLAGS := 1 shl 0,
  47. GST_BUFFER_COPY_TIMESTAMPS := 1 shl 1,
  48. GST_BUFFER_COPY_META := 1 shl 2,
  49. GST_BUFFER_COPY_MEMORY := 1 shl 3,
  50. GST_BUFFER_COPY_MERGE := 1 shl 4,
  51. GST_BUFFER_COPY_DEEP_ := 1 shl 5
  52. );
  53. TGstBufferFlags = (
  54. GST_BUFFER_FLAG_LIVE := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 0,
  55. GST_BUFFER_FLAG_DECODE_ONLY := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 1,
  56. GST_BUFFER_FLAG_DISCONT := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 2,
  57. GST_BUFFER_FLAG_RESYNC := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 3,
  58. GST_BUFFER_FLAG_CORRUPTED := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 4,
  59. GST_BUFFER_FLAG_MARKER := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 5,
  60. GST_BUFFER_FLAG_HEADER := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 6,
  61. GST_BUFFER_FLAG_GAP := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 7,
  62. GST_BUFFER_FLAG_DROPPABLE := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 8,
  63. GST_BUFFER_FLAG_DELTA_UNIT := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 9,
  64. GST_BUFFER_FLAG_TAG_MEMORY := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 10,
  65. GST_BUFFER_FLAG_SYNC_AFTER := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 11,
  66. GST_BUFFER_FLAG_NON_DROPPABLE := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 12,
  67. GST_BUFFER_FLAG_LAST := ord(GST_MINI_OBJECT_FLAG_LAST ) shl 16
  68. );
  69. // T_GstBuffer moved to gstrec.inc
  70. T_GstParentBufferMeta = record
  71. parent : TGstMeta;
  72. buffer : PGstBuffer;
  73. end;
  74. TGstParentBufferMeta = T_GstParentBufferMeta;
  75. T_GstReferenceTimestampMeta = record
  76. parent : TGstMeta;
  77. reference : PGstCaps;
  78. timestamp : TGstClockTime;
  79. duration : TGstClockTime;
  80. end;
  81. TGstReferenceTimestampMeta = T_GstReferenceTimestampMeta;
  82. TGstBuffer_autoptr = PGstBuffer;
  83. TGstBuffer_listautoptr = PGList;
  84. TGstBuffer_slistautoptr = PGSList;
  85. TGstBuffer_queueautoptr = PGQueue;
  86. TGstBufferPool_autoptr = PGstBufferPool;
  87. TGstBufferPool_listautoptr = PGList;
  88. TGstBufferPool_slistautoptr = PGSList;
  89. TGstBufferPool_queueautoptr = PGQueue;
  90. function gst_buffer_get_type:TGType;cdecl;external gstreamerlib name 'gst_buffer_get_type';
  91. function gst_buffer_get_max_memory:Tguint;cdecl;external gstreamerlib name 'gst_buffer_get_max_memory';
  92. function gst_buffer_new:PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_new';
  93. function gst_buffer_new_allocate(allocator:PGstAllocator; size:Tgsize; params:PGstAllocationParams):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_new_allocate';
  94. function gst_buffer_new_wrapped_full(flags:TGstMemoryFlags; data:Tgpointer; maxsize:Tgsize; offset:Tgsize; size:Tgsize;
  95. user_data:Tgpointer; notify:TGDestroyNotify):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_new_wrapped_full';
  96. function gst_buffer_new_wrapped(data:Tgpointer; size:Tgsize):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_new_wrapped';
  97. function gst_buffer_new_wrapped_bytes(bytes:PGBytes):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_new_wrapped_bytes';
  98. function gst_buffer_n_memory(buffer:PGstBuffer):Tguint;cdecl;external gstreamerlib name 'gst_buffer_n_memory';
  99. procedure gst_buffer_insert_memory(buffer:PGstBuffer; idx:Tgint; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_insert_memory';
  100. procedure gst_buffer_replace_memory_range(buffer:PGstBuffer; idx:Tguint; length:Tgint; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_replace_memory_range';
  101. function gst_buffer_peek_memory(buffer:PGstBuffer; idx:Tguint):PGstMemory;cdecl;external gstreamerlib name 'gst_buffer_peek_memory';
  102. function gst_buffer_get_memory_range(buffer:PGstBuffer; idx:Tguint; length:Tgint):PGstMemory;cdecl;external gstreamerlib name 'gst_buffer_get_memory_range';
  103. procedure gst_buffer_remove_memory_range(buffer:PGstBuffer; idx:Tguint; length:Tgint);cdecl;external gstreamerlib name 'gst_buffer_remove_memory_range';
  104. procedure gst_buffer_prepend_memory(buffer:PGstBuffer; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_prepend_memory';
  105. procedure gst_buffer_append_memory(buffer:PGstBuffer; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_append_memory';
  106. procedure gst_buffer_replace_memory(buffer:PGstBuffer; idx:Tguint; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_replace_memory';
  107. procedure gst_buffer_replace_all_memory(buffer:PGstBuffer; mem:PGstMemory);cdecl;external gstreamerlib name 'gst_buffer_replace_all_memory';
  108. function gst_buffer_get_memory(buffer:PGstBuffer; idx:Tguint):PGstMemory;cdecl;external gstreamerlib name 'gst_buffer_get_memory';
  109. function gst_buffer_get_all_memory(buffer:PGstBuffer):PGstMemory;cdecl;external gstreamerlib name 'gst_buffer_get_all_memory';
  110. procedure gst_buffer_remove_memory(buffer:PGstBuffer; idx:Tguint);cdecl;external gstreamerlib name 'gst_buffer_remove_memory';
  111. procedure gst_buffer_remove_all_memory(buffer:PGstBuffer);cdecl;external gstreamerlib name 'gst_buffer_remove_all_memory';
  112. function gst_buffer_find_memory(buffer:PGstBuffer; offset:Tgsize; size:Tgsize; idx:Pguint; length:Pguint;
  113. skip:Pgsize):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_find_memory';
  114. function gst_buffer_is_memory_range_writable(buffer:PGstBuffer; idx:Tguint; length:Tgint):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_is_memory_range_writable';
  115. function gst_buffer_is_all_memory_writable(buffer:PGstBuffer):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_is_all_memory_writable';
  116. function gst_buffer_fill(buffer:PGstBuffer; offset:Tgsize; src:Tgconstpointer; size:Tgsize):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_fill';
  117. function gst_buffer_extract(buffer:PGstBuffer; offset:Tgsize; dest:Tgpointer; size:Tgsize):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_extract';
  118. function gst_buffer_memcmp(buffer:PGstBuffer; offset:Tgsize; mem:Tgconstpointer; size:Tgsize):Tgint;cdecl;external gstreamerlib name 'gst_buffer_memcmp';
  119. function gst_buffer_memset(buffer:PGstBuffer; offset:Tgsize; val:Tguint8; size:Tgsize):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_memset';
  120. function gst_buffer_get_sizes_range(buffer:PGstBuffer; idx:Tguint; length:Tgint; offset:Pgsize; maxsize:Pgsize):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_get_sizes_range';
  121. function gst_buffer_resize_range(buffer:PGstBuffer; idx:Tguint; length:Tgint; offset:Tgssize; size:Tgssize):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_resize_range';
  122. function gst_buffer_get_sizes(buffer:PGstBuffer; offset:Pgsize; maxsize:Pgsize):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_get_sizes';
  123. function gst_buffer_get_size(buffer:PGstBuffer):Tgsize;cdecl;external gstreamerlib name 'gst_buffer_get_size';
  124. procedure gst_buffer_resize(buffer:PGstBuffer; offset:Tgssize; size:Tgssize);cdecl;external gstreamerlib name 'gst_buffer_resize';
  125. procedure gst_buffer_set_size(buffer:PGstBuffer; size:Tgssize);cdecl;external gstreamerlib name 'gst_buffer_set_size';
  126. function gst_buffer_map_range(buffer:PGstBuffer; idx:Tguint; length:Tgint; info:PGstMapInfo; flags:TGstMapFlags):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_map_range';
  127. function gst_buffer_map(buffer:PGstBuffer; info:PGstMapInfo; flags:TGstMapFlags):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_map';
  128. procedure gst_buffer_unmap(buffer:PGstBuffer; info:PGstMapInfo);cdecl;external gstreamerlib name 'gst_buffer_unmap';
  129. procedure gst_buffer_extract_dup(buffer:PGstBuffer; offset:Tgsize; size:Tgsize; dest:Pgpointer; dest_size:Pgsize);cdecl;external gstreamerlib name 'gst_buffer_extract_dup';
  130. function gst_buffer_get_flags(buffer:PGstBuffer):TGstBufferFlags;cdecl;external gstreamerlib name 'gst_buffer_get_flags';
  131. function gst_buffer_has_flags(buffer:PGstBuffer; flags:TGstBufferFlags):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_has_flags';
  132. function gst_buffer_set_flags(buffer:PGstBuffer; flags:TGstBufferFlags):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_set_flags';
  133. function gst_buffer_unset_flags(buffer:PGstBuffer; flags:TGstBufferFlags):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_unset_flags';
  134. {
  135. static inline GstBuffer *
  136. gst_buffer_ref (GstBuffer * buf)
  137. return (GstBuffer *) gst_mini_object_ref (((GstMiniObject*)(buf)));
  138. # 441 "gstbuffer.h"
  139. static inline void
  140. gst_buffer_unref (GstBuffer * buf)
  141. gst_mini_object_unref (((GstMiniObject*)(buf)));
  142. # 460 "gstbuffer.h"
  143. static inline void
  144. gst_clear_buffer (GstBuffer ** buf_ptr)
  145. do _Static_assert (sizeof *(((GstMiniObject **) buf_ptr)) == sizeof (gpointer), "Expression evaluates to false"); __typeof__((((GstMiniObject **) buf_ptr))) _pp = (((GstMiniObject **) buf_ptr)); __typeof__(*(((GstMiniObject **) buf_ptr))) _ptr = *_pp; *_pp =
  146. # 463 "gstbuffer.h" 3 4
  147. ((void *)0)
  148. # 463 "gstbuffer.h"
  149. ; if (_ptr) (gst_mini_object_unref) (_ptr); while (0) ;
  150. # 479 "gstbuffer.h"
  151. static inline GstBuffer *
  152. gst_buffer_copy (const GstBuffer * buf)
  153. return (((GstBuffer *)(gst_mini_object_copy (((const GstMiniObject*)(buf))))));
  154. }
  155. (* Const before type ignored *)
  156. function gst_buffer_copy_deep(buf:PGstBuffer):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_copy_deep';
  157. function gst_buffer_copy_into(dest:PGstBuffer; src:PGstBuffer; flags:TGstBufferCopyFlags; offset:Tgsize; size:Tgsize):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_copy_into';
  158. {
  159. static inline gboolean
  160. gst_buffer_replace (GstBuffer **obuf, GstBuffer *nbuf)
  161. return gst_mini_object_replace ((GstMiniObject **) obuf, (GstMiniObject *) nbuf);
  162. }
  163. function gst_buffer_copy_region(parent:PGstBuffer; flags:TGstBufferCopyFlags; offset:Tgsize; size:Tgsize):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_copy_region';
  164. function gst_buffer_append_region(buf1:PGstBuffer; buf2:PGstBuffer; offset:Tgssize; size:Tgssize):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_append_region';
  165. function gst_buffer_append(buf1:PGstBuffer; buf2:PGstBuffer):PGstBuffer;cdecl;external gstreamerlib name 'gst_buffer_append';
  166. type
  167. TGstBufferForeachMetaFunc = function (buffer:PGstBuffer; meta:PPGstMeta; user_data:Tgpointer):Tgboolean;cdecl;
  168. function gst_buffer_get_meta(buffer:PGstBuffer; api:TGType):PGstMeta;cdecl;external gstreamerlib name 'gst_buffer_get_meta';
  169. function gst_buffer_get_n_meta(buffer:PGstBuffer; api_type:TGType):Tguint;cdecl;external gstreamerlib name 'gst_buffer_get_n_meta';
  170. (* Const before type ignored *)
  171. function gst_buffer_add_meta(buffer:PGstBuffer; info:PGstMetaInfo; params:Tgpointer):PGstMeta;cdecl;external gstreamerlib name 'gst_buffer_add_meta';
  172. function gst_buffer_remove_meta(buffer:PGstBuffer; meta:PGstMeta):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_remove_meta';
  173. function gst_buffer_iterate_meta(buffer:PGstBuffer; state:Pgpointer):PGstMeta;cdecl;external gstreamerlib name 'gst_buffer_iterate_meta';
  174. function gst_buffer_iterate_meta_filtered(buffer:PGstBuffer; state:Pgpointer; meta_api_type:TGType):PGstMeta;cdecl;external gstreamerlib name 'gst_buffer_iterate_meta_filtered';
  175. function gst_buffer_foreach_meta(buffer:PGstBuffer; func:TGstBufferForeachMetaFunc; user_data:Tgpointer):Tgboolean;cdecl;external gstreamerlib name 'gst_buffer_foreach_meta';
  176. function gst_parent_buffer_meta_api_get_type:TGType;cdecl;external gstreamerlib name 'gst_parent_buffer_meta_api_get_type';
  177. (* Const before type ignored *)
  178. function gst_parent_buffer_meta_get_info:PGstMetaInfo;cdecl;external gstreamerlib name 'gst_parent_buffer_meta_get_info';
  179. function gst_buffer_add_parent_buffer_meta(buffer:PGstBuffer; ref:PGstBuffer):PGstParentBufferMeta;cdecl;external gstreamerlib name 'gst_buffer_add_parent_buffer_meta';
  180. function gst_reference_timestamp_meta_api_get_type:TGType;cdecl;external gstreamerlib name 'gst_reference_timestamp_meta_api_get_type';
  181. (* Const before type ignored *)
  182. function gst_reference_timestamp_meta_get_info:PGstMetaInfo;cdecl;external gstreamerlib name 'gst_reference_timestamp_meta_get_info';
  183. function gst_buffer_add_reference_timestamp_meta(buffer:PGstBuffer; reference:PGstCaps; timestamp:TGstClockTime; duration:TGstClockTime):PGstReferenceTimestampMeta;cdecl;external gstreamerlib name 'gst_buffer_add_reference_timestamp_meta';
  184. function gst_buffer_get_reference_timestamp_meta(buffer:PGstBuffer; reference:PGstCaps):PGstReferenceTimestampMeta;cdecl;external gstreamerlib name 'gst_buffer_get_reference_timestamp_meta';