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