1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include <cutils/properties.h> 18#include "FastMixerState.h" 19 20namespace android { 21 22FastTrack::FastTrack() : 23 mBufferProvider(NULL), mVolumeProvider(NULL), 24 mChannelMask(AUDIO_CHANNEL_OUT_STEREO), mFormat(AUDIO_FORMAT_INVALID), mGeneration(0) 25{ 26} 27 28FastTrack::~FastTrack() 29{ 30} 31 32FastMixerState::FastMixerState() : FastThreadState(), 33 // mFastTracks 34 mFastTracksGen(0), mTrackMask(0), mOutputSink(NULL), mOutputSinkGen(0), 35 mFrameCount(0), mTeeSink(NULL) 36{ 37 int ok = pthread_once(&sMaxFastTracksOnce, sMaxFastTracksInit); 38 if (ok != 0) { 39 ALOGE("%s pthread_once failed: %d", __func__, ok); 40 } 41} 42 43FastMixerState::~FastMixerState() 44{ 45} 46 47// static 48unsigned FastMixerState::sMaxFastTracks = kDefaultFastTracks; 49 50// static 51pthread_once_t FastMixerState::sMaxFastTracksOnce = PTHREAD_ONCE_INIT; 52 53// static 54const char *FastMixerState::commandToString(Command command) 55{ 56 const char *str = FastThreadState::commandToString(command); 57 if (str != NULL) { 58 return str; 59 } 60 switch (command) { 61 case FastMixerState::MIX: return "MIX"; 62 case FastMixerState::WRITE: return "WRITE"; 63 case FastMixerState::MIX_WRITE: return "MIX_WRITE"; 64 } 65 LOG_ALWAYS_FATAL("%s", __func__); 66} 67 68// static 69void FastMixerState::sMaxFastTracksInit() 70{ 71 char value[PROPERTY_VALUE_MAX]; 72 if (property_get("ro.audio.max_fast_tracks", value, NULL) > 0) { 73 char *endptr; 74 unsigned long ul = strtoul(value, &endptr, 0); 75 if (*endptr == '\0' && kMinFastTracks <= ul && ul <= kMaxFastTracks) { 76 sMaxFastTracks = (unsigned) ul; 77 } 78 } 79 ALOGI("sMaxFastTracks = %u", sMaxFastTracks); 80} 81 82} // namespace android 83