Home | History | Annotate | Download | only in src
      1 /*
      2  INTEL CONFIDENTIAL
      3  Copyright 2009 Intel Corporation All Rights Reserved.
      4  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 Intels prior express written permission.
      5 
      6  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.
      7 */
      8 
      9 #ifndef __MIX_ACP_WMA_H__
     10 #define __MIX_ACP_WMA_H__
     11 
     12 
     13 #include "mixacp.h"
     14 
     15 /**
     16  * MIX_TYPE_AUDIOCONFIGPARAMSWMA:
     17  *
     18  * Get type of class.
     19  */
     20 #define MIX_TYPE_AUDIOCONFIGPARAMSWMA (mix_acp_wma_get_type ())
     21 
     22 /**
     23  * MIX_AUDIOCONFIGPARAMSWMA:
     24  * @obj: object to be type-casted.
     25  *
     26  * Type casting.
     27  */
     28 #define MIX_AUDIOCONFIGPARAMSWMA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MIX_TYPE_AUDIOCONFIGPARAMSWMA, MixAudioConfigParamsWMA))
     29 
     30 /**
     31  * MIX_IS_AUDIOCONFIGPARAMSWMA:
     32  * @obj: an object.
     33  *
     34  * Checks if the given object is an instance of #MixAudioConfigParamsWMA
     35  */
     36 #define MIX_IS_AUDIOCONFIGPARAMSWMA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MIX_TYPE_AUDIOCONFIGPARAMSWMA))
     37 
     38 /**
     39  * MIX_AUDIOCONFIGPARAMSWMA_CLASS:
     40  * @klass: class to be type-casted.
     41  *
     42  * Type casting.
     43  */
     44 #define MIX_AUDIOCONFIGPARAMSWMA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MIX_TYPE_AUDIOCONFIGPARAMSWMA, MixAudioConfigParamsWMAClass))
     45 
     46 /**
     47  * MIX_IS_AUDIOCONFIGPARAMSWMA_CLASS:
     48  * @klass: a class.
     49  *
     50  * Checks if the given class is #MixAudioConfigParamsWMAClass
     51  */
     52 #define MIX_IS_AUDIOCONFIGPARAMSWMA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MIX_TYPE_AUDIOCONFIGPARAMSWMA))
     53 
     54 /**
     55  * MIX_AUDIOCONFIGPARAMSWMA_GET_CLASS:
     56  * @obj: a #MixAudioConfigParamsWMA object.
     57  *
     58  * Get the class instance of the object.
     59  */
     60 #define MIX_AUDIOCONFIGPARAMSWMA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MIX_TYPE_AUDIOCONFIGPARAMSWMA, MixAudioConfigParamsWMAClass))
     61 
     62 /**
     63  * MixAudioWMAVersion:
     64  * @MIX_AUDIO_WMA_VUNKNOWN: WMA version undefined.
     65  * @MIX_AUDIO_WMA_V9: WMA 9
     66  * @MIX_AUDIO_WMA_V10: <emphasis>Not Supported</emphasis> WMA 10
     67  * @MIX_AUDIO_WMA_V10P: <emphasis>Not Supported</emphasis> WMA 10 Pro
     68  * @MIX_AUDIO_WMA_LAST: last entry.
     69  *
     70  * WMA version.
     71  */
     72 typedef enum {
     73   MIX_AUDIO_WMA_VUNKNOWN,
     74   MIX_AUDIO_WMA_V9,
     75   MIX_AUDIO_WMA_V10,
     76   MIX_AUDIO_WMA_V10P,
     77   MIX_AUDIO_WMA_LAST
     78 } MixAudioWMAVersion;
     79 
     80 typedef struct _MixAudioConfigParamsWMA        MixAudioConfigParamsWMA;
     81 typedef struct _MixAudioConfigParamsWMAClass   MixAudioConfigParamsWMAClass;
     82 
     83 /**
     84  * MixAudioConfigParamsWMA:
     85  * @parent: parent.
     86  * @channel_mask: Channel Mask. See #MIX_ACP_WMA_CHANNEL_MASK
     87  * @format_tag: Format tag. See #MIX_ACP_WMA_FORMAT_TAG
     88  * @block_algin: Block alignment. See #MIX_ACP_WMA_BLOCK_ALIGN
     89  * @wma_encode_opt: Encoder option. See #MIX_ACP_WMA_ENCODE_OPT
     90  * @pcm_bit_width: Source pcm bit width. See #MIX_ACP_WMA_PCM_BIT_WIDTH
     91  * @wma_version: WMA version. See #mix_acp_wma_set_version
     92  *
     93  * MI-X Audio Parameter object
     94  */
     95 struct _MixAudioConfigParamsWMA
     96 {
     97   /*< public >*/
     98   MixAudioConfigParams parent;
     99 
    100   /*< public >*/
    101   /* Audio Format Parameters */
    102   guint32 channel_mask;
    103   guint16 format_tag;
    104   guint16 block_align;
    105   guint16 wma_encode_opt;/* Encoder option */
    106   guint8 pcm_bit_width;  /* source pcm bit width */
    107   MixAudioWMAVersion wma_version;
    108 };
    109 
    110 /**
    111  * MixAudioConfigParamsWMAClass:
    112  *
    113  * MI-X Audio object class
    114  */
    115 struct _MixAudioConfigParamsWMAClass
    116 {
    117   /*< public >*/
    118   MixAudioConfigParamsClass parent_class;
    119 
    120   /* class members */
    121 };
    122 
    123 /**
    124  * mix_acp_wma_get_type:
    125  * @returns: type
    126  *
    127  * Get the type of object.
    128  */
    129 GType mix_acp_wma_get_type (void);
    130 
    131 /**
    132  * mix_acp_wma_new:
    133  * @returns: A newly allocated instance of #MixAudioConfigParamsWMA
    134  *
    135  * Use this method to create new instance of #MixAudioConfigParamsWMA
    136  */
    137 MixAudioConfigParamsWMA *mix_acp_wma_new(void);
    138 
    139 /**
    140  * mix_acp_wma_ref:
    141  * @mix: object to add reference
    142  * @returns: the MixAudioConfigParamsWMA instance where reference count has been increased.
    143  *
    144  * Add reference count.
    145  */
    146 MixAudioConfigParamsWMA *mix_acp_wma_ref(MixAudioConfigParamsWMA *mix);
    147 
    148 /**
    149  * mix_acp_wma_unref:
    150  * @obj: object to unref.
    151  *
    152  * Decrement reference count of the object.
    153  */
    154 #define mix_acp_wma_unref(obj) mix_params_unref(MIX_PARAMS(obj))
    155 
    156 /**
    157  * MIX_ACP_WMA_CHANNEL_MASK:
    158  * @obj: #MixAudioConfigParamsWMA object
    159  *
    160  * MixAudioConfigParamWMA.channel_mask accessor.
    161  *
    162  * Channel mask must be one of the following:
    163  *
    164  * 4: For single (1) channel output.
    165  *
    166  * 3: For stereo (2) channels output.
    167  *
    168  * Only 1 or 2 output channels are supported.
    169  *
    170 */
    171 #define MIX_ACP_WMA_CHANNEL_MASK(obj) (MIX_AUDIOCONFIGPARAMSWMA(obj)->channel_mask)
    172 
    173 /**
    174  * MIX_ACP_WMA_FORMAT_TAG:
    175  * @obj: #MixAudioConfigParamsWMA object
    176  *
    177  * MixAudioConfigParamWMA.format_tag accessor.
    178  *
    179  * <remark>In Moorestown, only value 0x0161 combined with use of #MIX_AUDIO_WMA_V9 is supported.</remark>
    180 */
    181 #define MIX_ACP_WMA_FORMAT_TAG(obj) (MIX_AUDIOCONFIGPARAMSWMA(obj)->format_tag)
    182 
    183 /**
    184  * MIX_ACP_WMA_BLOCK_ALIGN:
    185  * @obj: #MixAudioConfigParamsWMA object
    186  *
    187  * MixAudioConfigParamWMA.block_align accessor.
    188  *
    189  * Block alignment indicates packet size. Available from ASF Header.
    190 */
    191 #define MIX_ACP_WMA_BLOCK_ALIGN(obj) (MIX_AUDIOCONFIGPARAMSWMA(obj)->block_align)
    192 
    193 /**
    194  * MIX_ACP_WMA_ENCODE_OPT:
    195  * @obj: #MixAudioConfigParamsWMA object
    196  *
    197  * MixAudioConfigParamWMA.wma_encode_opt accessor.
    198  *
    199  * Encoder option available from ASF header.
    200 */
    201 #define MIX_ACP_WMA_ENCODE_OPT(obj) (MIX_AUDIOCONFIGPARAMSWMA(obj)->wma_encode_opt)
    202 
    203 /**
    204  * MIX_ACP_WMA_PCM_BIT_WIDTH:
    205  * @obj: #MixAudioConfigParamsWMA object
    206  *
    207  * MixAudioConfigParamWMA.pcm_bit_width accessor.
    208  *
    209  * Source pcm bit width available from ASF Header.
    210 */
    211 #define MIX_ACP_WMA_PCM_BIT_WIDTH(obj) (MIX_AUDIOCONFIGPARAMSWMA(obj)->pcm_bit_width)
    212 
    213 /* Class Methods */
    214 /**
    215  * mix_acp_wma_get_version:
    216  * @obj: #MixAudioConfigParamsWMA object
    217  * @returns: MixAudioWMAVersion
    218  *
    219  * Get WMA Version.
    220 */
    221 MixAudioWMAVersion mix_acp_wma_get_version(MixAudioConfigParamsWMA *obj);
    222 
    223 /**
    224  * mix_acp_wma_set_version:
    225  * @obj: #MixAudioConfigParamsWMA object
    226  * @ver: MixAudioWMAVersion to set.
    227  * @returns: MIX_RESULT.
    228  *
    229  * Set WMA Version.
    230  *
    231  * <remark>In Moorestown, only #MIX_AUDIO_WMA_V9 is supported</remark>
    232 */
    233 MIX_RESULT mix_acp_wma_set_version(MixAudioConfigParamsWMA *obj, MixAudioWMAVersion ver);
    234 
    235 #endif /* __MIX_AUDIOCONFIGPARAMSWMA_H__ */
    236