video: Update/add docs
This commit is contained in:
parent
a1b7f84794
commit
33e8e137a6
@ -294,6 +294,7 @@ gst_base_video_encoder_get_oldest_frame
|
|||||||
gst_base_video_encoder_finish_frame
|
gst_base_video_encoder_finish_frame
|
||||||
gst_base_video_encoder_set_latency
|
gst_base_video_encoder_set_latency
|
||||||
gst_base_video_encoder_set_latency_fields
|
gst_base_video_encoder_set_latency_fields
|
||||||
|
gst_base_video_encoder_set_headers
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GST_BASE_VIDEO_ENCODER
|
GST_BASE_VIDEO_ENCODER
|
||||||
GST_IS_BASE_VIDEO_ENCODER
|
GST_IS_BASE_VIDEO_ENCODER
|
||||||
@ -326,6 +327,7 @@ gst_base_video_decoder_alloc_src_buffer
|
|||||||
gst_base_video_decoder_alloc_src_frame
|
gst_base_video_decoder_alloc_src_frame
|
||||||
gst_base_video_decoder_get_state
|
gst_base_video_decoder_get_state
|
||||||
gst_base_video_decoder_get_max_decode_time
|
gst_base_video_decoder_get_max_decode_time
|
||||||
|
gst_base_video_decoder_drop_frame
|
||||||
gst_base_video_decoder_finish_frame
|
gst_base_video_decoder_finish_frame
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GST_BASE_VIDEO_DECODER
|
GST_BASE_VIDEO_DECODER
|
||||||
@ -336,10 +338,17 @@ GST_BASE_VIDEO_DECODER_CLASS
|
|||||||
GST_IS_BASE_VIDEO_DECODER_CLASS
|
GST_IS_BASE_VIDEO_DECODER_CLASS
|
||||||
GST_BASE_VIDEO_DECODER_GET_CLASS
|
GST_BASE_VIDEO_DECODER_GET_CLASS
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
yes
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gstbasevideocodec</FILE>
|
<FILE>gstbasevideocodec</FILE>
|
||||||
<TITLE>GstBaseVideoCodec</TITLE>
|
<TITLE>GstBaseVideoCodec</TITLE>
|
||||||
|
GstBaseVideoCodec
|
||||||
|
GstVideoFrame
|
||||||
|
gst_video_frame_ref
|
||||||
|
gst_video_frame_unref
|
||||||
|
gst_base_video_codec_new_frame
|
||||||
|
GstVideoState
|
||||||
|
gst_video_state_get_timestamp
|
||||||
GST_BASE_VIDEO_CODEC_SINK_NAME
|
GST_BASE_VIDEO_CODEC_SINK_NAME
|
||||||
GST_BASE_VIDEO_CODEC_SRC_NAME
|
GST_BASE_VIDEO_CODEC_SRC_NAME
|
||||||
GST_BASE_VIDEO_CODEC_SRC_PAD
|
GST_BASE_VIDEO_CODEC_SRC_PAD
|
||||||
@ -347,13 +356,8 @@ GST_BASE_VIDEO_CODEC_SINK_PAD
|
|||||||
GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA
|
GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_LOCK
|
GST_BASE_VIDEO_CODEC_STREAM_LOCK
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK
|
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK
|
||||||
GstVideoState
|
|
||||||
GstVideoFrame
|
|
||||||
GstBaseVideoCodec
|
|
||||||
GstBaseVideoCodecClass
|
|
||||||
gst_base_video_codec_new_frame
|
|
||||||
gst_base_video_codec_free_frame
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
|
GstBaseVideoCodecClass
|
||||||
GST_BASE_VIDEO_CODEC
|
GST_BASE_VIDEO_CODEC
|
||||||
GST_IS_BASE_VIDEO_CODEC
|
GST_IS_BASE_VIDEO_CODEC
|
||||||
GST_TYPE_BASE_VIDEO_CODEC
|
GST_TYPE_BASE_VIDEO_CODEC
|
||||||
@ -361,6 +365,7 @@ gst_base_video_codec_get_type
|
|||||||
GST_BASE_VIDEO_CODEC_CLASS
|
GST_BASE_VIDEO_CODEC_CLASS
|
||||||
GST_IS_BASE_VIDEO_CODEC_CLASS
|
GST_IS_BASE_VIDEO_CODEC_CLASS
|
||||||
GST_BASE_VIDEO_CODEC_GET_CLASS
|
GST_BASE_VIDEO_CODEC_GET_CLASS
|
||||||
|
gst_video_frame_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
@ -437,7 +442,6 @@ gst_camerabin_preview_set_caps
|
|||||||
<FILE>gstbasevideoutils</FILE>
|
<FILE>gstbasevideoutils</FILE>
|
||||||
gst_base_video_rawvideo_convert
|
gst_base_video_rawvideo_convert
|
||||||
gst_base_video_encoded_video_convert
|
gst_base_video_encoded_video_convert
|
||||||
gst_video_state_get_timestamp
|
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
|
@ -21,6 +21,12 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:gstbasevideocodec
|
||||||
|
* @short_description: Base class for video codecs
|
||||||
|
* @see_also: #GstBaseVideoDecoder , #GstBaseVideoEncoder
|
||||||
|
*/
|
||||||
|
|
||||||
/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
|
/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
|
||||||
* with newer GLib versions (>= 2.31.0) */
|
* with newer GLib versions (>= 2.31.0) */
|
||||||
#define GLIB_DISABLE_DEPRECATION_WARNINGS
|
#define GLIB_DISABLE_DEPRECATION_WARNINGS
|
||||||
@ -189,6 +195,14 @@ gst_base_video_codec_change_state (GstElement * element,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_base_video_codec_new_frame:
|
||||||
|
* @base_video_codec: a #GstBaseVideoCodec
|
||||||
|
*
|
||||||
|
* Create a new blank #GstVideoFrame.
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): a new #GstVideoFrame
|
||||||
|
*/
|
||||||
GstVideoFrame *
|
GstVideoFrame *
|
||||||
gst_base_video_codec_new_frame (GstBaseVideoCodec * base_video_codec)
|
gst_base_video_codec_new_frame (GstBaseVideoCodec * base_video_codec)
|
||||||
{
|
{
|
||||||
@ -231,6 +245,14 @@ _gst_video_frame_free (GstVideoFrame * frame)
|
|||||||
g_slice_free (GstVideoFrame, frame);
|
g_slice_free (GstVideoFrame, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_video_frame_ref:
|
||||||
|
* @frame: a #GstVideoFrame
|
||||||
|
*
|
||||||
|
* Increases the refcount of the given frame by one.
|
||||||
|
*
|
||||||
|
* Returns: @buf
|
||||||
|
*/
|
||||||
GstVideoFrame *
|
GstVideoFrame *
|
||||||
gst_video_frame_ref (GstVideoFrame * frame)
|
gst_video_frame_ref (GstVideoFrame * frame)
|
||||||
{
|
{
|
||||||
@ -241,6 +263,13 @@ gst_video_frame_ref (GstVideoFrame * frame)
|
|||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_video_frame_unref:
|
||||||
|
* @frame: a #GstVideoFrame
|
||||||
|
*
|
||||||
|
* Decreases the refcount of the frame. If the refcount reaches 0, the frame
|
||||||
|
* will be freed.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
gst_video_frame_unref (GstVideoFrame * frame)
|
gst_video_frame_unref (GstVideoFrame * frame)
|
||||||
{
|
{
|
||||||
|
@ -76,10 +76,27 @@ G_BEGIN_DECLS
|
|||||||
/**
|
/**
|
||||||
* GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA:
|
* GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA:
|
||||||
*
|
*
|
||||||
|
* Returned while parsing to indicate more data is needed.
|
||||||
*/
|
*/
|
||||||
#define GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA GST_FLOW_CUSTOM_SUCCESS
|
#define GST_BASE_VIDEO_CODEC_FLOW_NEED_DATA GST_FLOW_CUSTOM_SUCCESS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GST_BASE_VIDEO_CODEC_STREAM_LOCK:
|
||||||
|
* @codec: video codec instance
|
||||||
|
*
|
||||||
|
* Obtain a lock to protect the codec function from concurrent access.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*/
|
||||||
#define GST_BASE_VIDEO_CODEC_STREAM_LOCK(codec) g_static_rec_mutex_lock (&GST_BASE_VIDEO_CODEC (codec)->stream_lock)
|
#define GST_BASE_VIDEO_CODEC_STREAM_LOCK(codec) g_static_rec_mutex_lock (&GST_BASE_VIDEO_CODEC (codec)->stream_lock)
|
||||||
|
/**
|
||||||
|
* GST_BASE_VIDEO_CODEC_STREAM_UNLOCK:
|
||||||
|
* @codec: video codec instance
|
||||||
|
*
|
||||||
|
* Release the lock that protects the codec function from concurrent access.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*/
|
||||||
#define GST_BASE_VIDEO_CODEC_STREAM_UNLOCK(codec) g_static_rec_mutex_unlock (&GST_BASE_VIDEO_CODEC (codec)->stream_lock)
|
#define GST_BASE_VIDEO_CODEC_STREAM_UNLOCK(codec) g_static_rec_mutex_unlock (&GST_BASE_VIDEO_CODEC (codec)->stream_lock)
|
||||||
|
|
||||||
typedef struct _GstVideoState GstVideoState;
|
typedef struct _GstVideoState GstVideoState;
|
||||||
@ -87,6 +104,10 @@ typedef struct _GstVideoFrame GstVideoFrame;
|
|||||||
typedef struct _GstBaseVideoCodec GstBaseVideoCodec;
|
typedef struct _GstBaseVideoCodec GstBaseVideoCodec;
|
||||||
typedef struct _GstBaseVideoCodecClass GstBaseVideoCodecClass;
|
typedef struct _GstBaseVideoCodecClass GstBaseVideoCodecClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstVideoState:
|
||||||
|
* @caps: The caps
|
||||||
|
*/
|
||||||
struct _GstVideoState
|
struct _GstVideoState
|
||||||
{
|
{
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
@ -147,38 +168,51 @@ struct _GstVideoFrame
|
|||||||
GList *events;
|
GList *events;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstBaseVideoCodec:
|
||||||
|
*
|
||||||
|
* The opaque #GstBaseVideoCodec data structure.
|
||||||
|
*/
|
||||||
struct _GstBaseVideoCodec
|
struct _GstBaseVideoCodec
|
||||||
{
|
{
|
||||||
GstElement element;
|
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GstPad *sinkpad;
|
GstElement element;
|
||||||
GstPad *srcpad;
|
|
||||||
|
/*< protected >*/
|
||||||
|
GstPad *sinkpad;
|
||||||
|
GstPad *srcpad;
|
||||||
|
|
||||||
/* protects all data processing, i.e. is locked
|
/* protects all data processing, i.e. is locked
|
||||||
* in the chain function, finish_frame and when
|
* in the chain function, finish_frame and when
|
||||||
* processing serialized events */
|
* processing serialized events */
|
||||||
GStaticRecMutex stream_lock;
|
GStaticRecMutex stream_lock;
|
||||||
|
|
||||||
guint64 system_frame_number;
|
guint64 system_frame_number;
|
||||||
|
|
||||||
GList *frames; /* Protected with OBJECT_LOCK */
|
GList *frames; /* Protected with OBJECT_LOCK */
|
||||||
GstVideoState state;
|
GstVideoState state;
|
||||||
GstSegment segment;
|
GstSegment segment;
|
||||||
|
|
||||||
gdouble proportion;
|
/* QoS properties */
|
||||||
GstClockTime earliest_time;
|
gdouble proportion;
|
||||||
gboolean discont;
|
GstClockTime earliest_time;
|
||||||
|
gboolean discont;
|
||||||
|
|
||||||
gint64 bytes;
|
gint64 bytes;
|
||||||
gint64 time;
|
gint64 time;
|
||||||
|
|
||||||
/* FIXME before moving to base */
|
/* FIXME before moving to base */
|
||||||
void *padding[GST_PADDING_LARGE];
|
void *padding[GST_PADDING_LARGE];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstBaseVideoCodecClass:
|
||||||
|
*
|
||||||
|
* The opaque #GstBaseVideoCodecClass data structure.
|
||||||
|
*/
|
||||||
struct _GstBaseVideoCodecClass
|
struct _GstBaseVideoCodecClass
|
||||||
{
|
{
|
||||||
|
/*< private >*/
|
||||||
GstElementClass element_class;
|
GstElementClass element_class;
|
||||||
|
|
||||||
/* FIXME before moving to base */
|
/* FIXME before moving to base */
|
||||||
|
@ -1690,7 +1690,7 @@ done:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_base_video_decoder_finish_frame:
|
* gst_base_video_decoder_add_to_frame:
|
||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
* @n_bytes: an encoded #GstVideoFrame
|
* @n_bytes: an encoded #GstVideoFrame
|
||||||
*
|
*
|
||||||
@ -1886,11 +1886,15 @@ exit:
|
|||||||
* gst_base_video_decoder_get_state:
|
* gst_base_video_decoder_get_state:
|
||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
*
|
*
|
||||||
|
* Get the current #GstVideoState
|
||||||
|
*
|
||||||
* Returns: #GstVideoState describing format of video data.
|
* Returns: #GstVideoState describing format of video data.
|
||||||
*/
|
*/
|
||||||
GstVideoState *
|
GstVideoState *
|
||||||
gst_base_video_decoder_get_state (GstBaseVideoDecoder * base_video_decoder)
|
gst_base_video_decoder_get_state (GstBaseVideoDecoder * base_video_decoder)
|
||||||
{
|
{
|
||||||
|
/* FIXME : Move to base codec class */
|
||||||
|
|
||||||
return &GST_BASE_VIDEO_CODEC (base_video_decoder)->state;
|
return &GST_BASE_VIDEO_CODEC (base_video_decoder)->state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1939,6 +1943,8 @@ gst_base_video_decoder_set_sync_point (GstBaseVideoDecoder * base_video_decoder)
|
|||||||
* gst_base_video_decoder_get_oldest_frame:
|
* gst_base_video_decoder_get_oldest_frame:
|
||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
*
|
*
|
||||||
|
* Get the oldest pending unfinished #GstVideoFrame
|
||||||
|
*
|
||||||
* Returns: oldest pending unfinished #GstVideoFrame.
|
* Returns: oldest pending unfinished #GstVideoFrame.
|
||||||
*/
|
*/
|
||||||
GstVideoFrame *
|
GstVideoFrame *
|
||||||
@ -1947,6 +1953,8 @@ gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *
|
|||||||
{
|
{
|
||||||
GList *g;
|
GList *g;
|
||||||
|
|
||||||
|
/* FIXME : Move to base codec class */
|
||||||
|
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
|
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
|
||||||
g = g_list_first (GST_BASE_VIDEO_CODEC (base_video_decoder)->frames);
|
g = g_list_first (GST_BASE_VIDEO_CODEC (base_video_decoder)->frames);
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
|
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
|
||||||
@ -1961,6 +1969,8 @@ gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *
|
|||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
* @frame_number: system_frame_number of a frame
|
* @frame_number: system_frame_number of a frame
|
||||||
*
|
*
|
||||||
|
* Get a pending unfinished #GstVideoFrame
|
||||||
|
*
|
||||||
* Returns: pending unfinished #GstVideoFrame identified by @frame_number.
|
* Returns: pending unfinished #GstVideoFrame identified by @frame_number.
|
||||||
*/
|
*/
|
||||||
GstVideoFrame *
|
GstVideoFrame *
|
||||||
@ -1991,6 +2001,7 @@ gst_base_video_decoder_get_frame (GstBaseVideoDecoder * base_video_decoder,
|
|||||||
*
|
*
|
||||||
* Sets src pad caps according to currently configured #GstVideoState.
|
* Sets src pad caps according to currently configured #GstVideoState.
|
||||||
*
|
*
|
||||||
|
* Returns: #TRUE if the caps were accepted downstream, else #FALSE.
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
gst_base_video_decoder_set_src_caps (GstBaseVideoDecoder * base_video_decoder)
|
gst_base_video_decoder_set_src_caps (GstBaseVideoDecoder * base_video_decoder)
|
||||||
@ -2042,11 +2053,11 @@ gst_base_video_decoder_set_src_caps (GstBaseVideoDecoder * base_video_decoder)
|
|||||||
* gst_base_video_decoder_alloc_src_buffer:
|
* gst_base_video_decoder_alloc_src_buffer:
|
||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
*
|
*
|
||||||
* Helper function that uses gst_pad_alloc_buffer_and_set_caps
|
* Helper function that uses @gst_pad_alloc_buffer_and_set_caps()
|
||||||
* to allocate a buffer to hold a video frame for @base_video_decoder's
|
* to allocate a buffer to hold a video frame for @base_video_decoder's
|
||||||
* current #GstVideoState.
|
* current #GstVideoState.
|
||||||
*
|
*
|
||||||
* Returns: allocated buffer
|
* Returns: (transfer full): allocated buffer
|
||||||
*/
|
*/
|
||||||
GstBuffer *
|
GstBuffer *
|
||||||
gst_base_video_decoder_alloc_src_buffer (GstBaseVideoDecoder *
|
gst_base_video_decoder_alloc_src_buffer (GstBaseVideoDecoder *
|
||||||
@ -2075,6 +2086,7 @@ gst_base_video_decoder_alloc_src_buffer (GstBaseVideoDecoder *
|
|||||||
}
|
}
|
||||||
|
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
|
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2083,7 +2095,7 @@ gst_base_video_decoder_alloc_src_buffer (GstBaseVideoDecoder *
|
|||||||
* @base_video_decoder: a #GstBaseVideoDecoder
|
* @base_video_decoder: a #GstBaseVideoDecoder
|
||||||
* @frame: a #GstVideoFrame
|
* @frame: a #GstVideoFrame
|
||||||
*
|
*
|
||||||
* Helper function that uses gst_pad_alloc_buffer_and_set_caps
|
* Helper function that uses @gst_pad_alloc_buffer_and_set_caps()
|
||||||
* to allocate a buffer to hold a video frame for @base_video_decoder's
|
* to allocate a buffer to hold a video frame for @base_video_decoder's
|
||||||
* current #GstVideoState. Subclass should already have configured video state
|
* current #GstVideoState. Subclass should already have configured video state
|
||||||
* and set src pad caps.
|
* and set src pad caps.
|
||||||
@ -2158,8 +2170,10 @@ gst_base_video_decoder_get_max_decode_time (GstBaseVideoDecoder *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_base_video_decoder_get_oldest_frame:
|
* gst_base_video_decoder_class_set_capture_pattern:
|
||||||
* @base_video_decoder_class: a #GstBaseVideoDecoderClass
|
* @base_video_decoder_class: a #GstBaseVideoDecoderClass
|
||||||
|
* @mask: The mask used for scanning
|
||||||
|
* @pattern: The pattern used for matching
|
||||||
*
|
*
|
||||||
* Sets the mask and pattern that will be scanned for to obtain parse sync.
|
* Sets the mask and pattern that will be scanned for to obtain parse sync.
|
||||||
* Note that a non-zero @mask implies that @scan_for_sync will be ignored.
|
* Note that a non-zero @mask implies that @scan_for_sync will be ignored.
|
||||||
|
@ -95,7 +95,7 @@ GstFlowReturn _gst_base_video_decoder_error (GstBaseVideoDecoder *dec, gint weig
|
|||||||
* enclosed in parentheses)
|
* enclosed in parentheses)
|
||||||
* @ret: variable to receive return value
|
* @ret: variable to receive return value
|
||||||
*
|
*
|
||||||
* Utility function that audio decoder elements can use in case they encountered
|
* Utility function that video decoder elements can use in case they encountered
|
||||||
* a data processing error that may be fatal for the current "data unit" but
|
* a data processing error that may be fatal for the current "data unit" but
|
||||||
* need not prevent subsequent decoding. Such errors are counted and if there
|
* need not prevent subsequent decoding. Such errors are counted and if there
|
||||||
* are too many, as configured in the context's max_errors, the pipeline will
|
* are too many, as configured in the context's max_errors, the pipeline will
|
||||||
@ -104,7 +104,7 @@ GstFlowReturn _gst_base_video_decoder_error (GstBaseVideoDecoder *dec, gint weig
|
|||||||
* is logged. In either case, @ret is set to the proper value to
|
* is logged. In either case, @ret is set to the proper value to
|
||||||
* return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK).
|
* return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK).
|
||||||
*/
|
*/
|
||||||
#define GST_BASE_AUDIO_DECODER_ERROR(el, w, domain, code, text, debug, ret) \
|
#define GST_BASE_VIDEO_DECODER_ERROR(el, w, domain, code, text, debug, ret) \
|
||||||
G_STMT_START { \
|
G_STMT_START { \
|
||||||
gchar *__txt = _gst_element_error_printf text; \
|
gchar *__txt = _gst_element_error_printf text; \
|
||||||
gchar *__dbg = _gst_element_error_printf debug; \
|
gchar *__dbg = _gst_element_error_printf debug; \
|
||||||
@ -122,6 +122,7 @@ G_STMT_START { \
|
|||||||
*/
|
*/
|
||||||
struct _GstBaseVideoDecoder
|
struct _GstBaseVideoDecoder
|
||||||
{
|
{
|
||||||
|
/*< private >*/
|
||||||
GstBaseVideoCodec base_video_codec;
|
GstBaseVideoCodec base_video_codec;
|
||||||
|
|
||||||
/*< protected >*/
|
/*< protected >*/
|
||||||
@ -220,8 +221,10 @@ struct _GstBaseVideoDecoder
|
|||||||
*/
|
*/
|
||||||
struct _GstBaseVideoDecoderClass
|
struct _GstBaseVideoDecoderClass
|
||||||
{
|
{
|
||||||
|
/*< private >*/
|
||||||
GstBaseVideoCodecClass base_video_codec_class;
|
GstBaseVideoCodecClass base_video_codec_class;
|
||||||
|
|
||||||
|
/*< public >*/
|
||||||
gboolean (*start) (GstBaseVideoDecoder *coder);
|
gboolean (*start) (GstBaseVideoDecoder *coder);
|
||||||
|
|
||||||
gboolean (*stop) (GstBaseVideoDecoder *coder);
|
gboolean (*stop) (GstBaseVideoDecoder *coder);
|
||||||
@ -248,12 +251,12 @@ struct _GstBaseVideoDecoderClass
|
|||||||
void *padding[GST_PADDING_LARGE];
|
void *padding[GST_PADDING_LARGE];
|
||||||
};
|
};
|
||||||
|
|
||||||
void gst_base_video_decoder_class_set_capture_pattern (GstBaseVideoDecoderClass *klass,
|
void gst_base_video_decoder_class_set_capture_pattern (GstBaseVideoDecoderClass *base_video_decoder_class,
|
||||||
guint32 mask, guint32 pattern);
|
guint32 mask, guint32 pattern);
|
||||||
|
|
||||||
GstVideoFrame *gst_base_video_decoder_get_frame (GstBaseVideoDecoder *coder,
|
GstVideoFrame *gst_base_video_decoder_get_frame (GstBaseVideoDecoder *base_video_decoder,
|
||||||
int frame_number);
|
int frame_number);
|
||||||
GstVideoFrame *gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *coder);
|
GstVideoFrame *gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *base_video_decoder);
|
||||||
|
|
||||||
void gst_base_video_decoder_add_to_frame (GstBaseVideoDecoder *base_video_decoder,
|
void gst_base_video_decoder_add_to_frame (GstBaseVideoDecoder *base_video_decoder,
|
||||||
int n_bytes);
|
int n_bytes);
|
||||||
|
@ -264,6 +264,13 @@ gst_base_video_encoder_init (GstBaseVideoEncoder * base_video_encoder,
|
|||||||
base_video_encoder->sink_clipping = TRUE;
|
base_video_encoder->sink_clipping = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_base_video_encoder_set_headers:
|
||||||
|
* @base_video_encoder: a #GstBaseVideoEncoder
|
||||||
|
* @headers: (transfer full): the #GstBuffer containing the codec header
|
||||||
|
*
|
||||||
|
* Set the codec headers to be sent downstream whenever requested.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
gst_base_video_encoder_set_headers (GstBaseVideoEncoder * base_video_encoder,
|
gst_base_video_encoder_set_headers (GstBaseVideoEncoder * base_video_encoder,
|
||||||
GstBuffer * headers)
|
GstBuffer * headers)
|
||||||
@ -1131,11 +1138,15 @@ done:
|
|||||||
* gst_base_video_encoder_get_state:
|
* gst_base_video_encoder_get_state:
|
||||||
* @base_video_encoder: a #GstBaseVideoEncoder
|
* @base_video_encoder: a #GstBaseVideoEncoder
|
||||||
*
|
*
|
||||||
|
* Get the current #GstVideoState
|
||||||
|
*
|
||||||
* Returns: #GstVideoState describing format of video data.
|
* Returns: #GstVideoState describing format of video data.
|
||||||
*/
|
*/
|
||||||
const GstVideoState *
|
const GstVideoState *
|
||||||
gst_base_video_encoder_get_state (GstBaseVideoEncoder * base_video_encoder)
|
gst_base_video_encoder_get_state (GstBaseVideoEncoder * base_video_encoder)
|
||||||
{
|
{
|
||||||
|
/* FIXME : Move to base codec class */
|
||||||
|
|
||||||
return &GST_BASE_VIDEO_CODEC (base_video_encoder)->state;
|
return &GST_BASE_VIDEO_CODEC (base_video_encoder)->state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1166,7 +1177,7 @@ gst_base_video_encoder_set_latency (GstBaseVideoEncoder * base_video_encoder,
|
|||||||
/**
|
/**
|
||||||
* gst_base_video_encoder_set_latency_fields:
|
* gst_base_video_encoder_set_latency_fields:
|
||||||
* @base_video_encoder: a #GstBaseVideoEncoder
|
* @base_video_encoder: a #GstBaseVideoEncoder
|
||||||
* @fields: latency in fields
|
* @n_fields: latency in fields
|
||||||
*
|
*
|
||||||
* Informs baseclass of encoding latency in terms of fields (both min
|
* Informs baseclass of encoding latency in terms of fields (both min
|
||||||
* and max latency).
|
* and max latency).
|
||||||
@ -1193,6 +1204,8 @@ gst_base_video_encoder_set_latency_fields (GstBaseVideoEncoder *
|
|||||||
* gst_base_video_encoder_get_oldest_frame:
|
* gst_base_video_encoder_get_oldest_frame:
|
||||||
* @base_video_encoder: a #GstBaseVideoEncoder
|
* @base_video_encoder: a #GstBaseVideoEncoder
|
||||||
*
|
*
|
||||||
|
* Get the oldest unfinished pending #GstVideoFrame
|
||||||
|
*
|
||||||
* Returns: oldest unfinished pending #GstVideoFrame
|
* Returns: oldest unfinished pending #GstVideoFrame
|
||||||
*/
|
*/
|
||||||
GstVideoFrame *
|
GstVideoFrame *
|
||||||
@ -1201,6 +1214,8 @@ gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *
|
|||||||
{
|
{
|
||||||
GList *g;
|
GList *g;
|
||||||
|
|
||||||
|
/* FIXME : Move to base codec class */
|
||||||
|
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_encoder);
|
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_encoder);
|
||||||
g = g_list_first (GST_BASE_VIDEO_CODEC (base_video_encoder)->frames);
|
g = g_list_first (GST_BASE_VIDEO_CODEC (base_video_encoder)->frames);
|
||||||
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_encoder);
|
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_encoder);
|
||||||
|
@ -70,12 +70,12 @@ typedef struct _GstBaseVideoEncoderClass GstBaseVideoEncoderClass;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* GstBaseVideoEncoder:
|
* GstBaseVideoEncoder:
|
||||||
* @element: the parent element.
|
|
||||||
*
|
*
|
||||||
* The opaque #GstBaseVideoEncoder data structure.
|
* The opaque #GstBaseVideoEncoder data structure.
|
||||||
*/
|
*/
|
||||||
struct _GstBaseVideoEncoder
|
struct _GstBaseVideoEncoder
|
||||||
{
|
{
|
||||||
|
/*< private >*/
|
||||||
GstBaseVideoCodec base_video_codec;
|
GstBaseVideoCodec base_video_codec;
|
||||||
|
|
||||||
/*< protected >*/
|
/*< protected >*/
|
||||||
@ -115,6 +115,8 @@ struct _GstBaseVideoEncoder
|
|||||||
* GstVideoState fields have already been
|
* GstVideoState fields have already been
|
||||||
* set according to provided caps.
|
* set according to provided caps.
|
||||||
* @handle_frame: Provides input frame to subclass.
|
* @handle_frame: Provides input frame to subclass.
|
||||||
|
* @reset: Optional.
|
||||||
|
* Allows subclass (codec) to perform post-seek semantics reset.
|
||||||
* @finish: Optional.
|
* @finish: Optional.
|
||||||
* Called to request subclass to dispatch any pending remaining
|
* Called to request subclass to dispatch any pending remaining
|
||||||
* data (e.g. at EOS).
|
* data (e.g. at EOS).
|
||||||
@ -133,6 +135,7 @@ struct _GstBaseVideoEncoder
|
|||||||
*/
|
*/
|
||||||
struct _GstBaseVideoEncoderClass
|
struct _GstBaseVideoEncoderClass
|
||||||
{
|
{
|
||||||
|
/*< private >*/
|
||||||
GstBaseVideoCodecClass base_video_codec_class;
|
GstBaseVideoCodecClass base_video_codec_class;
|
||||||
|
|
||||||
/*< public >*/
|
/*< public >*/
|
||||||
@ -164,9 +167,9 @@ struct _GstBaseVideoEncoderClass
|
|||||||
|
|
||||||
GType gst_base_video_encoder_get_type (void);
|
GType gst_base_video_encoder_get_type (void);
|
||||||
|
|
||||||
const GstVideoState* gst_base_video_encoder_get_state (GstBaseVideoEncoder *coder);
|
const GstVideoState* gst_base_video_encoder_get_state (GstBaseVideoEncoder *base_video_encoder);
|
||||||
|
|
||||||
GstVideoFrame* gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *coder);
|
GstVideoFrame* gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *base_video_encoder);
|
||||||
GstFlowReturn gst_base_video_encoder_finish_frame (GstBaseVideoEncoder *base_video_encoder,
|
GstFlowReturn gst_base_video_encoder_finish_frame (GstBaseVideoEncoder *base_video_encoder,
|
||||||
GstVideoFrame *frame);
|
GstVideoFrame *frame);
|
||||||
|
|
||||||
@ -175,7 +178,7 @@ void gst_base_video_encoder_set_latency (GstBaseVideoEncoder *
|
|||||||
void gst_base_video_encoder_set_latency_fields (GstBaseVideoEncoder *base_video_encoder,
|
void gst_base_video_encoder_set_latency_fields (GstBaseVideoEncoder *base_video_encoder,
|
||||||
int n_fields);
|
int n_fields);
|
||||||
void gst_base_video_encoder_set_headers (GstBaseVideoEncoder *base_video_encoder,
|
void gst_base_video_encoder_set_headers (GstBaseVideoEncoder *base_video_encoder,
|
||||||
GstBuffer *headers);
|
GstBuffer *headers);
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user