android_defs.h revision 13837cf3f7be0eb8b1a9552bd99a89f98c987720
1f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi/*
2f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project
3f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi *
4f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License");
5f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * you may not use this file except in compliance with the License.
6f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * You may obtain a copy of the License at
7f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi *
8f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi *      http://www.apache.org/licenses/LICENSE-2.0
9f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi *
10f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Unless required by applicable law or agreed to in writing, software
11f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS,
12f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * See the License for the specific language governing permissions and
14f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * limitations under the License.
15f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi */
16f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
17f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
18f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi/**
19f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Used to define the mapping from an OpenSL ES audio player to an Android
20f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * media framework object
21f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi */
22f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivienum AndroidObject_type {
23f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    INVALID_TYPE     =-1,
24b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    A_PLR_URIFD      = 0, // audio player, compressed data, URI or FD data source
25f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    A_PLR_PCM_BQ     = 1, // audio player, PCM, buffer queue data source
26b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    A_PLR_TS_ABQ     = 2, // audio player, transport stream, Android simple buffer queue data source
27b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    A_PLR_URIFD_ASQ  = 3, // audio player, URI or FD data source (as in android::MediaPlayer),
28b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi                          //    decoded to a PCM Android simple buffer queue data sink
29b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    AV_PLR_TS_ABQ    = 4, // audio video player, transport stream, Android buffer queue data source
30b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    AV_PLR_URIFD     = 5, // audio video player, URI or FD data source (as in android::MediaPlayer)
31b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi    A_RCR_MIC_ASQ    = 6, // audio recorder, device data source,
32b2aeb0f1009555181dabb944fe05901cb6e6f632Jean-Michel Trivi                          //    streamed into a PCM Android simple buffer queue data sink
33f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    NUM_AUDIOPLAYER_MAP_TYPES
34f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi};
35f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
36f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
37f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi/**
38f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Used to define the states of the OpenSL ES / OpenMAX AL object initialization and preparation
39f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * with regards to the Android-side of the data
40f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi */
41f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivienum AndroidObject_state {
42f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    ANDROID_UNINITIALIZED = -1,
43f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    ANDROID_PREPARING,
44f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    ANDROID_READY,
45f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    NUM_ANDROID_STATES
46f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi};
47f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
48f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
49f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi#define ANDROID_DEFAULT_OUTPUT_STREAM_TYPE android::AudioSystem::MUSIC
50f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
51581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYER_SUCCESS 1
52581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi
5397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi#define PLAYER_FD_FIND_FILE_SIZE ((int64_t)0xFFFFFFFFFFFFFFFFll)
5497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
55f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
5613837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi/**
57f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi * Structure to maintain the set of audio levels about a player
58f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi */
59f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivitypedef struct AndroidAudioLevels_struct {
60f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi/** send level to aux effect, there's a single aux bus, so there's a single level */
61f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    SLmillibel mAuxSendLevel;
62f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    /**
63f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     * Amplification (can be attenuation) factor derived for the VolumeLevel
64f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     */
65f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    float mAmplFromVolLevel;
66f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    /**
67f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     * Left/right amplification (can be attenuations) factors derived for the StereoPosition
68f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     */
69f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    float mAmplFromStereoPos[STEREO_CHANNELS];
70f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    /**
71f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     * Attenuation factor derived from direct level
72f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi     */
73f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi    float mAmplFromDirectLevel;
74f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi} AndroidAudioLevels;
75f271eea20f9fff6c101213b34652399f457bcd50Jean-Michel Trivi
76581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi
7713837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi/**
7813837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi * Event notification callback from Android to SL ES framework
7913837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi */
8013837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivitypedef void (*notif_cbf_t)(int event, int data1, void* notifUser);
8113837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi
8213837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi/**
8313837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi * Audio data push callback from Android objects to SL ES framework
8413837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi */
8513837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivitypedef size_t (*data_push_cbf_t)(const uint8_t *data, size_t size, void* user);
86581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi
87581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi
88581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi/**
8913837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi * Events sent to mNotifyClient during prepare, prefetch, and playback
9013837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi * used in APlayer::notify() and AMessage::findxxx()
91581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi */
92581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYEREVENT_PREPARED                "prep"
93581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYEREVENT_PREFETCHSTATUSCHANGE    "prsc"
94581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYEREVENT_PREFETCHFILLLEVELUPDATE "pflu"
95581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYEREVENT_ENDOFSTREAM             "eos"
96581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi#define PLAYEREVENT_NEW_AUDIOTRACK          "nwat"
9797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
9897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
9913837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi/**
10013837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi * Command parameters for AHandler commands
10113837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi */
10213837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi#define WHATPARAM_SEEK_SEEKTIME_MS "seekTimeMs"
10313837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi#define WHATPARAM_LOOP_LOOPING     "looping"
10413837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi
10597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivinamespace android {
10697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
10797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivienum {
10897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    kDataLocatorNone = 'none',
10997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    kDataLocatorUri  = 'uri',
11097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    kDataLocatorFd   = 'fd',
11197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    };
11297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
11397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivistruct FdInfo {
11497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    int fd;
11597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    int64_t offset;
11697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    int64_t length;
11797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi};
11897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
11913837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi// TODO currently used by SfPlayer, to replace by DataLocator2
12097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Triviunion DataLocator {
12197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    char* uri;
12297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    FdInfo fdi;
12397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi};
12497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
12513837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Triviunion DataLocator2 {
12613837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi    const char* uriRef;
12713837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi    FdInfo fdi;
12813837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi};
12913837cf3f7be0eb8b1a9552bd99a89f98c987720Jean-Michel Trivi
13097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} // namespace android
131