<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MixVideoDecodeParams</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Mi-X Video Reference Manual">
<link rel="up" href="ch01.html" title="MI-X Video API">
<link rel="prev" href="MixVideoConfigParamsEncMPEG4.html" title="MixVideoConfigParamsEncMPEG4">
<link rel="next" href="MixVideoEncodeParams.html" title="MixVideoEncodeParams">
<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="chapter" href="ch01.html" title="MI-X Video API">
<link rel="chapter" href="object-tree.html" title="Object Hierarchy">
<link rel="index" href="api-index-full.html" title="API Index">
</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="2">
<tr valign="middle">
<td><a accesskey="p" href="MixVideoConfigParamsEncMPEG4.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">Mi-X Video Reference Manual</th>
<td><a accesskey="n" href="MixVideoEncodeParams.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#MixVideoDecodeParams.synopsis" class="shortcut">Top</a>
                 | 
                <a href="#MixVideoDecodeParams.description" class="shortcut">Description</a>
                 | 
                <a href="#MixVideoDecodeParams.object-hierarchy" class="shortcut">Object Hierarchy</a>
</td></tr>
</table>
<div class="refentry" title="MixVideoDecodeParams">
<a name="MixVideoDecodeParams"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="MixVideoDecodeParams.top_of_page"></a>MixVideoDecodeParams</span></h2>
<p>MixVideoDecodeParams — MI-X Video Decode Paramters</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv" title="Synopsis">
<a name="MixVideoDecodeParams.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
                    <a class="link" href="MixVideoDecodeParams.html#MixVideoDecodeParams-struct" title="MixVideoDecodeParams">MixVideoDecodeParams</a>;
<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> * <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-new" title="mix_videodecodeparams_new ()">mix_videodecodeparams_new</a>        (void);
<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> * <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-ref" title="mix_videodecodeparams_ref ()">mix_videodecodeparams_ref</a>        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *mix);
#define             <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-unref" title="mix_videodecodeparams_unref()">mix_videodecodeparams_unref</a>         (obj)
MIX_RESULT          <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-set-timestamp" title="mix_videodecodeparams_set_timestamp ()">mix_videodecodeparams_set_timestamp</a> (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         guint64 timestamp);
MIX_RESULT          <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-get-timestamp" title="mix_videodecodeparams_get_timestamp ()">mix_videodecodeparams_get_timestamp</a> (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         guint64 *timestamp);
MIX_RESULT          <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-set-discontinuity" title="mix_videodecodeparams_set_discontinuity ()">mix_videodecodeparams_set_discontinuity</a>
                                                        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         gboolean discontinuity);
MIX_RESULT          <a class="link" href="MixVideoDecodeParams.html#mix-videodecodeparams-get-discontinuity" title="mix_videodecodeparams_get_discontinuity ()">mix_videodecodeparams_get_discontinuity</a>
                                                        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         gboolean *discontinuity);
</pre>
</div>
<div class="refsect1" title="Object Hierarchy">
<a name="MixVideoDecodeParams.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  MixParams
   +----MixVideoDecodeParams
