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