1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee INTEL CONFIDENTIAL
3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Copyright 2009 Intel Corporation All Rights Reserved.
4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors. The Material contains trade secrets and proprietary and confidential information of Intel or its suppliers and licensors. The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without Intel’s prior express written permission.
5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel or otherwise. Any license under such intellectual property rights must be express and approved by Intel in writing.
7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef __MIX_AUDIOCONFIGPARAMS_H__
10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define __MIX_AUDIOCONFIGPARAMS_H__
11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "mixparams.h"
14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "mixresult.h"
15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "mixaudiotypes.h"
16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixACPOpAlign:
19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_OUTPUT_ALIGN_UNKNOWN: Output alignment undefined.
20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @IX_ACP_OUTPUT_ALIGN_16: Output word is 16-bit aligned
21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_OUTPUT_ALIGN_MSB: Output word is MSB aligned
22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_OUTPUT_ALIGN_LSB: Output word is LSB aligned
23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_OUTPUT_ALIGN_LAST: Last entry in list.
24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
25bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Audio Output alignment.
26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
28bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef enum {
29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_OUTPUT_ALIGN_UNKNOWN=-1,
30bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_OUTPUT_ALIGN_16=0,
31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_OUTPUT_ALIGN_MSB,
32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_OUTPUT_ALIGN_LSB,
33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_OUTPUT_ALIGN_LAST
34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} MixACPOpAlign;
35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
36bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixACPBPSType:
38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_BPS_UNKNOWN: Bit Per Sample undefined.
39bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_BPS_16: Output bits per sample is 16 bits
40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_ACP_BPS_24: Output bits per sample is 24 bits
41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Audio Output Size in bits per sample.
43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
45bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef enum {
46bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_BPS_UNKNOWN=0,
47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_BPS_16=16,
48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_ACP_BPS_24=24,
49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} MixACPBPSType;
50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_TYPE_AUDIOCONFIGPARAMS:
53bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Get type of class.
55bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_TYPE_AUDIOCONFIGPARAMS (mix_acp_get_type ())
57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_AUDIOCONFIGPARAMS:
60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: object to be type-casted.
61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Type casting.
63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_AUDIOCONFIGPARAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MIX_TYPE_AUDIOCONFIGPARAMS, MixAudioConfigParams))
65bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_IS_AUDIOCONFIGPARAMS:
68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: an object.
69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Checks if the given object is an instance of #MixAudioConfigParams
71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_IS_AUDIOCONFIGPARAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MIX_TYPE_AUDIOCONFIGPARAMS))
73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_AUDIOCONFIGPARAMS_CLASS:
76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @klass: class to be type-casted.
77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Type casting.
79bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_AUDIOCONFIGPARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MIX_TYPE_AUDIOCONFIGPARAMS, MixAudioConfigParamsClass))
81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_IS_AUDIOCONFIGPARAMS_CLASS:
84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @klass: a class.
85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Checks if the given class is #MixAudioConfigParamsClass
87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_IS_AUDIOCONFIGPARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MIX_TYPE_AUDIOCONFIGPARAMS))
89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_AUDIOCONFIGPARAMS_GET_CLASS:
92bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: a #MixParams object.
93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
94bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Get the class instance of the object.
95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_AUDIOCONFIGPARAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MIX_TYPE_AUDIOCONFIGPARAMS, MixAudioConfigParamsClass))
97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
98bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _MixAudioConfigParams        MixAudioConfigParams;
99bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _MixAudioConfigParamsClass   MixAudioConfigParamsClass;
100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
101bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixDecodeMode:
103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_DECODE_NULL: Undefined decode mode.
104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_DECODE_DIRECTRENDER: Stream is configured in Direct Render mode
105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_DECODE_DECODERETURN: Stream is configured in Decode Return mode
106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MIX_DECODE_LAST: Last index in the enumeration.
107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Operation Mode for a MI-X session. See mix_audio_configure().
109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
110bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
111bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef enum {
112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_DECODE_NULL=0,
113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_DECODE_DIRECTRENDER,
114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_DECODE_DECODERETURN,
115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MIX_DECODE_LAST
116bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} MixDecodeMode;
117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParams:
120bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @parent: parent.
121bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @decode_mode: Decode Mode to use for current session. See #mix_acp_set_decodemode
122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @stream_name: Stream name. See #mix_acp_set_streamname. This object will release the string upon destruction.
123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @audio_manager: Type of Audio Manager. See #mix_acp_set_audio_manager.
124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @num_channels: Number of output channels. See #MIX_ACP_NUM_CHANNELS
125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @bit_rate: <emphasis>Optional.</emphasis> See #MIX_ACP_BITRATE
126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @sample_freq: Output frequency. See #MIX_ACP_SAMPLE_FREQ
127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @bits_per_sample: Number of output bit per sample. See #mix_acp_set_bps
128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @op_align: Output Byte Alignment. See #mix_acp_set_op_align
129bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
130bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @MixAudio configuration parameters object.
131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
132bd8388b4555645b3d29abc6a94c303638064d69awonjong.leestruct _MixAudioConfigParams
133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< public >*/
135bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixParams parent;
136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
137bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< public >*/
138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /* Audio Session Parameters */
139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixDecodeMode decode_mode;
140bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  gchar *stream_name;
141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixAudioManager audio_manager;
142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< public >*/
144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /* Audio Format Parameters */
145bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  gint num_channels;
146bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  gint bit_rate;
147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  gint sample_freq;
148bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixACPBPSType bits_per_sample;
149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixACPOpAlign op_align;
150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< private >*/
151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  void* reserved1;
152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  void* reserved2;
153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  void* reserved3;
154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  void* reserved4;
155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
157bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParamsClass:
159bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
160bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MI-X Audio object class
161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
162bd8388b4555645b3d29abc6a94c303638064d69awonjong.leestruct _MixAudioConfigParamsClass
163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< public >*/
165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixParamsClass parent_class;
166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< virtual public >*/
168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  void (*print_params) (MixAudioConfigParams *obj);
169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /* class members */
171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_type:
176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: type
177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Get the type of object.
179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
180bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeGType mix_acp_get_type (void);
181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_new:
184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: A newly allocated instance of #MixAudioConfigParams
185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Use this method to create new instance of #MixAudioConfigParams
187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
188bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixAudioConfigParams *mix_acp_new(void);
189bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
191bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_ref:
192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @mix: object to add reference
193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: the MixAudioConfigParams instance where reference count has been increased.
194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Add reference count.
196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
197bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixAudioConfigParams *mix_acp_ref(MixAudioConfigParams *mix);
198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
199bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
200bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_unref:
201bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: object to unref.
202bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
203bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Decrement reference count of the object.
204bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
205bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define mix_acp_unref(obj) mix_params_unref(MIX_PARAMS(obj))
206bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
207bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* Class Methods */
208bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
209bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
210bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_ACP_DECODEMODE:
211bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
212bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
213bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParam.decode_mode accessor.
214bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
215bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Configure the decode mode to one of #MixDecodeMode value.
216bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
217bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_ACP_DECODEMODE(obj) (MIX_AUDIOCONFIGPARAMS(obj)->decode_mode)
218bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
219bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
220bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_ACP_NUM_CHANNELS:
221bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
222bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
223bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParam.num_channels accessor.
224bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
225bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Configure the number of output channels. This value need to be exact the same as the supported output channel in the audio since down-mixing is not supported.
226bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
227bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * This value can be used during #MIX_DECODE_DECODERETURN mode for buffer size/duration calculation.
228bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
229bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * In Moorestown, number of channel must be 1 or 2.
230bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
231bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_ACP_NUM_CHANNELS(obj) (MIX_AUDIOCONFIGPARAMS(obj)->num_channels)
232bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
233bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
234bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_ACP_BITRATE:
235bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
236bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
237bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParam.bit_rate accessor.
238bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
239bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Bit rate of the current audio.
240bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
241bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * <remark>Optional</remark>
242bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
243bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_ACP_BITRATE(obj) (MIX_AUDIOCONFIGPARAMS(obj)->bit_rate)
244bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
245bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
246bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MIX_ACP_SAMPLE_FREQ:
247bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
248bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
249bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MixAudioConfigParam.sample_freq accessor.
250bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
251bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Output sampling frequency.
252bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
253bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * This value can be used during #MIX_DECODE_DECODERETURN mode for buffer size/duration calculation.
254bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
255bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_ACP_SAMPLE_FREQ(obj) (MIX_AUDIOCONFIGPARAMS(obj)->sample_freq)
256bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
257bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
258bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_decodemode:
259bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
260bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MixDecodeMode
261bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
262bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Retrieve currently configured #MixDecodeMode.
263bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
264bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixDecodeMode mix_acp_get_decodemode(MixAudioConfigParams *obj);
265bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
266bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
267bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_set_decodemode:
268bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
269bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @mode: #MixDecodeMode to set
270bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MIX_RESULT
271bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
272bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Configure session for one of the #MixDecodeMode.
273bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
274bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT mix_acp_set_decodemode(MixAudioConfigParams *obj, MixDecodeMode mode);
275bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
276bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
277bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_streamname:
278bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
279bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: pointer to a copy of the stream name. NULL if name is not available.
280bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
281bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Return copy of streamname. caller must free with g_free()
282bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
283bd8388b4555645b3d29abc6a94c303638064d69awonjong.leegchar *mix_acp_get_streamname(MixAudioConfigParams *obj);
284bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
285bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
286bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_set_streamname:
287bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
288bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @streamname: Stream name to set
289bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MIX_RESULT
290bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
291bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Set the stream name. The object will make a copy of the input stream name string.
292bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
293bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
294bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT mix_acp_set_streamname(MixAudioConfigParams *obj, const gchar *streamname);
295bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
296bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
297bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_set_audio_manager:
298bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
299bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @am: #MixAudioManager
300bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MIX_RESULT
301bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
302bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Set the Audio Manager to one of the #MixAudioManager.
303bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
304bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT mix_acp_set_audio_manager(MixAudioConfigParams *obj, MixAudioManager am);
305bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
306bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
307bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_audio_manager:
308bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
309bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MixAudioManager
310bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
311bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Retrieve name of currently configured audio manager.
312bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
313bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixAudioManager mix_acp_get_audio_manager(MixAudioConfigParams *obj);
314bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
315bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
316bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_is_streamname_valid:
317bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
318bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: boolean indicates if stream name is valid.
319bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
320bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Check if stream name is valid considering the current Decode Mode.
321bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
322bd8388b4555645b3d29abc6a94c303638064d69awonjong.leegboolean mix_acp_is_streamname_valid(MixAudioConfigParams *obj);
323bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
324bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
325bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
326bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_bps:
327bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
328bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MixACPBPSType
329bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
330bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Retrive currently configured bit-per-stream value.
331bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
332bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixACPBPSType mix_acp_get_bps(MixAudioConfigParams *obj);
333bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
334bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
335bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_set_bps:
336bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams
337bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @mode: #MixACPBPSType to set
338bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MIX_RESULT
339bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
340bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Configure bit-per-stream of one of the supported #MixACPBPSType.
341bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
342bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT mix_acp_set_bps(MixAudioConfigParams *obj, MixACPBPSType type);
343bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
344bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
345bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_get_op_align:
346bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
347bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: #MixACPOpAlign
348bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
349bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Get Output Alignment.
350bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
351bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMixACPOpAlign mix_acp_get_op_align(MixAudioConfigParams *obj);
352bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
353bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
354bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * mix_acp_set_op_align:
355bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @obj: #MixAudioConfigParams object
356bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @op_align: One of the supported #MixACPOpAlign
357bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns: MIX_RESULT
358bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
359bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Set Output Alignment to one of the #MixACPOpAlign value.
360bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
361bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT mix_acp_set_op_align(MixAudioConfigParams *obj, MixACPOpAlign op_align);
362bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
363bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* void mix_acp_print_params(MixAudioConfigParams *obj); */
364bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
365bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
366bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* __MIX_AUDIOCONFIGPARAMS_H__ */
367bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
368