123b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten/* 223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * Copyright (C) 2010 The Android Open Source Project 323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * 423b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * you may not use this file except in compliance with the License. 623b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * You may obtain a copy of the License at 723b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * 823b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * 1023b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * Unless required by applicable law or agreed to in writing, software 1123b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 1223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * See the License for the specific language governing permissions and 1423b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten * limitations under the License. 1523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten */ 1623b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 1723b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten/* AudioEncoderCapabilities implementation */ 1823b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 1923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten#include "sles_allinclusive.h" 2023b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 21f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 22437f9ab9914ea61112aa496a047162a0d22194cdGlenn Kastenstatic SLresult IAudioEncoderCapabilities_GetAudioEncoders(SLAudioEncoderCapabilitiesItf self, 23437f9ab9914ea61112aa496a047162a0d22194cdGlenn Kasten SLuint32 *pNumEncoders, SLuint32 *pEncoderIds) 2423b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten{ 25f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten SL_ENTER_INTERFACE 26f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 27f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten if (NULL == pNumEncoders) { 28f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten result = SL_RESULT_PARAMETER_INVALID; 2923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten } else { 30f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten if (NULL == pEncoderIds) { 31f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten *pNumEncoders = MAX_ENCODERS; 32f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten } else { 33f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten SLuint32 numEncoders = *pNumEncoders; 34f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten if (MAX_ENCODERS <= numEncoders) 35f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten *pNumEncoders = numEncoders = MAX_ENCODERS; 36f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten memcpy(pEncoderIds, Encoder_IDs, numEncoders * sizeof(SLuint32)); 37f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten } 38f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten result = SL_RESULT_SUCCESS; 3923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten } 40f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 41f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten SL_LEAVE_INTERFACE 4223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten} 4323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 44f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 4523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kastenstatic SLresult IAudioEncoderCapabilities_GetAudioEncoderCapabilities( 4623b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten SLAudioEncoderCapabilitiesItf self, SLuint32 encoderId, SLuint32 *pIndex, 4723b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten SLAudioCodecDescriptor *pDescriptor) 4823b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten{ 49f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten SL_ENTER_INTERFACE 50f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 51f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten result = GetCodecCapabilities(encoderId, pIndex, pDescriptor, 5223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten EncoderDescriptors); 53f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 54f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten SL_LEAVE_INTERFACE 5523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten} 5623b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 57f156301680273e71e56e898f98798f5b5b2431f6Glenn Kasten 5823b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kastenstatic const struct SLAudioEncoderCapabilitiesItf_ IAudioEncoderCapabilities_Itf = { 5923b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten IAudioEncoderCapabilities_GetAudioEncoders, 6023b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten IAudioEncoderCapabilities_GetAudioEncoderCapabilities 6123b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten}; 6223b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten 6323b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kastenvoid IAudioEncoderCapabilities_init(void *self) 6423b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten{ 6523b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten IAudioEncoderCapabilities *this = (IAudioEncoderCapabilities *) self; 6623b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten this->mItf = &IAudioEncoderCapabilities_Itf; 6723b3f68cab75e480ac93d656a6e4f60b979de6d2Glenn Kasten} 68