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