blob: eb1f08528d239675ac6c0138a507051df4d800c6 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GstVideoEncoder: GStreamer Base Plugins 1.0 Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual">
<link rel="up" href="gstreamer-video.html" title="Video Library">
<link rel="prev" href="gst-plugins-base-libs-GstVideoDecoder.html" title="GstVideoDecoder">
<link rel="next" href="gst-plugins-base-libs-GstVideoPool.html" title="GstVideoPool">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
<a href="#gst-plugins-base-libs-GstVideoEncoder.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gstreamer-video.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-base-libs-GstVideoDecoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-base-libs-GstVideoPool.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-base-libs-GstVideoEncoder"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-base-libs-GstVideoEncoder.top_of_page"></a>GstVideoEncoder</span></h2>
<p>GstVideoEncoder — Base class for video encoders</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="gst-plugins-base-libs-GstVideoEncoder.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-CAST:CAPS" title="GST_VIDEO_ENCODER_CAST()">GST_VIDEO_ENCODER_CAST</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SINK-PAD:CAPS" title="GST_VIDEO_ENCODER_SINK_PAD()">GST_VIDEO_ENCODER_SINK_PAD</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SRC-PAD:CAPS" title="GST_VIDEO_ENCODER_SRC_PAD()">GST_VIDEO_ENCODER_SRC_PAD</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-INPUT-SEGMENT:CAPS" title="GST_VIDEO_ENCODER_INPUT_SEGMENT()">GST_VIDEO_ENCODER_INPUT_SEGMENT</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-OUTPUT-SEGMENT:CAPS" title="GST_VIDEO_ENCODER_OUTPUT_SEGMENT()">GST_VIDEO_ENCODER_OUTPUT_SEGMENT</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-STREAM-LOCK:CAPS" title="GST_VIDEO_ENCODER_STREAM_LOCK()">GST_VIDEO_ENCODER_STREAM_LOCK</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-STREAM-UNLOCK:CAPS" title="GST_VIDEO_ENCODER_STREAM_UNLOCK()">GST_VIDEO_ENCODER_STREAM_UNLOCK</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="returnvalue">GstBuffer</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-allocate-output-buffer" title="gst_video_encoder_allocate_output_buffer ()">gst_video_encoder_allocate_output_buffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-allocate-output-frame" title="gst_video_encoder_allocate_output_frame ()">gst_video_encoder_allocate_output_frame</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-allocator" title="gst_video_encoder_get_allocator ()">gst_video_encoder_get_allocator</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-finish-frame" title="gst_video_encoder_finish_frame ()">gst_video_encoder_finish_frame</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-negotiate" title="gst_video_encoder_negotiate ()">gst_video_encoder_negotiate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="returnvalue">GstVideoCodecFrame</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-frame" title="gst_video_encoder_get_frame ()">gst_video_encoder_get_frame</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-frames" title="gst_video_encoder_get_frames ()">gst_video_encoder_get_frames</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="returnvalue">GstVideoCodecFrame</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-oldest-frame" title="gst_video_encoder_get_oldest_frame ()">gst_video_encoder_get_oldest_frame</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-headers" title="gst_video_encoder_set_headers ()">gst_video_encoder_set_headers</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-latency" title="gst_video_encoder_get_latency ()">gst_video_encoder_get_latency</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-latency" title="gst_video_encoder_set_latency ()">gst_video_encoder_set_latency</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-set-output-state" title="gst_video_encoder_set_output_state ()">gst_video_encoder_set_output_state</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-get-output-state" title="gst_video_encoder_get_output_state ()">gst_video_encoder_get_output_state</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-proxy-getcaps" title="gst_video_encoder_proxy_getcaps ()">gst_video_encoder_proxy_getcaps</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-merge-tags" title="gst_video_encoder_merge_tags ()">gst_video_encoder_merge_tags</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gst-plugins-base-libs-GstVideoEncoder.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-FLOW-DROPPED:CAPS" title="GST_VIDEO_ENCODER_FLOW_DROPPED">GST_VIDEO_ENCODER_FLOW_DROPPED</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-FLOW-NEED-DATA:CAPS" title="GST_VIDEO_ENCODER_FLOW_NEED_DATA">GST_VIDEO_ENCODER_FLOW_NEED_DATA</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SINK-NAME:CAPS" title="GST_VIDEO_ENCODER_SINK_NAME">GST_VIDEO_ENCODER_SINK_NAME</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GST-VIDEO-ENCODER-SRC-NAME:CAPS" title="GST_VIDEO_ENCODER_SRC_NAME">GST_VIDEO_ENCODER_SRC_NAME</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder">GstVideoEncoder</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoderClass" title="struct GstVideoEncoderClass">GstVideoEncoderClass</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gst-plugins-base-libs-GstVideoEncoder.description"></a><h2>Description</h2>
<p>This base class is for video encoders turning raw video into
encoded video data.</p>
<p>GstVideoEncoder and subclass should cooperate as follows.</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Configuration</b></p>
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>
Initially, GstVideoEncoder calls <em class="parameter"><code>start</code></em> when the encoder element
is activated, which allows subclass to perform any global setup.
</p></li>
<li class="listitem"><p>
GstVideoEncoder calls <em class="parameter"><code>set_format</code></em> to inform subclass of the format
of input video data that it is about to receive. Subclass should
setup for encoding and configure base class as appropriate
(e.g. latency). While unlikely, it might be called more than once,
if changing input parameters require reconfiguration. Baseclass
will ensure that processing of current configuration is finished.
</p></li>
<li class="listitem"><p>
GstVideoEncoder calls <em class="parameter"><code>stop</code></em> at end of all processing.
</p></li>
</ul>
</div></li>
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Data processing</b></p>
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>
Base class collects input data and metadata into a frame and hands
this to subclass' <em class="parameter"><code>handle_frame</code></em>.
</p></li>
<li class="listitem"><p>
If codec processing results in encoded data, subclass should call
<em class="parameter"><code>gst_video_encoder_finish_frame</code></em> to have encoded data pushed
downstream.
</p></li>
<li class="listitem"><p>
If implemented, baseclass calls subclass <em class="parameter"><code>pre_push</code></em> just prior to
pushing to allow subclasses to modify some metadata on the buffer.
If it returns GST_FLOW_OK, the buffer is pushed downstream.
</p></li>
<li class="listitem"><p>
GstVideoEncoderClass will handle both srcpad and sinkpad events.
Sink events will be passed to subclass if <em class="parameter"><code>event</code></em> callback has been
provided.
</p></li>
</ul>
</div></li>
<li class="listitem"><div class="itemizedlist">
<p class="title"><b>Shutdown phase</b></p>
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
GstVideoEncoder class calls <em class="parameter"><code>stop</code></em> to inform the subclass that data
parsing will be stopped.
</p></li></ul>
</div></li>
</ol></div>
<p>Subclass is responsible for providing pad template caps for
source and sink pads. The pads need to be named "sink" and "src". It should
also be able to provide fixed src pad caps in <em class="parameter"><code>getcaps</code></em>
by the time it calls
<em class="parameter"><code>gst_video_encoder_finish_frame</code></em>
.</p>
<p>Things that subclass need to take care of:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>Provide pad templates</p></li>
<li class="listitem"><p>
Provide source pad caps before pushing the first buffer
</p></li>
<li class="listitem"><p>
Accept data in <em class="parameter"><code>handle_frame</code></em> and provide encoded results to
<em class="parameter"><code>gst_video_encoder_finish_frame</code></em>.
</p></li>
</ul></div>
</div>
<div class="refsect1">
<a name="gst-plugins-base-libs-GstVideoEncoder.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-CAST:CAPS"></a><h3>GST_VIDEO_ENCODER_CAST()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_CAST(enc) ((GstVideoEncoder*)enc)
</pre>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-SINK-PAD:CAPS"></a><h3>GST_VIDEO_ENCODER_SINK_PAD()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_SINK_PAD(obj) (((GstVideoEncoder *) (obj))-&gt;sinkpad)
</pre>
<p>Gives the pointer to the sink <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> object of the element.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-SINK-PAD.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>obj</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-SRC-PAD:CAPS"></a><h3>GST_VIDEO_ENCODER_SRC_PAD()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_SRC_PAD(obj) (((GstVideoEncoder *) (obj))-&gt;srcpad)
</pre>
<p>Gives the pointer to the source <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> object of the element.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-SRC-PAD.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>obj</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-INPUT-SEGMENT:CAPS"></a><h3>GST_VIDEO_ENCODER_INPUT_SEGMENT()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_INPUT_SEGMENT(obj) (GST_VIDEO_ENCODER_CAST (obj)-&gt;input_segment)
</pre>
<p>Gives the segment of the element.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-INPUT-SEGMENT.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>obj</p></td>
<td class="parameter_description"><p>base parse instance</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-OUTPUT-SEGMENT:CAPS"></a><h3>GST_VIDEO_ENCODER_OUTPUT_SEGMENT()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_OUTPUT_SEGMENT(obj) (GST_VIDEO_ENCODER_CAST (obj)-&gt;output_segment)
</pre>
<p>Gives the segment of the element.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-OUTPUT-SEGMENT.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>obj</p></td>
<td class="parameter_description"><p>base parse instance</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-STREAM-LOCK:CAPS"></a><h3>GST_VIDEO_ENCODER_STREAM_LOCK()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_STREAM_LOCK(encoder) g_rec_mutex_lock (&amp;GST_VIDEO_ENCODER (encoder)-&gt;stream_lock)
</pre>
<p>Obtain a lock to protect the encoder function from concurrent access.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-STREAM-LOCK.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>video encoder instance</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-STREAM-UNLOCK:CAPS"></a><h3>GST_VIDEO_ENCODER_STREAM_UNLOCK()</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_STREAM_UNLOCK(encoder) g_rec_mutex_unlock (&amp;GST_VIDEO_ENCODER (encoder)-&gt;stream_lock)
</pre>
<p>Release the lock that protects the encoder function from concurrent access.</p>
<div class="refsect3">
<a name="GST-VIDEO-ENCODER-STREAM-UNLOCK.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>video encoder instance</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-allocate-output-buffer"></a><h3>gst_video_encoder_allocate_output_buffer ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="returnvalue">GstBuffer</span></a> *
gst_video_encoder_allocate_output_buffer
(<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
<p>Helper function that allocates a buffer to hold an encoded video frame
for <em class="parameter"><code>encoder</code></em>
's current <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>.</p>
<div class="refsect3">
<a name="gst-video-encoder-allocate-output-buffer.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>size</p></td>
<td class="parameter_description"><p>size of the buffer</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-allocate-output-buffer.returns"></a><h4>Returns</h4>
<p> allocated buffer. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-allocate-output-frame"></a><h3>gst_video_encoder_allocate_output_frame ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
gst_video_encoder_allocate_output_frame
(<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> *frame</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
<p>Helper function that allocates a buffer to hold an encoded video frame for <em class="parameter"><code>encoder</code></em>
's
current <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>. Subclass should already have configured video
state and set src pad caps.</p>
<p>The buffer allocated here is owned by the frame and you should only
keep references to the frame, not the buffer.</p>
<div class="refsect3">
<a name="gst-video-encoder-allocate-output-frame.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>frame</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>size</p></td>
<td class="parameter_description"><p>size of the buffer</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-allocate-output-frame.returns"></a><h4>Returns</h4>
<p> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GST-FLOW-OK:CAPS"><code class="literal">GST_FLOW_OK</code></a> if an output buffer could be allocated</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-allocator"></a><h3>gst_video_encoder_get_allocator ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_video_encoder_get_allocator (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a> **allocator</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *params</code></em>);</pre>
<p>Lets <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> sub-classes to know the memory <em class="parameter"><code>allocator</code></em>
used by the base class and its <em class="parameter"><code>params</code></em>
.</p>
<p>Unref the <em class="parameter"><code>allocator</code></em>
after use it.</p>
<div class="refsect3">
<a name="gst-video-encoder-get-allocator.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>allocator</p></td>
<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a>
used. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>params</p></td>
<td class="parameter_description"><p> the
<span class="type">GstAllocatorParams</span> of <em class="parameter"><code>allocator</code></em>
. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-finish-frame"></a><h3>gst_video_encoder_finish_frame ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
gst_video_encoder_finish_frame (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> *frame</code></em>);</pre>
<p><em class="parameter"><code>frame</code></em>
must have a valid encoded data buffer, whose metadata fields
are then appropriately set according to frame data or no buffer at
all if the frame should be dropped.
It is subsequently pushed downstream or provided to <em class="parameter"><code>pre_push</code></em>
.
In any case, the frame is considered finished and released.</p>
<p>After calling this function the output buffer of the frame is to be
considered read-only. This function will also change the metadata
of the buffer.</p>
<div class="refsect3">
<a name="gst-video-encoder-finish-frame.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>frame</p></td>
<td class="parameter_description"><p> an encoded <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-finish-frame.returns"></a><h4>Returns</h4>
<p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="type">GstFlowReturn</span></a> resulting from sending data downstream</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-negotiate"></a><h3>gst_video_encoder_negotiate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_video_encoder_negotiate (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
<p>Negotiate with downstream elements to currently configured <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>.
Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
negotiate fails.</p>
<div class="refsect3">
<a name="gst-video-encoder-negotiate.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-negotiate.returns"></a><h4>Returns</h4>
<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the negotiation succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-frame"></a><h3>gst_video_encoder_get_frame ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="returnvalue">GstVideoCodecFrame</span></a> *
gst_video_encoder_get_frame (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><span class="type">int</span> frame_number</code></em>);</pre>
<p>Get a pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
<div class="refsect3">
<a name="gst-video-encoder-get-frame.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <span class="type">GstVideoEnccoder</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>frame_number</p></td>
<td class="parameter_description"><p>system_frame_number of a frame</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-get-frame.returns"></a><h4>Returns</h4>
<p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a> identified by <em class="parameter"><code>frame_number</code></em>
. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-frames"></a><h3>gst_video_encoder_get_frames ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
gst_video_encoder_get_frames (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
<p>Get all pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
<div class="refsect3">
<a name="gst-video-encoder-get-frames.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-get-frames.returns"></a><h4>Returns</h4>
<p> pending unfinished <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstVideoCodecFrame]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-oldest-frame"></a><h3>gst_video_encoder_get_oldest_frame ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="returnvalue">GstVideoCodecFrame</span></a> *
gst_video_encoder_get_oldest_frame (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
<p>Get the oldest unfinished pending <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a></p>
<div class="refsect3">
<a name="gst-video-encoder-get-oldest-frame.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-get-oldest-frame.returns"></a><h4>Returns</h4>
<p> oldest unfinished pending <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecFrame" title="struct GstVideoCodecFrame"><span class="type">GstVideoCodecFrame</span></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-set-headers"></a><h3>gst_video_encoder_set_headers ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_video_encoder_set_headers (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> *headers</code></em>);</pre>
<p>Set the codec headers to be sent downstream whenever requested.</p>
<div class="refsect3">
<a name="gst-video-encoder-set-headers.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>headers</p></td>
<td class="parameter_description"><p> a list of <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> containing the codec header. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstBuffer]</span></td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-latency"></a><h3>gst_video_encoder_get_latency ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_video_encoder_get_latency (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *min_latency</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> *max_latency</code></em>);</pre>
<p>Query the configured encoding latency. Results will be returned via
<em class="parameter"><code>min_latency</code></em>
and <em class="parameter"><code>max_latency</code></em>
.</p>
<div class="refsect3">
<a name="gst-video-encoder-get-latency.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>min_latency</p></td>
<td class="parameter_description"><p> address of variable in which to store the
configured minimum latency, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>max_latency</p></td>
<td class="parameter_description"><p> address of variable in which to store the
configured maximum latency, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-set-latency"></a><h3>gst_video_encoder_set_latency ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_video_encoder_set_latency (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> min_latency</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> max_latency</code></em>);</pre>
<p>Informs baseclass of encoding latency.</p>
<div class="refsect3">
<a name="gst-video-encoder-set-latency.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>min_latency</p></td>
<td class="parameter_description"><p>minimum latency</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>max_latency</p></td>
<td class="parameter_description"><p>maximum latency</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-set-output-state"></a><h3>gst_video_encoder_set_output_state ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
gst_video_encoder_set_output_state (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> *reference</code></em>);</pre>
<p>Creates a new <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> with the specified caps as the output state
for the encoder.
Any previously set output state on <em class="parameter"><code>encoder</code></em>
will be replaced by the newly
created one.</p>
<p>The specified <em class="parameter"><code>caps</code></em>
should not contain any resolution, pixel-aspect-ratio,
framerate, codec-data, .... Those should be specified instead in the returned
<a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>.</p>
<p>If the subclass wishes to copy over existing fields (like pixel aspect ratio,
or framerate) from an existing <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>, it can be provided as a
<em class="parameter"><code>reference</code></em>
.</p>
<p>If the subclass wishes to override some fields from the output state (like
pixel-aspect-ratio or framerate) it can do so on the returned <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a>.</p>
<p>The new output state will only take effect (set on pads and buffers) starting
from the next call to <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-finish-frame" title="gst_video_encoder_finish_frame ()"><code class="function">gst_video_encoder_finish_frame()</code></a>.</p>
<div class="refsect3">
<a name="gst-video-encoder-set-output-state.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>caps</p></td>
<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> to use for the output. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>reference</p></td>
<td class="parameter_description"><p> An optional reference <em class="parameter"><code>GstVideoCodecState</code></em>
. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-set-output-state.returns"></a><h4>Returns</h4>
<p> the newly configured output state. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-get-output-state"></a><h3>gst_video_encoder_get_output_state ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="returnvalue">GstVideoCodecState</span></a> *
gst_video_encoder_get_output_state (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>);</pre>
<p>Get the current <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a></p>
<div class="refsect3">
<a name="gst-video-encoder-get-output-state.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-get-output-state.returns"></a><h4>Returns</h4>
<p> <a class="link" href="gst-plugins-base-libs-gstvideoutils.html#GstVideoCodecState" title="struct GstVideoCodecState"><span class="type">GstVideoCodecState</span></a> describing format of video data. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-proxy-getcaps"></a><h3>gst_video_encoder_proxy_getcaps ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
gst_video_encoder_proxy_getcaps (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *enc</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *filter</code></em>);</pre>
<p>Returns caps that express <em class="parameter"><code>caps</code></em>
(or sink template caps if <em class="parameter"><code>caps</code></em>
== NULL)
restricted to resolution/format/... combinations supported by downstream
elements (e.g. muxers).</p>
<div class="refsect3">
<a name="gst-video-encoder-proxy-getcaps.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>enc</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>caps</p></td>
<td class="parameter_description"><p> initial caps. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>filter</p></td>
<td class="parameter_description"><p> filter caps. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gst-video-encoder-proxy-getcaps.returns"></a><h4>Returns</h4>
<p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> owned by caller. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-video-encoder-merge-tags"></a><h3>gst_video_encoder_merge_tags ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_video_encoder_merge_tags (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> *encoder</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagList-struct"><span class="type">GstTagList</span></a> *tags</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> mode</code></em>);</pre>
<p>Sets the video encoder tags and how they should be merged with any
upstream stream tags. This will override any tags previously-set
with <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#gst-video-encoder-merge-tags" title="gst_video_encoder_merge_tags ()"><code class="function">gst_video_encoder_merge_tags()</code></a>.</p>
<p>Note that this is provided for convenience, and the subclass is
not required to use this and can still do tag handling on its own.</p>
<p>MT safe.</p>
<div class="refsect3">
<a name="gst-video-encoder-merge-tags.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>encoder</p></td>
<td class="parameter_description"><p>a <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>tags</p></td>
<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagList-struct"><span class="type">GstTagList</span></a> to merge, or NULL to unset
previously-set tags. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>mode</p></td>
<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagMergeMode"><span class="type">GstTagMergeMode</span></a> to use, usually <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-MERGE-REPLACE:CAPS"><span class="type">GST_TAG_MERGE_REPLACE</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-base-libs-GstVideoEncoder.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-FLOW-DROPPED:CAPS"></a><h3>GST_VIDEO_ENCODER_FLOW_DROPPED</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_FLOW_DROPPED GST_FLOW_CUSTOM_SUCCESS_1
</pre>
<div class="warning">
<p><code class="literal">GST_VIDEO_ENCODER_FLOW_DROPPED</code> is deprecated and should not be used in newly-written code.</p>
<p>since 1.8. use gst_video_encoder_finish_frame with
a <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> frame-&gt;output_buffer to drop the frame instead.</p>
</div>
<p>Returned when the event/buffer should be dropped.</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-FLOW-NEED-DATA:CAPS"></a><h3>GST_VIDEO_ENCODER_FLOW_NEED_DATA</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_FLOW_NEED_DATA GST_FLOW_CUSTOM_SUCCESS
</pre>
<p>Returned while parsing to indicate more data is needed.</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-SINK-NAME:CAPS"></a><h3>GST_VIDEO_ENCODER_SINK_NAME</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_SINK_NAME "sink"
</pre>
<p>The name of the templates for the sink pad.</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-VIDEO-ENCODER-SRC-NAME:CAPS"></a><h3>GST_VIDEO_ENCODER_SRC_NAME</h3>
<pre class="programlisting">#define GST_VIDEO_ENCODER_SRC_NAME "src"
</pre>
<p>The name of the templates for the source pad.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstVideoEncoder"></a><h3>struct GstVideoEncoder</h3>
<pre class="programlisting">struct GstVideoEncoder {
};
</pre>
<p>The opaque <a class="link" href="gst-plugins-base-libs-GstVideoEncoder.html#GstVideoEncoder" title="struct GstVideoEncoder"><span class="type">GstVideoEncoder</span></a> data structure.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstVideoEncoderClass"></a><h3>struct GstVideoEncoderClass</h3>
<pre class="programlisting">struct GstVideoEncoderClass {
/* virtual methods for subclasses */
gboolean (*open) (GstVideoEncoder *encoder);
gboolean (*close) (GstVideoEncoder *encoder);
gboolean (*start) (GstVideoEncoder *encoder);
gboolean (*stop) (GstVideoEncoder *encoder);
gboolean (*set_format) (GstVideoEncoder *encoder,
GstVideoCodecState *state);
GstFlowReturn (*handle_frame) (GstVideoEncoder *encoder,
GstVideoCodecFrame *frame);
gboolean (*reset) (GstVideoEncoder *encoder,
gboolean hard);
GstFlowReturn (*finish) (GstVideoEncoder *encoder);
GstFlowReturn (*pre_push) (GstVideoEncoder *encoder,
GstVideoCodecFrame *frame);
GstCaps * (*getcaps) (GstVideoEncoder *enc,
GstCaps *filter);
gboolean (*sink_event) (GstVideoEncoder *encoder,
GstEvent *event);
gboolean (*src_event) (GstVideoEncoder *encoder,
GstEvent *event);
gboolean (*negotiate) (GstVideoEncoder *encoder);
gboolean (*decide_allocation) (GstVideoEncoder *encoder, GstQuery *query);
gboolean (*propose_allocation) (GstVideoEncoder * encoder,
GstQuery * query);
gboolean (*flush) (GstVideoEncoder *encoder);
gboolean (*sink_query) (GstVideoEncoder *encoder,
GstQuery *query);
gboolean (*src_query) (GstVideoEncoder *encoder,
GstQuery *query);
gboolean (*transform_meta) (GstVideoEncoder *encoder,
GstVideoCodecFrame *frame,
GstMeta * meta);
};
</pre>
<p>Subclasses can override any of the available virtual methods or not, as
needed. At minimum <em class="parameter"><code>handle_frame</code></em>
needs to be overridden, and <em class="parameter"><code>set_format</code></em>
and <em class="parameter"><code>get_caps</code></em>
are likely needed as well.</p>
<div class="refsect3">
<a name="GstVideoEncoderClass.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.open"></a>open</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Called when the element changes to GST_STATE_READY.
Allows opening external resources.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.close"></a>close</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Called when the element changes to GST_STATE_NULL.
Allows closing external resources.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.start"></a>start</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Called when the element starts processing.
Allows opening external resources.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.stop"></a>stop</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Called when the element stops processing.
Allows closing external resources.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.set-format"></a>set_format</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Notifies subclass of incoming data format.
GstVideoCodecState fields have already been
set according to provided caps.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.handle-frame"></a>handle_frame</code></em> ()</p></td>
<td class="struct_member_description"><p>Provides input frame to subclass.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.reset"></a>reset</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Allows subclass (encoder) to perform post-seek semantics reset.
Deprecated.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.finish"></a>finish</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Called to request subclass to dispatch any pending remaining
data (e.g. at EOS).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.pre-push"></a>pre_push</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Allows subclass to push frame downstream in whatever
shape or form it deems appropriate. If not provided,
provided encoded frame data is simply pushed downstream.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.getcaps"></a>getcaps</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Allows for a custom sink getcaps implementation (e.g.
for multichannel input specification). If not implemented,
default returns gst_video_encoder_proxy_getcaps
applied to sink template caps.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.sink-event"></a>sink_event</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Event handler on the sink pad. This function should return
TRUE if the event was handled and should be discarded
(i.e. not unref'ed).
Subclasses should chain up to the parent implementation to
invoke the default handler.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.src-event"></a>src_event</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Event handler on the source pad. This function should return
TRUE if the event was handled and should be discarded
(i.e. not unref'ed).
Subclasses should chain up to the parent implementation to
invoke the default handler.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.negotiate"></a>negotiate</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Negotiate with downstream and configure buffer pools, etc.
Subclasses should chain up to the parent implementation to
invoke the default handler.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.decide-allocation"></a>decide_allocation</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Setup the allocation parameters for allocating output
buffers. The passed in query contains the result of the
downstream allocation query.
Subclasses should chain up to the parent implementation to
invoke the default handler.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.propose-allocation"></a>propose_allocation</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Propose buffer allocation parameters for upstream elements.
Subclasses should chain up to the parent implementation to
invoke the default handler.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.flush"></a>flush</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Flush all remaining data from the encoder without
pushing it downstream. Since: 1.2</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.sink-query"></a>sink_query</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Query handler on the sink pad. This function should
return TRUE if the query could be performed. Subclasses
should chain up to the parent implementation to invoke the
default handler. Since 1.4</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.src-query"></a>src_query</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional.
Query handler on the source pad. This function should
return TRUE if the query could be performed. Subclasses
should chain up to the parent implementation to invoke the
default handler. Since 1.4</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoEncoderClass.transform-meta"></a>transform_meta</code></em> ()</p></td>
<td class="struct_member_description"><p>Optional. Transform the metadata on the input buffer to the
output buffer. By default this method is copies all meta without
tags and meta with only the "video" tag. subclasses can
implement this method and return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the metadata is to be
copied. Since 1.6</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
</body>
</html>