blob: 2f535777b8bc66ce670a0ffd5529369697d0af6e [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>MixAudio</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="MixAudio Reference Manual">
<link rel="up" href="ch01.html" title="Mix Audio API">
<link rel="prev" href="MixAudio-MixAudioInitParams.html" title="MixAudioInitParams">
<link rel="next" href="MixAudio-mixaudiotypes.html" title="Mix Audio Types">
<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="Mix Audio API">
<link rel="chapter" href="tree-hierarchy.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="MixAudio-MixAudioInitParams.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">MixAudio Reference Manual</th>
<td><a accesskey="n" href="MixAudio-mixaudiotypes.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#MixAudio.synopsis" class="shortcut">Top</a>
 | 
<a href="#MixAudio.description" class="shortcut">Description</a>
 | 
<a href="#MixAudio.object-hierarchy" class="shortcut">Object Hierarchy</a>
</td></tr>
</table>
<div class="refentry" lang="en">
<a name="MixAudio"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="MixAudio.top_of_page"></a>MixAudio</span></h2>
<p>MixAudio — Object to support a single stream playback using hardware accelerated decoder.</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="MixAudio.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;mixaudio.h&gt;
enum <a class="link" href="MixAudio.html#MixStreamState" title="enum MixStreamState">MixStreamState</a>;
enum <a class="link" href="MixAudio.html#MixState" title="enum MixState">MixState</a>;
enum <a class="link" href="MixAudio.html#MixCodecMode" title="enum MixCodecMode">MixCodecMode</a>;
enum <a class="link" href="MixAudio.html#MixVolType" title="enum MixVolType">MixVolType</a>;
enum <a class="link" href="MixAudio.html#MixVolRamp" title="enum MixVolRamp">MixVolRamp</a>;
<a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a>;
enum <a class="link" href="MixAudio.html#MixDeviceState" title="enum MixDeviceState">MixDeviceState</a>;
<a class="link" href="MixAudio.html#MixAudio-struct" title="MixAudio">MixAudio</a>;
<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> * <a class="link" href="MixAudio.html#mix-audio-new" title="mix_audio_new ()">mix_audio_new</a> (void);
<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> * <a class="link" href="MixAudio.html#mix-audio-ref" title="mix_audio_ref ()">mix_audio_ref</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
#define <a class="link" href="MixAudio.html#mix-audio-unref" title="mix_audio_unref()">mix_audio_unref</a> (obj)
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-version" title="mix_audio_get_version ()">mix_audio_get_version</a> (guint *major,
guint *minor);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-initialize" title="mix_audio_initialize ()">mix_audio_initialize</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixCodecMode" title="enum MixCodecMode">MixCodecMode</a> mode,
<a class="link" href="MixAudio-MixAudioInitParams.html#MixAudioInitParams" title="MixAudioInitParams">MixAudioInitParams</a> *aip,
MixDrmParams *drminitparams);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-configure" title="mix_audio_configure ()">mix_audio_configure</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-MixAudioConfigParams.html#MixAudioConfigParams" title="MixAudioConfigParams">MixAudioConfigParams</a> *audioconfigparams,
MixDrmParams *drmparams);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()">mix_audio_decode</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
const <a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovin,
gint iovincnt,
guint64 *insize,
<a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovout,
gint iovoutcnt,
guint64 *outsize);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-capture-encode" title="mix_audio_capture_encode ()">mix_audio_capture_encode</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovout,
gint iovoutcnt);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-start" title="mix_audio_start ()">mix_audio_start</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-stop-drop" title="mix_audio_stop_drop ()">mix_audio_stop_drop</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-stop-drain" title="mix_audio_stop_drain ()">mix_audio_stop_drain</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-pause" title="mix_audio_pause ()">mix_audio_pause</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-resume" title="mix_audio_resume ()">mix_audio_resume</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-timestamp" title="mix_audio_get_timestamp ()">mix_audio_get_timestamp</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
guint64 *msecs);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-set-mute" title="mix_audio_set_mute ()">mix_audio_set_mute</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gboolean mute);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-mute" title="mix_audio_get_mute ()">mix_audio_get_mute</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gboolean *muted);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-max-vol" title="mix_audio_get_max_vol ()">mix_audio_get_max_vol</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *maxvol);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-min-vol" title="mix_audio_get_min_vol ()">mix_audio_get_min_vol</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *minvol);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-volume" title="mix_audio_get_volume ()">mix_audio_get_volume</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *currvol,
<a class="link" href="MixAudio.html#MixVolType" title="enum MixVolType">MixVolType</a> type);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-set-volume" title="mix_audio_set_volume ()">mix_audio_set_volume</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint currvol,
<a class="link" href="MixAudio.html#MixVolType" title="enum MixVolType">MixVolType</a> type,
gulong msecs,
<a class="link" href="MixAudio.html#MixVolRamp" title="enum MixVolRamp">MixVolRamp</a> ramptype);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-deinitialize" title="mix_audio_deinitialize ()">mix_audio_deinitialize</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-stream-state" title="mix_audio_get_stream_state ()">mix_audio_get_stream_state</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixStreamState" title="enum MixStreamState">MixStreamState</a> *streamState);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-state" title="mix_audio_get_state ()">mix_audio_get_state</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixState" title="enum MixState">MixState</a> *state);
gboolean <a class="link" href="MixAudio.html#mix-audio-am-is-enabled" title="mix_audio_am_is_enabled ()">mix_audio_am_is_enabled</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-is-am-available" title="mix_audio_is_am_available ()">mix_audio_is_am_available</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-mixaudiotypes.html#MixAudioManager" title="enum MixAudioManager">MixAudioManager</a> am,
gboolean *avail);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-output-configuration" title="mix_audio_get_output_configuration ()">mix_audio_get_output_configuration</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-MixAudioConfigParams.html#MixAudioConfigParams" title="MixAudioConfigParams">MixAudioConfigParams</a> **audioconfigparams);
MIX_RESULT <a class="link" href="MixAudio.html#mix-audio-get-stream-byte-decoded" title="mix_audio_get_stream_byte_decoded ()">mix_audio_get_stream_byte_decoded</a> (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
guint64 *byte);
</pre>
</div>
<div class="refsect1" lang="en">
<a name="MixAudio.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
GObject
+----MixAudio
</pre>
</div>
<div class="refsect1" lang="en">
<a name="MixAudio.description"></a><h2>Description</h2>
<p>
<a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object provide thread-safe API for application and/or multimedia framework to take advantage of Intel Smart Sound Technology(TM) driver for hardware audio decode and render.
</p>
<p>
Each <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object represents one streaming session with the Intel Smart Sound driver and provides configuration and control of the decoding and playback options.
</p>
<p>
The <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object also support integration with Intel Audio Manager service.
</p>
<p>
An application can utilize the <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object by calling the following sequence:
</p>
<div class="orderedlist"><ol type="1">
<li>
<a class="link" href="MixAudio.html#mix-audio-new" title="mix_audio_new ()"><code class="function">mix_audio_new()</code></a> to create a <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> instance.</li>
<li>
<a class="link" href="MixAudio.html#mix-audio-initialize" title="mix_audio_initialize ()"><code class="function">mix_audio_initialize()</code></a> to allocate Intel Smart Sound Technology resource.</li>
<li>
<a class="link" href="MixAudio.html#mix-audio-configure" title="mix_audio_configure ()"><code class="function">mix_audio_configure()</code></a> to configure stream parameters.</li>
<li>
<a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> can be called repeatedly for decoding and, optionally, rendering.</li>
<li>
<a class="link" href="MixAudio.html#mix-audio-start" title="mix_audio_start ()"><code class="function">mix_audio_start()</code></a> is called after the 1st <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> method to start rendering.</li>
<li>
<a class="link" href="MixAudio.html#mix-audio-stop-drain" title="mix_audio_stop_drain ()"><code class="function">mix_audio_stop_drain()</code></a> is called after the last buffer is passed for decoding in with <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a>. </li>
<li>
<a class="link" href="MixAudio.html#mix-audio-deinitialize" title="mix_audio_deinitialize ()"><code class="function">mix_audio_deinitialize()</code></a> to free resource once playback is completed.</li>
</ol></div>
<p>
</p>
<p>
Since <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> is a blocking call during playback, the following methods are called in a seperate thread to control progress:
</p>
<div class="itemizedlist"><ul type="disc">
<li><a class="link" href="MixAudio.html#mix-audio-start" title="mix_audio_start ()"><code class="function">mix_audio_start()</code></a></li>
<li><a class="link" href="MixAudio.html#mix-audio-pause" title="mix_audio_pause ()"><code class="function">mix_audio_pause()</code></a></li>
<li><a class="link" href="MixAudio.html#mix-audio-resume" title="mix_audio_resume ()"><code class="function">mix_audio_resume()</code></a></li>
<li><a class="link" href="MixAudio.html#mix-audio-stop-drop" title="mix_audio_stop_drop ()"><code class="function">mix_audio_stop_drop()</code></a></li>
</ul></div>
</div>
<div class="refsect1" lang="en">
<a name="MixAudio.details"></a><h2>Details</h2>
<div class="refsect2" lang="en">
<a name="MixStreamState"></a><h3>enum MixStreamState</h3>
<pre class="programlisting">typedef enum {
MIX_STREAM_NULL=0,
MIX_STREAM_STOPPED,
MIX_STREAM_PLAYING,
MIX_STREAM_PAUSED,
MIX_STREAM_DRAINING,
MIX_STREAM_LAST
} MixStreamState;
</pre>
<p>
Stream State during Decode and Render or Encode mode. These states do not apply to Decode and Return mode.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-STREAM-NULL--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_NULL</code></span></p></td>
<td> Stream is not allocated.
</td>
</tr>
<tr>
<td><p><a name="MIX-STREAM-STOPPED--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_STOPPED</code></span></p></td>
<td> Stream is at STOP state. This is the only state DNR is allowed.
</td>
</tr>
<tr>
<td><p><a name="MIX-STREAM-PLAYING--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_PLAYING</code></span></p></td>
<td> Stream is at Playing state.
</td>
</tr>
<tr>
<td><p><a name="MIX-STREAM-PAUSED--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_PAUSED</code></span></p></td>
<td> Stream is Paused.
</td>
</tr>
<tr>
<td><p><a name="MIX-STREAM-DRAINING--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_DRAINING</code></span></p></td>
<td> Stream is draining -- remaining of the buffer in the device are playing. This state is special due to the limitation that no other control operations are allowed at this state. Stream will become <em class="parameter"><code>MIX_STREAM_STOPPED</code></em> automatically when this data draining has completed.
</td>
</tr>
<tr>
<td><p><a name="MIX-STREAM-LAST--CAPS"></a><span class="term"><code class="literal">MIX_STREAM_LAST</code></span></p></td>
<td> Last index in the enumeration.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixState"></a><h3>enum MixState</h3>
<pre class="programlisting">typedef enum {
MIX_STATE_NULL=0,
MIX_STATE_UNINITIALIZED,
MIX_STATE_INITIALIZED,
MIX_STATE_CONFIGURED,
MIX_STATE_LAST
} MixState;
</pre>
<p>
The varies states the device is in.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-STATE-NULL--CAPS"></a><span class="term"><code class="literal">MIX_STATE_NULL</code></span></p></td>
<td></td>
</tr>
<tr>
<td><p><a name="MIX-STATE-UNINITIALIZED--CAPS"></a><span class="term"><code class="literal">MIX_STATE_UNINITIALIZED</code></span></p></td>
<td> MIX is not initialized.
</td>
</tr>
<tr>
<td><p><a name="MIX-STATE-INITIALIZED--CAPS"></a><span class="term"><code class="literal">MIX_STATE_INITIALIZED</code></span></p></td>
<td> MIX is initialized.
</td>
</tr>
<tr>
<td><p><a name="MIX-STATE-CONFIGURED--CAPS"></a><span class="term"><code class="literal">MIX_STATE_CONFIGURED</code></span></p></td>
<td> MIX is configured successfully.
</td>
</tr>
<tr>
<td><p><a name="MIX-STATE-LAST--CAPS"></a><span class="term"><code class="literal">MIX_STATE_LAST</code></span></p></td>
<td> Last index in the enumeration.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixCodecMode"></a><h3>enum MixCodecMode</h3>
<pre class="programlisting">typedef enum {
MIX_CODING_INVALID=0,
MIX_CODING_ENCODE,
MIX_CODING_DECODE,
MIX_CODING_LAST
} MixCodecMode;
</pre>
<p>
Mode where device is operating on. See <a class="link" href="MixAudio.html#mix-audio-initialize" title="mix_audio_initialize ()"><code class="function">mix_audio_initialize()</code></a>.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-CODING-INVALID--CAPS"></a><span class="term"><code class="literal">MIX_CODING_INVALID</code></span></p></td>
<td> Indicates device uninitialied for any mode.
</td>
</tr>
<tr>
<td><p><a name="MIX-CODING-ENCODE--CAPS"></a><span class="term"><code class="literal">MIX_CODING_ENCODE</code></span></p></td>
<td> Indicates device is opened for encoding.
</td>
</tr>
<tr>
<td><p><a name="MIX-CODING-DECODE--CAPS"></a><span class="term"><code class="literal">MIX_CODING_DECODE</code></span></p></td>
<td> Indicates device is opened for decoding.
</td>
</tr>
<tr>
<td><p><a name="MIX-CODING-LAST--CAPS"></a><span class="term"><code class="literal">MIX_CODING_LAST</code></span></p></td>
<td> Last index in the enumeration.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixVolType"></a><h3>enum MixVolType</h3>
<pre class="programlisting">typedef enum {
MIX_VOL_PERCENT=0,
MIX_VOL_DECIBELS,
MIX_VOL_LAST
} MixVolType;
</pre>
<p>
See <code class="function">mix_audio_getvolume()</code> and <code class="function">mix_audio_setvolume()</code>.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-VOL-PERCENT--CAPS"></a><span class="term"><code class="literal">MIX_VOL_PERCENT</code></span></p></td>
<td> volume is expressed in percentage.
</td>
</tr>
<tr>
<td><p><a name="MIX-VOL-DECIBELS--CAPS"></a><span class="term"><code class="literal">MIX_VOL_DECIBELS</code></span></p></td>
<td> volume is expressed in decibel.
</td>
</tr>
<tr>
<td><p><a name="MIX-VOL-LAST--CAPS"></a><span class="term"><code class="literal">MIX_VOL_LAST</code></span></p></td>
<td> last entry.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixVolRamp"></a><h3>enum MixVolRamp</h3>
<pre class="programlisting">typedef enum
{
MIX_RAMP_LINEAR = 0,
MIX_RAMP_EXPONENTIAL,
MIX_RAMP_LAST
} MixVolRamp;
</pre>
<p>
See <code class="function">mix_audio_getvolume()</code> and <code class="function">mix_audio_setvolume()</code>.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-RAMP-LINEAR--CAPS"></a><span class="term"><code class="literal">MIX_RAMP_LINEAR</code></span></p></td>
<td> volume is expressed in percentage.
</td>
</tr>
<tr>
<td><p><a name="MIX-RAMP-EXPONENTIAL--CAPS"></a><span class="term"><code class="literal">MIX_RAMP_EXPONENTIAL</code></span></p></td>
<td> volume is expressed in decibel.
</td>
</tr>
<tr>
<td><p><a name="MIX-RAMP-LAST--CAPS"></a><span class="term"><code class="literal">MIX_RAMP_LAST</code></span></p></td>
<td> last entry.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixIOVec"></a><h3>MixIOVec</h3>
<pre class="programlisting">typedef struct {
guchar *data;
gint size;
} MixIOVec;
</pre>
<p>
Scatter-gather style structure. To be used by <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> method for input and output buffer.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term">guchar *<em class="structfield"><code>data</code></em>;</span></p></td>
<td> data pointer
</td>
</tr>
<tr>
<td><p><span class="term">gint <em class="structfield"><code>size</code></em>;</span></p></td>
<td> size of buffer in <em class="parameter"><code>data</code></em>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixDeviceState"></a><h3>enum MixDeviceState</h3>
<pre class="programlisting">typedef enum {
MIX_AUDIO_DEV_CLOSED=0,
MIX_AUDIO_DEV_OPENED,
MIX_AUDIO_DEV_ALLOCATED
} MixDeviceState;
</pre>
<p>
Device state.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="MIX-AUDIO-DEV-CLOSED--CAPS"></a><span class="term"><code class="literal">MIX_AUDIO_DEV_CLOSED</code></span></p></td>
<td> TBD
</td>
</tr>
<tr>
<td><p><a name="MIX-AUDIO-DEV-OPENED--CAPS"></a><span class="term"><code class="literal">MIX_AUDIO_DEV_OPENED</code></span></p></td>
<td> TBD
</td>
</tr>
<tr>
<td><p><a name="MIX-AUDIO-DEV-ALLOCATED--CAPS"></a><span class="term"><code class="literal">MIX_AUDIO_DEV_ALLOCATED</code></span></p></td>
<td> TBD
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="MixAudio-struct"></a><h3>MixAudio</h3>
<pre class="programlisting">typedef struct {
GObject parent;
} MixAudio;
</pre>
<p>
MI-X Audio object</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term">GObject <em class="structfield"><code>parent</code></em>;</span></p></td>
<td> Parent object.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-new"></a><h3>mix_audio_new ()</h3>
<pre class="programlisting"><a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> * mix_audio_new (void);</pre>
<p>
Use this method to create new instance of <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</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="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-ref"></a><h3>mix_audio_ref ()</h3>
<pre class="programlisting"><a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> * mix_audio_ref (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</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 MixAudio instance where reference count has been increased.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-unref"></a><h3>mix_audio_unref()</h3>
<pre class="programlisting">#define mix_audio_unref(obj) g_object_unref (G_OBJECT(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" lang="en">
<a name="mix-audio-get-version"></a><h3>mix_audio_get_version ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_version (guint *major,
guint *minor);</pre>
<p>
Returns the version of the MI-X library.</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> <span class="type">MIX_RESULT_SUCCESS</span>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-initialize"></a><h3>mix_audio_initialize ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_initialize (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixCodecMode" title="enum MixCodecMode">MixCodecMode</a> mode,
<a class="link" href="MixAudio-MixAudioInitParams.html#MixAudioInitParams" title="MixAudioInitParams">MixAudioInitParams</a> *aip,
MixDrmParams *drminitparams);</pre>
<p>
This function will initialize an encode or decode session with this <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> instance. During this call, the device will be opened. If the device is not available, an error is returned to the caller so that an alternative (e.g. software decoding) can be configured instead. Use <a class="link" href="MixAudio.html#mix-audio-deinitialize" title="mix_audio_deinitialize ()"><code class="function">mix_audio_deinitialize()</code></a> to close the device.
</p>
<p>
A previous initialized session must be de-initialized using <a class="link" href="MixAudio.html#mix-audio-deinitialize" title="mix_audio_deinitialize ()"><code class="function">mix_audio_deinitialize()</code></a> before it can be initialized again.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>mode</code></em> :</span></p></td>
<td> Requested <a class="link" href="MixAudio.html#MixCodecMode" title="enum MixCodecMode"><span class="type">MixCodecMode</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>aip</code></em> :</span></p></td>
<td> Audio initialization parameters.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>drminitparams</code></em> :</span></p></td>
<td> <span class="emphasis"><em>Optional.</em></span> DRM initialization param if applicable.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on successful initilaization. <span class="type">MIX_RESULT_ALREADY_INIT</span> if session is already initialized.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-configure"></a><h3>mix_audio_configure ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_configure (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-MixAudioConfigParams.html#MixAudioConfigParams" title="MixAudioConfigParams">MixAudioConfigParams</a> *audioconfigparams,
MixDrmParams *drmparams);</pre>
<p>
This function can be used to configure a stream for the current session. The caller can use this function to do the following:
</p>
<p>
</p>
<div class="itemizedlist"><ul type="disc">
<li>Choose decoding mode (direct-render or decode-return)</li>
<li>Provide DRM parameters (using DRMparams object)</li>
<li>Provide stream parameters (using STRMparams objects)</li>
<li>Provide a stream name for the Intel Smart Sound Technology stream</li>
</ul></div>
<p>
</p>
<p>
SST stream parameters will be set during this call, and stream resources allocated in SST.
</p>
<p>
</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Intel Audio Manager support:</h3>
<p>If Intel Audio Manager support is enabled, and if <em class="parameter"><code>mode</code></em> is specified to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, the SST stream will be registered with Intel Audio Manager in the context of this call, using the stream name provided in <em class="parameter"><code>streamname</code></em>. Application will receive a notification from Intel Audio Manager that the stream has been created during or soon after this call. The application should be ready to handle either possibility. A stream ID (associated with the stream name) will be provided by Intel Audio Manager which will be used for subsequent notifications from Intel Audio Manager or calls to Intel Audio Manager for muting, pause and resume. See <code class="function">mix_audio_getstreamid()</code></p>
<p>If a stream is already registered with Intel Audio Manager, application must pass the same <em class="parameter"><code>streamname</code></em> argument to retain the session. Otherwise, the existing stream will be unregistered and a new stream will be registered with the new <em class="parameter"><code>streamname</code></em>.
</p>
</div>
<p>
</p>
<p>
If <em class="parameter"><code>mode</code></em> is specified to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> but direct-render mode is not available (due to end user use of alternative output device), an error indication will be returned to the caller so that an alternate pipeline configuration can be created (e.g. including a Pulse Audio sink, and support for output buffers). In this case, the caller will need to call <a class="link" href="MixAudio.html#mix-audio-configure" title="mix_audio_configure ()"><code class="function">mix_audio_configure()</code></a> again to with <em class="parameter"><code>mode</code></em> specify as <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DECODERETURN--CAPS"><span class="type">MIX_DECODE_DECODERETURN</span></a> to request decode-return mode.
</p>
<p>
This method can be called multiple times if reconfiguration of the stream is needed. However, this method must be called when the stream is in <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> state.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>audioconfigparams</code></em> :</span></p></td>
<td> a <a class="link" href="MixAudio-MixAudioConfigParams.html#MixAudioConfigParams" title="MixAudioConfigParams"><span class="type">MixAudioConfigParams</span></a> derived object containing information for the specific stream type.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>drmparams</code></em> :</span></p></td>
<td> <span class="emphasis"><em>Optional.</em></span> DRM initialization param if applicable.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> Result indicates successful or not.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-decode"></a><h3>mix_audio_decode ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_decode (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
const <a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovin,
gint iovincnt,
guint64 *insize,
<a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovout,
gint iovoutcnt,
guint64 *outsize);</pre>
<p>
This function is used to initiate HW accelerated decoding of encoded data buffers. This function may be used in two major modes, direct-render or decode-return.
</p>
<p>
With direct-render, input buffers are provided by the caller which hold encoded audio data, and no output buffers are provided. The encoded data is decoded, and the decoded data is sent directly to the output speaker. This allows very low power audio rendering and is the best choice of operation for longer battery life.
</p>
<p>
</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Intel Audio Manager Support</h3>
However, if the user has connected a different target output device, such as Bluetooth headphones, this mode cannot be used as the decoded audio must be directed to the Pulse Audio stack where the output to Bluetooth device can be supported, per Intel Audio Manager guidelines. This mode is called decode-return, and requires the caller to provide output buffers for the decoded data.
</div>
<p>
</p>
<p>
Input buffers in both modes are one or more user space buffers using a scatter/gather style vector interface.
</p>
<p>
Output buffers for the decode-return mode are one or more user space buffers in a scatter style vector interface. Buffers will be filled in order and lengths of data filled will be returned.
</p>
<p>
This call will block until data has been completely copied or queued to the driver. All user space buffers may be used or released when this call returns.
</p>
<p>
Note: If the stream is configured as <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, and whenever the stream in <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> state, the call to <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> will not start the playback until <a class="link" href="MixAudio.html#mix-audio-start" title="mix_audio_start ()"><code class="function">mix_audio_start()</code></a> is called. This behavior would allow application to queue up data but delay the playback until appropriate time.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovin</code></em> :</span></p></td>
<td> a pointer to an array of <a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec"><span class="type">MixIOVec</span></a> structure that contains the input buffers
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovincnt</code></em> :</span></p></td>
<td> the number of entry in the <em class="parameter"><code>iovin</code></em> array
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovout</code></em> :</span></p></td>
<td> a pointer to an arrya of <a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec"><span class="type">MixIOVec</span></a> structure that represent the output buffer. During input, each size in the <a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec"><span class="type">MixIOVec</span></a> array represents the available buffer size pointed to by data. Upon return, each size value will be updated to reflect how much data has been filled. This parameter is ignored if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>. See <a class="link" href="MixAudio.html#mix-audio-configure" title="mix_audio_configure ()"><code class="function">mix_audio_configure()</code></a> for more detail.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovoutcnt</code></em> :</span></p></td>
<td> in/out parameter which when input, it contains the number of entry available in the <em class="parameter"><code>iovout</code></em> array. Upon return, this value will be updated to reflect how many entry in the <em class="parameter"><code>iovout</code></em> array has been populated with data. This parameter is ignored if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>. See <a class="link" href="MixAudio.html#mix-audio-configure" title="mix_audio_configure ()"><code class="function">mix_audio_configure()</code></a> for more detail.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>outsize</code></em> :</span></p></td>
<td> Total number of bytes returned for the decode session. This parameter is ignored if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-capture-encode"></a><h3>mix_audio_capture_encode ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_capture_encode (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixIOVec" title="MixIOVec">MixIOVec</a> *iovout,
gint iovoutcnt);</pre>
<p>
To read encoded data from device.
</p>
<p>
<em><span class="comment">
NOTE: May need to rename to "read_encoded" or other name. Since "encode" seems to mean taking raw audio and convert to compressed audio.
</span></em></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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovout</code></em> :</span></p></td>
<td> Capture audio samples.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iovoutcnt</code></em> :</span></p></td>
<td> Number of entry in the input vector <em class="parameter"><code>iovout</code></em>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-start"></a><h3>mix_audio_start ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_start (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
If the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, application use this call to change the stream out of the <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> state. If <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a> is called and blocking in a seperate thread prior to this call. This method causes the device to start rendering data.
</p>
<p>
In <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DECODERETURN--CAPS"><span class="type">MIX_DECODE_DECODERETURN</span></a>, this method is no op.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if the resulting state is either <a class="link" href="MixAudio.html#MIX-STREAM-PLAYING--CAPS"><span class="type">MIX_STREAM_PLAYING</span></a> or <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a>. Fail code otherwise.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-stop-drop"></a><h3>mix_audio_stop_drop ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_stop_drop (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
If the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, application uses this function to stop the processing and playback of audio.
</p>
<p>
All remaining frames to be decoded or rendered will be discarded and playback will stop immediately, unblocks any pending <a class="link" href="MixAudio.html#mix-audio-decode" title="mix_audio_decode ()"><code class="function">mix_audio_decode()</code></a>.
</p>
<p>
If <span class="type">MIX_STOP_DRAIN</span> is requested, the call will block with stream state set to <a class="link" href="MixAudio.html#MIX-STREAM-DRAINING--CAPS"><span class="type">MIX_STREAM_DRAINING</span></a>, and return only until all remaining frame in previously submitted buffers are decoded and rendered. When <span class="type">MIX_STOP_DRAIN</span> returns successfully, the stream would have reached <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> successfully.
</p>
<p>
After this call, timestamp retrived by <code class="function">mix_audio_gettimestamp()</code> is reset to zero.
</p>
<p>
Note that this method returns <span class="type">MIX_RESULT_WRONG_STATE</span> if the stream is in <a class="link" href="MixAudio.html#MIX-STREAM-DRAINING--CAPS"><span class="type">MIX_STREAM_DRAINING</span></a> state.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if the resulting state has successfully reached <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a>. Fail code otherwise.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-stop-drain"></a><h3>mix_audio_stop_drain ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_stop_drain (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
If the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, application uses this function to stop the processing and playback of audio.
</p>
<p>
The call will block with stream state set to <a class="link" href="MixAudio.html#MIX-STREAM-DRAINING--CAPS"><span class="type">MIX_STREAM_DRAINING</span></a>, and return only until all remaining frame in previously submitted buffers are decoded and rendered.
</p>
<p>
Note that this method blocks until <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> is reached if it is called when the stream is already in <a class="link" href="MixAudio.html#MIX-STREAM-DRAINING--CAPS"><span class="type">MIX_STREAM_DRAINING</span></a> state.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if the resulting state has successfully reached <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a>. Fail code otherwise.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-pause"></a><h3>mix_audio_pause ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_pause (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
If the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, application uses this call to change the stream state from <a class="link" href="MixAudio.html#MIX-STREAM-PLAYING--CAPS"><span class="type">MIX_STREAM_PLAYING</span></a> to <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a>. Note that this method returns sucessful only when the resulting state reaches <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a>. Meaning it will return fail code if it is called in a state such as <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a>, where transitioning to <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a> is not possible.
</p>
<p>
In some situation, where there is potential race condition with the DRAINING operation, this method may return MIX_RESULT_NEED_RETRY to indicate last operation result is inclusive and request caller to call again.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a> state is reached successfully. <span class="type">MIX_RESULT_WRONG_STATE</span> if operation is not allowed with the current state.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-resume"></a><h3>mix_audio_resume ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_resume (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
If the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a>, application uses this call to change the stream state to <a class="link" href="MixAudio.html#MIX-STREAM-PLAYING--CAPS"><span class="type">MIX_STREAM_PLAYING</span></a>. Note that this method returns sucessful only when the resulting state reaches <a class="link" href="MixAudio.html#MIX-STREAM-PAUSED--CAPS"><span class="type">MIX_STREAM_PAUSED</span></a>. Meaning it will return fail code if it is called in a state such as <a class="link" href="MixAudio.html#MIX-STREAM-DRAINING--CAPS"><span class="type">MIX_STREAM_DRAINING</span></a>, where transitioning to <a class="link" href="MixAudio.html#MIX-STREAM-PLAYING--CAPS"><span class="type">MIX_STREAM_PLAYING</span></a> is not possible.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if <a class="link" href="MixAudio.html#MIX-STREAM-PLAYING--CAPS"><span class="type">MIX_STREAM_PLAYING</span></a> state is reached successfully. <span class="type">MIX_RESULT_WRONG_STATE</span> if operation is not allowed with the current state.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-timestamp"></a><h3>mix_audio_get_timestamp ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_timestamp (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
guint64 *msecs);</pre>
<p>
This function can be used to retrieve the current timestamp for audio playback in milliseconds. The timestamp will reflect the amount of audio data rendered since the start of stream, or since the last stop. Note that the timestamp is always reset to zero when the stream enter <a class="link" href="MixAudio.html#MIX-STREAM-STOPPED--CAPS"><span class="type">MIX_STREAM_STOPPED</span></a> state. The timestamp is an unsigned long value, so the value will wrap when the timestamp reaches <span class="type">ULONG_MAX</span>. This function is only valid in direct-render mode.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>msecs</code></em> :</span></p></td>
<td> play time in milliseconds.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if the timestamp is available. <span class="type">MIX_RESULT_WRONG_MODE</span> if operation is not allowed with the current mode.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-set-mute"></a><h3>mix_audio_set_mute ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_set_mute (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gboolean mute);</pre>
<p>
This function is used to mute and unmute audio playback. While muted, playback would continue but silently. This function is only valid when the session is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> mode.
</p>
<p>
Note that playback volumn may change due to change of global settings while stream is muted.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>mute</code></em> :</span></p></td>
<td> Turn mute on/off.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-mute"></a><h3>mix_audio_get_mute ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_mute (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gboolean *muted);</pre>
<p>
Get Mute.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>muted</code></em> :</span></p></td>
<td> current mute state.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-max-vol"></a><h3>mix_audio_get_max_vol ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_max_vol (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *maxvol);</pre>
<p>
This function can be used if the application will be setting the audio volume using decibels instead of percentage. The maximum volume in decibels supported by the driver will be returned. This value can be used to determine the upper bound of the decibel range in calculating volume levels. This value is a signed integer. This function is only valid if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> mode.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>maxvol</code></em> :</span></p></td>
<td> pointer to receive max volumn.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-min-vol"></a><h3>mix_audio_get_min_vol ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_min_vol (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *minvol);</pre>
<p>
This function can be used if the application will be setting the audio volume using decibels instead of percentage. The minimum volume in decibels supported by the driver will be returned. This value can be used to determine the lower bound of the decibel range in calculating volume levels. This value is a signed integer. This function is only valid if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> mode.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>minvol</code></em> :</span></p></td>
<td> pointer to receive max volumn.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-volume"></a><h3>mix_audio_get_volume ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_volume (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint *currvol,
<a class="link" href="MixAudio.html#MixVolType" title="enum MixVolType">MixVolType</a> type);</pre>
<p>
This function returns the current volume setting in either decibels or percentage. This function is only valid if stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> mode.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>currvol</code></em> :</span></p></td>
<td> Current volume. Note that if <em class="parameter"><code>type</code></em> equals <a class="link" href="MixAudio.html#MIX-VOL-PERCENT--CAPS"><span class="type">MIX_VOL_PERCENT</span></a>, this value will be return within the range of 0 to 100 inclusive.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
<td> The type represented by <em class="parameter"><code>currvol</code></em>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-set-volume"></a><h3>mix_audio_set_volume ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_set_volume (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
gint currvol,
<a class="link" href="MixAudio.html#MixVolType" title="enum MixVolType">MixVolType</a> type,
gulong msecs,
<a class="link" href="MixAudio.html#MixVolRamp" title="enum MixVolRamp">MixVolRamp</a> ramptype);</pre>
<p>
This function sets the current volume setting in either decibels or percentage. This function is only valid if the stream is configured to <a class="link" href="MixAudio-MixAudioConfigParams.html#MIX-DECODE-DIRECTRENDER--CAPS"><span class="type">MIX_DECODE_DIRECTRENDER</span></a> mode.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>currvol</code></em> :</span></p></td>
<td> Current volume. Note that if <em class="parameter"><code>type</code></em> equals <a class="link" href="MixAudio.html#MIX-VOL-PERCENT--CAPS"><span class="type">MIX_VOL_PERCENT</span></a>, this value will be trucated to within the range of 0 to 100 inclusive.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
<td> The type represented by <em class="parameter"><code>currvol</code></em>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-deinitialize"></a><h3>mix_audio_deinitialize ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_deinitialize (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
This function will uninitialize a session with this MI-X instance. During this call, the SST device will be closed and resources including mmapped buffers would be freed.This function should be called by the application once <code class="function">mix_audio_init()</code> has been called.
</p>
<p>
</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Intel Audio Manager Support</h3>
The SST stream would be unregistered with Intel Audio Manager if it was registered.
</div>
<p>
</p>
<p>
Note that if this method should not fail normally. If it does return failure, the state of this object and the underlying mechanism is compromised and application should not attempt to reuse this object.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-stream-state"></a><h3>mix_audio_get_stream_state ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_stream_state (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixStreamState" title="enum MixStreamState">MixStreamState</a> *streamState);</pre>
<p>
Get the stream state of the current stream.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>streamState</code></em> :</span></p></td>
<td> pointer to receive stream state.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-state"></a><h3>mix_audio_get_state ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_state (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio.html#MixState" title="enum MixState">MixState</a> *state);</pre>
<p>
Get the device state of the audio session.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
<td> pointer to receive state
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> Current device state.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-am-is-enabled"></a><h3>mix_audio_am_is_enabled ()</h3>
<pre class="programlisting">gboolean mix_audio_am_is_enabled (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix);</pre>
<p>
This method checks if the current session is configure to use Intel Audio Manager. Note that Intel Audio Manager is considered disabled if the stream has not be initialized to use the service explicitly.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> boolean indicates if Intel Audio Manager is enabled with the current session.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-is-am-available"></a><h3>mix_audio_is_am_available ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_is_am_available (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-mixaudiotypes.html#MixAudioManager" title="enum MixAudioManager">MixAudioManager</a> am,
gboolean *avail);</pre>
<p>
Check if AM is available.</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> TBD
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>am</code></em> :</span></p></td>
<td> TBD
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>avail</code></em> :</span></p></td>
<td> TBD
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> TBD
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-output-configuration"></a><h3>mix_audio_get_output_configuration ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_output_configuration (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
<a class="link" href="MixAudio-MixAudioConfigParams.html#MixAudioConfigParams" title="MixAudioConfigParams">MixAudioConfigParams</a> **audioconfigparams);</pre>
<p>
This method retrieve the current configuration. This can be called after initialization. If a stream has been configured, it returns the corresponding derive object of MixAudioConfigParams.</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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>audioconfigparams</code></em> :</span></p></td>
<td> double pointer to hold output configuration.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> on success or other fail code.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="mix-audio-get-stream-byte-decoded"></a><h3>mix_audio_get_stream_byte_decoded ()</h3>
<pre class="programlisting">MIX_RESULT mix_audio_get_stream_byte_decoded (<a class="link" href="MixAudio.html" title="MixAudio">MixAudio</a> *mix,
guint64 *byte);</pre>
<p>
Retrive the culmulative byte decoded.
</p>
<p>
<em><span class="remark">Not Implemented.</span></em></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> <a class="link" href="MixAudio.html" title="MixAudio"><span class="type">MixAudio</span></a> object.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>msecs</code></em> :</span></p></td>
<td> stream byte decoded..
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>returns</code></em> :</span></p></td>
<td> <span class="type">MIX_RESULT_SUCCESS</span> if the value is available. <span class="type">MIX_RESULT_WRONG_MODE</span> if operation is not allowed with the current mode.
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.11</div>
</body>
</html>