gstsample.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /* GStreamer
  2. * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
  3. * 2000 Wim Taymans <wtay@chello.be>
  4. *
  5. * gstsample.h: Header for GstSample 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. #ifndef __GST_SAMPLE_H__
  23. #define __GST_SAMPLE_H__
  24. #include <gst/gstbuffer.h>
  25. #include <gst/gstbufferlist.h>
  26. #include <gst/gstcaps.h>
  27. #include <gst/gstsegment.h>
  28. G_BEGIN_DECLS
  29. GST_EXPORT GType _gst_sample_type;
  30. #define GST_TYPE_SAMPLE (_gst_sample_type)
  31. #define GST_IS_SAMPLE(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_SAMPLE))
  32. #define GST_SAMPLE_CAST(obj) ((GstSample *)obj)
  33. #define GST_SAMPLE(obj) (GST_SAMPLE_CAST(obj))
  34. /**
  35. * GstSample:
  36. *
  37. * The opaque structure of a #GstSample. A sample contains a typed memory
  38. * block and the associated timing information. It is mainly used to
  39. * exchange buffers with an application.
  40. */
  41. typedef struct _GstSample GstSample;
  42. GType gst_sample_get_type (void);
  43. /* allocation */
  44. GstSample * gst_sample_new (GstBuffer *buffer,
  45. GstCaps *caps,
  46. const GstSegment *segment,
  47. GstStructure *info);
  48. GstBuffer * gst_sample_get_buffer (GstSample *sample);
  49. GstCaps * gst_sample_get_caps (GstSample *sample);
  50. GstSegment * gst_sample_get_segment (GstSample *sample);
  51. const GstStructure * gst_sample_get_info (GstSample *sample);
  52. GstBufferList * gst_sample_get_buffer_list (GstSample *sample);
  53. void gst_sample_set_buffer_list (GstSample *sample, GstBufferList *buffer_list);
  54. /* refcounting */
  55. /**
  56. * gst_sample_ref:
  57. * @sample: a #GstSample
  58. *
  59. * Increases the refcount of the given sample by one.
  60. *
  61. * Returns: (transfer full): @sample
  62. */
  63. static inline GstSample *
  64. gst_sample_ref (GstSample * sample)
  65. {
  66. return GST_SAMPLE_CAST (gst_mini_object_ref (GST_MINI_OBJECT_CAST (
  67. sample)));
  68. }
  69. /**
  70. * gst_sample_unref:
  71. * @sample: (transfer full): a #GstSample
  72. *
  73. * Decreases the refcount of the sample. If the refcount reaches 0, the
  74. * sample will be freed.
  75. */
  76. static inline void
  77. gst_sample_unref (GstSample * sample)
  78. {
  79. gst_mini_object_unref (GST_MINI_OBJECT_CAST (sample));
  80. }
  81. /* copy sample */
  82. /**
  83. * gst_sample_copy:
  84. * @buf: a #GstSample.
  85. *
  86. * Create a copy of the given sample. This will also make a newly allocated
  87. * copy of the data the source sample contains.
  88. *
  89. * Returns: (transfer full): a new copy of @buf.
  90. *
  91. * Since: 1.2
  92. */
  93. static inline GstSample *
  94. gst_sample_copy (const GstSample * buf)
  95. {
  96. return GST_SAMPLE_CAST (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (buf)));
  97. }
  98. /**
  99. * gst_value_set_sample:
  100. * @v: a #GValue to receive the data
  101. * @b: (transfer none): a #GstSample to assign to the GstValue
  102. *
  103. * Sets @b as the value of @v. Caller retains reference to sample.
  104. */
  105. #define gst_value_set_sample(v,b) g_value_set_boxed((v),(b))
  106. /**
  107. * gst_value_take_sample:
  108. * @v: a #GValue to receive the data
  109. * @b: (transfer full): a #GstSample to assign to the GstValue
  110. *
  111. * Sets @b as the value of @v. Caller gives away reference to sample.
  112. */
  113. #define gst_value_take_sample(v,b) g_value_take_boxed(v,(b))
  114. /**
  115. * gst_value_get_sample:
  116. * @v: a #GValue to query
  117. *
  118. * Receives a #GstSample as the value of @v. Does not return a reference to
  119. * the sample, so the pointer is only valid for as long as the caller owns
  120. * a reference to @v.
  121. *
  122. * Returns: (transfer none): sample
  123. */
  124. #define gst_value_get_sample(v) GST_SAMPLE_CAST (g_value_get_boxed(v))
  125. #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
  126. G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstSample, gst_sample_unref)
  127. #endif
  128. G_END_DECLS
  129. #endif /* __GST_SAMPLE_H__ */