182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten/* 282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Copyright (C) 2010 The Android Open Source Project 382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * you may not use this file except in compliance with the License. 682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * You may obtain a copy of the License at 782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 1082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Unless required by applicable law or agreed to in writing, software 1182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 1282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * See the License for the specific language governing permissions and 1482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * limitations under the License. 1582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten */ 1682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 1782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten#define DEVICE_ID_HEADSET 1 1882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten#define DEVICE_ID_HANDSFREE 2 1982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 2082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenextern const struct AudioInput_id_descriptor { 2182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten SLuint32 id; 2282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten const SLAudioInputDescriptor *descriptor; 2382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} AudioInput_id_descriptors[]; 2482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 2582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenextern const struct AudioOutput_id_descriptor { 2682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten SLuint32 id; 2782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten const SLAudioOutputDescriptor *descriptor; 2882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} AudioOutput_id_descriptors[]; 2982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 3082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenextern const struct LED_id_descriptor { 3182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten SLuint32 id; 3282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten const SLLEDDescriptor *descriptor; 3382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} LED_id_descriptors[]; 3482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 3582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenextern const struct Vibra_id_descriptor { 3682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten SLuint32 id; 3782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten const SLVibraDescriptor *descriptor; 3882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} Vibra_id_descriptors[]; 3923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 4023b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten// These are not in 1.0.1 header file 4123b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten#define SL_AUDIOCODEC_NULL 0 4223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten#define SL_AUDIOCODEC_VORBIS 9 4323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 4410ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten/** \brief Associates a codec ID with a corresponding codec descriptor */ 4523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 4610ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kastentypedef struct { 4710ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten SLuint32 mCodecID; ///< The codec ID 4810ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten const SLAudioCodecDescriptor *mDescriptor; ///< The corresponding descriptor 4910ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten} CodecDescriptor; 5010ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten 5110ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten#define MAX_DECODERS 9 ///< (sizeof(Decoder_IDs) / sizeof(Decoder_IDs[0])) 5210ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten#define MAX_ENCODERS 9 ///< (sizeof(Encoder_IDs) / sizeof(Encoder_IDs[0])) 5323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 54b6ce251c4b009003822ddf0323c11b4a5e74eeb2Jean-Michel Triviextern const XAuint32 *VideoDecoderIds; 55b6ce251c4b009003822ddf0323c11b4a5e74eeb2Jean-Michel Triviextern const XAuint32 kMaxVideoDecoders; 56b6ce251c4b009003822ddf0323c11b4a5e74eeb2Jean-Michel Trivi 5723b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten// For now, but encoders might be different than decoders later 5823b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kastenextern const SLuint32 *Decoder_IDs, *Encoder_IDs; 5923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 6010ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kastenextern const CodecDescriptor DecoderDescriptors[], EncoderDescriptors[]; 6123b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 6223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kastenextern SLresult GetCodecCapabilities(SLuint32 decoderId, SLuint32 *pIndex, 6323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten SLAudioCodecDescriptor *pDescriptor, 6410ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten const CodecDescriptor *codecDescriptors); 65