Home | History | Annotate | Download | only in android
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #define ANDROID_DEFAULT_AUDIOTRACK_BUFFER_SIZE 4096
     18 
     19 /**************************************************************************************************
     20  * AudioPlayer lifecycle
     21  ****************************/
     22 /*
     23  * Checks that the combination of source and sink parameters is supported in this implementation.
     24  * Return
     25  *     SL_RESULT_SUCCESS
     26  *     SL_PARAMETER_INVALID
     27  */
     28 extern SLresult android_audioPlayer_checkSourceSink(CAudioPlayer *pAudioPlayer);
     29 
     30 /*
     31  * Finish the Android-specific pre-Realize initialization of a CAudioPlayer.
     32  */
     33 extern void android_audioPlayer_create(CAudioPlayer *pAudioPlayer);
     34 
     35 /*
     36  * Allocates and initializes the Android media framework objects intended to be used with the
     37  * given CAudioPlayer data
     38  * Return
     39  *     SL_RESULT_SUCCESS
     40  *     SL_RESULT_CONTENT_UNSUPPORTED if an error occurred during the allocation and initialization
     41  *         of the Android resources
     42  */
     43 extern SLresult android_audioPlayer_realize(CAudioPlayer *pAudioPlayer, SLboolean async);
     44 
     45 /*
     46  * Return
     47  *     SL_RESULT_SUCCESS
     48  *     SL_RESULT_PARAMETER_INVALID
     49  *     SL_RESULT_INTERNAL_ERROR
     50  *     SL_RESULT_PRECONDITIONS_VIOLATED
     51  */
     52 extern SLresult android_audioPlayer_setConfig(CAudioPlayer *pAudioPlayer, const SLchar *configKey,
     53         const void *pConfigValue, SLuint32 valueSize);
     54 
     55 /*
     56  * if pConfigValue is NULL, pValueSize contains the size required for the given key
     57  *
     58  * Return
     59  *     SL_RESULT_SUCCESS
     60  *     SL_RESULT_PARAMETER_INVALID
     61  *     SL_RESULT_INTERNAL_ERROR
     62  *     SL_RESULT_PRECONDITIONS_VIOLATED
     63  */
     64 extern SLresult android_audioPlayer_getConfig(CAudioPlayer *pAudioPlayer, const SLchar *configKey,
     65         SLuint32* pValueSize, void *pConfigValue);
     66 
     67 extern SLresult android_audioPlayer_preDestroy(CAudioPlayer *pAudioPlayer);
     68 
     69 extern SLresult android_audioPlayer_destroy(CAudioPlayer *pAudioPlayer);
     70 
     71 /**************************************************************************************************
     72  * Configuration
     73  ****************************/
     74 extern SLresult android_audioPlayer_setPlaybackRateAndConstraints(CAudioPlayer *pAudioPlayer,
     75         SLpermille rate, SLuint32 constraints);
     76 
     77 extern SLresult android_audioPlayer_getDuration(IPlay *pPlayItf, SLmillisecond *pDurMsec);
     78 
     79 extern void android_audioPlayer_volumeUpdate(CAudioPlayer *pAudioPlayer);
     80 
     81 extern SLresult android_audioPlayer_setBufferingUpdateThresholdPerMille(CAudioPlayer *pAudioPlayer,
     82         SLpermille threshold);
     83 
     84 /**************************************************************************************************
     85  * Metadata Extraction
     86  ****************************/
     87 /*
     88  * For all metadata extraction functions:
     89  * Precondition:
     90  *     no lock held
     91  *     pAudioPlayer != NULL
     92  *     input pointers != NULL (pItemCount, pKeySize, pKey, pValueSize, pValue)
     93  * Return:
     94  *     SL_RESULT_SUCCESS
     95  *     SL_RESULT_PARAMETER_INVALID
     96  */
     97 extern SLresult android_audioPlayer_metadata_getItemCount(CAudioPlayer *pAudioPlayer,
     98         SLuint32 *pItemCount);
     99 
    100 extern SLresult android_audioPlayer_metadata_getKeySize(CAudioPlayer *pAudioPlayer,
    101         SLuint32 index, SLuint32 *pKeySize);
    102 
    103 extern SLresult android_audioPlayer_metadata_getKey(CAudioPlayer *pAudioPlayer,
    104         SLuint32 index, SLuint32 size, SLMetadataInfo *pKey);
    105 
    106 extern SLresult android_audioPlayer_metadata_getValueSize(CAudioPlayer *pAudioPlayer,
    107         SLuint32 index, SLuint32 *pValueSize);
    108 
    109 extern SLresult android_audioPlayer_metadata_getValue(CAudioPlayer *pAudioPlayer,
    110         SLuint32 index, SLuint32 size, SLMetadataInfo *pValue);
    111 
    112 /**************************************************************************************************
    113  * Playback control and events
    114  ****************************/
    115 extern void android_audioPlayer_setPlayState(CAudioPlayer *pAudioPlayer);
    116 
    117 extern void android_audioPlayer_usePlayEventMask(CAudioPlayer *pAudioPlayer);
    118 
    119 extern SLresult android_audioPlayer_seek(CAudioPlayer *pAudioPlayer, SLmillisecond posMsec);
    120 
    121 extern SLresult android_audioPlayer_loop(CAudioPlayer *pAudioPlayer, SLboolean loopEnable);
    122 
    123 extern void android_audioPlayer_getPosition(IPlay *pPlayItf, SLmillisecond *pPosMsec);
    124 
    125 /**************************************************************************************************
    126  * Buffer Queue events
    127  ****************************/
    128 extern void android_audioPlayer_bufferQueue_onRefilled_l(CAudioPlayer *pAudioPlayer);
    129 
    130 extern SLresult android_audioPlayer_bufferQueue_onClear(CAudioPlayer *pAudioPlayer);
    131 
    132 /**************************************************************************************************
    133  * Android Buffer Queue
    134  ****************************/
    135 /* must be called with a lock on pAudioPlayer->mThis */
    136 extern void android_audioPlayer_androidBufferQueue_clear_l(CAudioPlayer *pAudioPlayer);
    137 /* must be called with a lock on pAudioPlayer->mThis */
    138 extern void android_audioPlayer_androidBufferQueue_onRefilled_l(CAudioPlayer *pAudioPlayer);
    139