17b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten/*
27b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * Copyright (C) 2011 The Android Open Source Project
37b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten *
47b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
57b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * you may not use this file except in compliance with the License.
67b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * You may obtain a copy of the License at
77b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten *
87b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
97b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten *
107b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * Unless required by applicable law or agreed to in writing, software
117b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
127b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * See the License for the specific language governing permissions and
147b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * limitations under the License.
157b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten */
167b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
17c6853892c94800e72c0bd676d5d2136d48cea76eGlenn Kasten#include <SLES/OpenSLES.h>
18c6853892c94800e72c0bd676d5d2136d48cea76eGlenn Kasten#include <OMXAL/OpenMAXAL.h>
197b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten#include "attr.h"
207b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten#include "handlers.h"
217b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
227da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#define NULL 0
237da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten
247b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten/* The entries in this table are sorted first by object ID, and second
257b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * by attribute mask. The holes in the table are deliberate to permit
267b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten * direct lookup. Don't cross streams!
277b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten */
287b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kastenconst AttributeHandler handlerTable[1 + XA_OBJECTID_CAMERADEVICE +
297b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        (SL_OBJECTID_METADATAEXTRACTOR - SL_OBJECTID_ENGINE) + 1][ATTR_INDEX_MAX] = {
307b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
317b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten// XA IDs map directly to table indices
327b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
337b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten    [XA_OBJECTID_MEDIAPLAYER] = {
347b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_GAIN]        = handler_MediaPlayer_gain,
357b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_TRANSPORT]   = handler_MediaPlayer_transport,
367b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_POSITION]    = handler_MediaPlayer_position,
37f4647bf85968ab30eb07f9a80b99177d91068f94Glenn Kasten        [ATTR_INDEX_ABQ_ENQUEUE] = handler_MediaPlayer_abq_enqueue,
38f4647bf85968ab30eb07f9a80b99177d91068f94Glenn Kasten        [ATTR_INDEX_PLAY_STATE]  = handler_MediaPlayer_play_state},
397b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
407b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten// SL IDs need a little arithmetic to make them contiguous with XA IDs
417b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten#define _(id) ((id) - SL_OBJECTID_ENGINE + XA_OBJECTID_CAMERADEVICE + 1)
427b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
437b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten    [_(SL_OBJECTID_AUDIOPLAYER)] = {
447da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
457b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_GAIN]        = handler_AudioPlayer_gain,
467da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
477b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_TRANSPORT]   = handler_AudioPlayer_transport,
487b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_POSITION]    = handler_AudioPlayer_position,
497b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_BQ_ENQUEUE]  = handler_AudioPlayer_bq_enqueue,
50f4647bf85968ab30eb07f9a80b99177d91068f94Glenn Kasten        [ATTR_INDEX_ABQ_ENQUEUE] = handler_AudioPlayer_abq_enqueue,
51f4647bf85968ab30eb07f9a80b99177d91068f94Glenn Kasten        [ATTR_INDEX_PLAY_STATE]  = handler_AudioPlayer_play_state},
527b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
537b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten    [_(SL_OBJECTID_AUDIORECORDER)] = {
547b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_TRANSPORT]   = handler_AudioRecorder_transport},
557b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
567b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten    [_(SL_OBJECTID_MIDIPLAYER)] = {
577b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_GAIN]        = handler_MidiPlayer_gain,
587b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_POSITION]    = handler_MidiPlayer_position},
597b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
607b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten    [_(SL_OBJECTID_OUTPUTMIX)] = {
617b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten        [ATTR_INDEX_GAIN]        = handler_OutputMix_gain},
627b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten
637b726bdcd996f1cab3a584c04ce1afc07bc8fbe7Glenn Kasten};
64