</pre>
</div>
<div class="refsect1" title="Description">
<a name="MixVideoDecodeParams.description"></a><h2>Description</h2>
<p>
The <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> object will be created by the MMF/App 
and provided to MixVideo in the MixVideo <a class="link" href="MixVideo.html#mix-video-decode" title="mix_video_decode ()"><code class="function">mix_video_decode()</code></a> function.</p>
</div>
<div class="refsect1" title="Details">
<a name="MixVideoDecodeParams.details"></a><h2>Details</h2>
<div class="refsect2" title="MixVideoDecodeParams">
<a name="MixVideoDecodeParams-struct"></a><h3>MixVideoDecodeParams</h3>
<pre class="programlisting">typedef struct {
	MixParams parent;


	/* TODO: Add properties */
	
	/* Presentation timestamp for the video 
	 * frame data, in milliseconds */
	guint64 timestamp;
	
	/* Indicates a discontinuity in the stream */
	gboolean discontinuity;

	/* Reserved for future use */	
	void *reserved1;
	
	/* Reserved for future use */	
	void *reserved2;
	
	/* Reserved for future use */	
	void *reserved3;
	
	/* Reserved for future use */	
	void *reserved4;
} MixVideoDecodeParams;
</pre>
<p>
MI-X VideoDecode Parameter object</p>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_new ()">
<a name="mix-videodecodeparams-new"></a><h3>mix_videodecodeparams_new ()</h3>
<pre class="programlisting"><a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> * mix_videodecodeparams_new        (void);</pre>
<p>
Use this method to create new instance of <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a></p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> A newly allocated instance of <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_ref ()">
<a name="mix-videodecodeparams-ref"></a><h3>mix_videodecodeparams_ref ()</h3>
<pre class="programlisting"><a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> * mix_videodecodeparams_ref        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *mix);</pre>
<p>
Add reference count.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>mix</code></em> :</span></p></td>
<td> object to add reference
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> the <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> instance where reference count has been increased.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_unref()">
<a name="mix-videodecodeparams-unref"></a><h3>mix_videodecodeparams_unref()</h3>
<pre class="programlisting">#define mix_videodecodeparams_unref(obj) mix_params_unref(MIX_PARAMS(obj))
</pre>
<p>
Decrement reference count of the object.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
<td> object to unref.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_set_timestamp ()">
<a name="mix-videodecodeparams-set-timestamp"></a><h3>mix_videodecodeparams_set_timestamp ()</h3>
<pre class="programlisting">MIX_RESULT          mix_videodecodeparams_set_timestamp (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         guint64 timestamp);</pre>
<p>
Set Presentation timestamp</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
<td> <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> object
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>timestamp</code></em> :</span></p></td>
<td> Presentation timestamp for the video frame data, in milliseconds    
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <a class="link" href="MixVideo-mixvideodef.html" title="MI-X Video Data Definitons And Common Error Code">Common Video Error Return Codes</a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_get_timestamp ()">
<a name="mix-videodecodeparams-get-timestamp"></a><h3>mix_videodecodeparams_get_timestamp ()</h3>
<pre class="programlisting">MIX_RESULT          mix_videodecodeparams_get_timestamp (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         guint64 *timestamp);</pre>
<p>
Get Presentation timestamp</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
<td> <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> object
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>timestamp</code></em> :</span></p></td>
<td> Presentation timestamp for the video frame data, in milliseconds to be returned.     
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <a class="link" href="MixVideo-mixvideodef.html" title="MI-X Video Data Definitons And Common Error Code">Common Video Error Return Codes</a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_set_discontinuity ()">
<a name="mix-videodecodeparams-set-discontinuity"></a><h3>mix_videodecodeparams_set_discontinuity ()</h3>
<pre class="programlisting">MIX_RESULT          mix_videodecodeparams_set_discontinuity
                                                        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         gboolean discontinuity);</pre>
<p>
Set discontinuity flag</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
<td> <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> object
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>discontinuity</code></em> :</span></p></td>
<td> Flag to in Indicates a discontinuity in the stream.     
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <a class="link" href="MixVideo-mixvideodef.html" title="MI-X Video Data Definitons And Common Error Code">Common Video Error Return Codes</a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="mix_videodecodeparams_get_discontinuity ()">
<a name="mix-videodecodeparams-get-discontinuity"></a><h3>mix_videodecodeparams_get_discontinuity ()</h3>
<pre class="programlisting">MIX_RESULT          mix_videodecodeparams_get_discontinuity
                                                        (<a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams">MixVideoDecodeParams</a> *obj,
                                                         gboolean *discontinuity);</pre>
<p>
Get discontinuity flag</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>obj</code></em> :</span></p></td>
<td> <a class="link" href="MixVideoDecodeParams.html" title="MixVideoDecodeParams"><span class="type">MixVideoDecodeParams</span></a> object
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>discontinuity</code></em> :</span></p></td>
<td> Discontinuity flag to be returned     
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <a class="link" href="MixVideo-mixvideodef.html" title="MI-X Video Data Definitons And Common Error Code">Common Video Error Return Codes</a>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.11</div>
</body>
</html>
