@ -344,7 +344,7 @@ AudioTrack::~AudioTrack()
mSharedBuffer . clear ( ) ;
IPCThreadState : : self ( ) - > flushCommands ( ) ;
ALOGV ( " %s(%d), releasing session id %d from %d on behalf of %d " ,
__func__ , m Id,
__func__ , m Port Id,
mSessionId , IPCThreadState : : self ( ) - > getCallingPid ( ) , mClientPid ) ;
AudioSystem : : releaseAudioSessionId ( mSessionId , mClientPid ) ;
}
@ -377,7 +377,7 @@ status_t AudioTrack::set(
pid_t callingPid ;
pid_t myPid ;
// Note m Id is not valid until the track is created, so omit mId in ALOG for set.
// Note m Port Id is not valid until the track is created, so omit mPort Id in ALOG for set.
ALOGV ( " %s(): streamType %d, sampleRate %u, format %#x, channelMask %#x, frameCount %zu, "
" flags #%x, notificationFrames %d, sessionId %d, transferType %d, uid %d, pid %d " ,
__func__ ,
@ -658,7 +658,7 @@ exit:
status_t AudioTrack : : start ( )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Id, stateToString ( mState ) ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Port Id, stateToString ( mState ) ) ;
if ( mState = = STATE_ACTIVE ) {
return INVALID_OPERATION ;
@ -699,7 +699,7 @@ status_t AudioTrack::start()
// It is possible since flush and stop are asynchronous that the server
// is still active at this point.
ALOGV ( " %s(%d): server read:%lld cumulative flushed:%lld client written:%lld " ,
__func__ , m Id,
__func__ , m Port Id,
( long long ) ( mFramesWrittenServerOffset
+ mStartEts . mPosition [ ExtendedTimestamp : : LOCATION_SERVER ] ) ,
( long long ) mStartEts . mFlushed ,
@ -760,7 +760,7 @@ status_t AudioTrack::start()
// Start our local VolumeHandler for restoration purposes.
mVolumeHandler - > setStarted ( ) ;
} else {
ALOGE ( " %s(%d): status %d " , __func__ , m Id, status ) ;
ALOGE ( " %s(%d): status %d " , __func__ , m Port Id, status ) ;
mState = previousState ;
if ( t ! = 0 ) {
if ( previousState ! = STATE_STOPPING ) {
@ -778,7 +778,7 @@ status_t AudioTrack::start()
void AudioTrack : : stop ( )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Id, stateToString ( mState ) ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Port Id, stateToString ( mState ) ) ;
if ( mState ! = STATE_ACTIVE & & mState ! = STATE_PAUSED ) {
return ;
@ -789,7 +789,7 @@ void AudioTrack::stop()
} else {
mState = STATE_STOPPED ;
ALOGD_IF ( mSharedBuffer = = nullptr ,
" %s(%d): called with %u frames delivered " , __func__ , m Id, mReleased . value ( ) ) ;
" %s(%d): called with %u frames delivered " , __func__ , m Port Id, mReleased . value ( ) ) ;
mReleased = 0 ;
}
@ -830,7 +830,7 @@ bool AudioTrack::stopped() const
void AudioTrack : : flush ( )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Id, stateToString ( mState ) ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Port Id, stateToString ( mState ) ) ;
if ( mSharedBuffer ! = 0 ) {
return ;
@ -863,7 +863,7 @@ void AudioTrack::flush_l()
void AudioTrack : : pause ( )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Id, stateToString ( mState ) ) ;
ALOGV ( " %s(%d): prior state:%s " , __func__ , m Port Id, stateToString ( mState ) ) ;
if ( mState = = STATE_ACTIVE ) {
mState = STATE_PAUSED ;
@ -891,7 +891,7 @@ void AudioTrack::pause()
uint32_t halFrames ;
AudioSystem : : getRenderPosition ( mOutput , & halFrames , & mPausedPosition ) ;
ALOGV ( " %s(%d): for offload, cache current position %u " ,
__func__ , m Id, mPausedPosition ) ;
__func__ , m Port Id, mPausedPosition ) ;
}
}
}
@ -945,7 +945,7 @@ void AudioTrack::getAuxEffectSendLevel(float* level) const
status_t AudioTrack : : setSampleRate ( uint32_t rate )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): prior state:%s rate:%u " , __func__ , m Id, stateToString ( mState ) , rate ) ;
ALOGV ( " %s(%d): prior state:%s rate:%u " , __func__ , m Port Id, stateToString ( mState ) , rate ) ;
if ( rate = = mSampleRate ) {
return NO_ERROR ;
@ -1013,7 +1013,7 @@ status_t AudioTrack::setPlaybackRate(const AudioPlaybackRate &playbackRate)
}
ALOGV ( " %s(%d): mSampleRate:%u mSpeed:%f mPitch:%f " ,
__func__ , m Id, mSampleRate , playbackRate . mSpeed , playbackRate . mPitch ) ;
__func__ , m Port Id, mSampleRate , playbackRate . mSpeed , playbackRate . mPitch ) ;
// pitch is emulated by adjusting speed and sampleRate
const uint32_t effectiveRate = adjustSampleRate ( mSampleRate , playbackRate . mPitch ) ;
const float effectiveSpeed = adjustSpeed ( playbackRate . mSpeed , playbackRate . mPitch ) ;
@ -1023,17 +1023,17 @@ status_t AudioTrack::setPlaybackRate(const AudioPlaybackRate &playbackRate)
playbackRateTemp . mPitch = effectivePitch ;
ALOGV ( " %s(%d) (effective) mSampleRate:%u mSpeed:%f mPitch:%f " ,
__func__ , m Id, effectiveRate , effectiveSpeed , effectivePitch ) ;
__func__ , m Port Id, effectiveRate , effectiveSpeed , effectivePitch ) ;
if ( ! isAudioPlaybackRateValid ( playbackRateTemp ) ) {
ALOGW ( " %s(%d) (%f, %f) failed (effective rate out of bounds) " ,
__func__ , m Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
__func__ , m Port Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
return BAD_VALUE ;
}
// Check if the buffer size is compatible.
if ( ! isSampleRateSpeedAllowed_l ( effectiveRate , effectiveSpeed ) ) {
ALOGW ( " %s(%d) (%f, %f) failed (buffer size) " ,
__func__ , m Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
__func__ , m Port Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
return BAD_VALUE ;
}
@ -1041,13 +1041,13 @@ status_t AudioTrack::setPlaybackRate(const AudioPlaybackRate &playbackRate)
if ( ( uint64_t ) effectiveRate > ( uint64_t ) mSampleRate *
( uint64_t ) AUDIO_RESAMPLER_DOWN_RATIO_MAX ) {
ALOGW ( " %s(%d) (%f, %f) failed. Resample rate exceeds max accepted value " ,
__func__ , m Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
__func__ , m Port Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
return BAD_VALUE ;
}
if ( ( uint64_t ) effectiveRate * ( uint64_t ) AUDIO_RESAMPLER_UP_RATIO_MAX < ( uint64_t ) mSampleRate ) {
ALOGW ( " %s(%d) (%f, %f) failed. Resample rate below min accepted value " ,
__func__ , m Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
__func__ , m Port Id, playbackRate . mSpeed , playbackRate . mPitch ) ;
return BAD_VALUE ;
}
mPlaybackRate = playbackRate ;
@ -1249,7 +1249,7 @@ status_t AudioTrack::getPosition(uint32_t *position)
if ( isOffloaded_l ( ) & & ( ( mState = = STATE_PAUSED ) | | ( mState = = STATE_PAUSED_STOPPING ) ) ) {
ALOGV ( " %s(%d): called in paused state, return cached position %u " ,
__func__ , m Id, mPausedPosition ) ;
__func__ , m Port Id, mPausedPosition ) ;
* position = mPausedPosition ;
return NO_ERROR ;
}
@ -1395,7 +1395,7 @@ void AudioTrack::updateLatency_l()
{
status_t status = AudioSystem : : getLatency ( mOutput , & mAfLatency ) ;
if ( status ! = NO_ERROR ) {
ALOGW ( " %s(%d): getLatency(%d) failed status %d " , __func__ , m Id, mOutput , status ) ;
ALOGW ( " %s(%d): getLatency(%d) failed status %d " , __func__ , m Port Id, mOutput , status ) ;
} else {
// FIXME don't believe this lie
mLatency = mAfLatency + ( 1000LL * mFrameCount ) / mSampleRate ;
@ -1425,7 +1425,7 @@ status_t AudioTrack::createTrack_l()
const sp < IAudioFlinger > & audioFlinger = AudioSystem : : get_audio_flinger ( ) ;
if ( audioFlinger = = 0 ) {
ALOGE ( " %s(%d): Could not get audioflinger " ,
__func__ , m Id) ;
__func__ , m Port Id) ;
status = NO_INIT ;
goto exit ;
}
@ -1451,7 +1451,7 @@ status_t AudioTrack::createTrack_l()
if ( ! fastAllowed ) {
ALOGW ( " %s(%d): AUDIO_OUTPUT_FLAG_FAST denied by client, "
" not shared buffer and transfer = %s " ,
__func__ , m Id,
__func__ , m Port Id,
convertTransferToText ( mTransfer ) ) ;
mFlags = ( audio_output_flags_t ) ( mFlags & ~ AUDIO_OUTPUT_FLAG_FAST ) ;
}
@ -1501,7 +1501,7 @@ status_t AudioTrack::createTrack_l()
if ( status ! = NO_ERROR | | output . outputId = = AUDIO_IO_HANDLE_NONE ) {
ALOGE ( " %s(%d): AudioFlinger could not create track, status: %d output %d " ,
__func__ , m Id, status , output . outputId ) ;
__func__ , m Port Id, status , output . outputId ) ;
if ( status = = NO_ERROR ) {
status = NO_INIT ;
}
@ -1522,7 +1522,7 @@ status_t AudioTrack::createTrack_l()
mAfFrameCount = output . afFrameCount ;
mAfSampleRate = output . afSampleRate ;
mAfLatency = output . afLatencyMs ;
m Id = output . track Id;
m PortId = output . port Id;
mLatency = mAfLatency + ( 1000LL * mFrameCount ) / mSampleRate ;
@ -1532,13 +1532,13 @@ status_t AudioTrack::createTrack_l()
// FIXME compare to AudioRecord
sp < IMemory > iMem = track - > getCblk ( ) ;
if ( iMem = = 0 ) {
ALOGE ( " %s(%d): Could not get control block " , __func__ , m Id) ;
ALOGE ( " %s(%d): Could not get control block " , __func__ , m Port Id) ;
status = NO_INIT ;
goto exit ;
}
void * iMemPointer = iMem - > pointer ( ) ;
if ( iMemPointer = = NULL ) {
ALOGE ( " %s(%d): Could not get control block pointer " , __func__ , m Id) ;
ALOGE ( " %s(%d): Could not get control block pointer " , __func__ , m Port Id) ;
status = NO_INIT ;
goto exit ;
}
@ -1558,13 +1558,13 @@ status_t AudioTrack::createTrack_l()
if ( mFlags & AUDIO_OUTPUT_FLAG_FAST ) {
if ( output . flags & AUDIO_OUTPUT_FLAG_FAST ) {
ALOGI ( " %s(%d): AUDIO_OUTPUT_FLAG_FAST successful; frameCount %zu -> %zu " ,
__func__ , m Id, mReqFrameCount , mFrameCount ) ;
__func__ , m Port Id, mReqFrameCount , mFrameCount ) ;
if ( ! mThreadCanCallJava ) {
mAwaitBoost = true ;
}
} else {
ALOGW ( " %s(%d): AUDIO_OUTPUT_FLAG_FAST denied by server; frameCount %zu -> %zu " ,
__func__ , m Id, mReqFrameCount , mFrameCount ) ;
__func__ , m Port Id, mReqFrameCount , mFrameCount ) ;
}
}
mFlags = output . flags ;
@ -1592,7 +1592,7 @@ status_t AudioTrack::createTrack_l()
} else {
buffers = mSharedBuffer - > pointer ( ) ;
if ( buffers = = NULL ) {
ALOGE ( " %s(%d): Could not get buffer pointer " , __func__ , m Id) ;
ALOGE ( " %s(%d): Could not get buffer pointer " , __func__ , m Port Id) ;
status = NO_INIT ;
goto exit ;
}
@ -1681,7 +1681,7 @@ status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t
timeout . tv_nsec = ( long ) ( ms % 1000 ) * 1000000 ;
requested = & timeout ;
} else {
ALOGE ( " %s(%d): invalid waitCount %d " , __func__ , m Id, waitCount ) ;
ALOGE ( " %s(%d): invalid waitCount %d " , __func__ , m Port Id, waitCount ) ;
requested = NULL ;
}
return obtainBuffer ( audioBuffer , requested , NULL /*elapsed*/ , nonContig ) ;
@ -1792,7 +1792,7 @@ void AudioTrack::restartIfDisabled()
int32_t flags = android_atomic_and ( ~ CBLK_DISABLED , & mCblk - > mFlags ) ;
if ( ( mState = = STATE_ACTIVE ) & & ( flags & CBLK_DISABLED ) ) {
ALOGW ( " %s(%d): releaseBuffer() track %p disabled due to previous underrun, restarting " ,
__func__ , m Id, this ) ;
__func__ , m Port Id, this ) ;
// FIXME ignoring status
mAudioTrack - > start ( ) ;
}
@ -1820,7 +1820,7 @@ ssize_t AudioTrack::write(const void* buffer, size_t userSize, bool blocking)
// Sanity-check: user is most-likely passing an error code, and it would
// make the return value ambiguous (actualSize vs error).
ALOGE ( " %s(%d): AudioTrack::write(buffer=%p, size=%zu (%zd) " ,
__func__ , m Id, buffer , userSize , userSize ) ;
__func__ , m Port Id, buffer , userSize , userSize ) ;
return BAD_VALUE ;
}
@ -1893,7 +1893,7 @@ nsecs_t AudioTrack::processAudioBuffer()
} while ( tryCounter - - > 0 ) ;
if ( tryCounter < 0 ) {
ALOGE ( " %s(%d): did not receive expected priority boost on time " ,
__func__ , m Id) ;
__func__ , m Port Id) ;
}
// Run again immediately
return 0 ;
@ -2135,7 +2135,7 @@ nsecs_t AudioTrack::processAudioBuffer()
timeout . tv_sec = ns / 1000000000LL ;
timeout . tv_nsec = ns % 1000000000LL ;
ALOGV ( " %s(%d): timeout %ld.%03d " ,
__func__ , m Id, timeout . tv_sec , ( int ) timeout . tv_nsec / 1000000 ) ;
__func__ , m Port Id, timeout . tv_sec , ( int ) timeout . tv_nsec / 1000000 ) ;
requested = & timeout ;
}
@ -2148,11 +2148,11 @@ nsecs_t AudioTrack::processAudioBuffer()
status_t err = obtainBuffer ( & audioBuffer , requested , NULL , & nonContig ) ;
LOG_ALWAYS_FATAL_IF ( ( err ! = NO_ERROR ) ! = ( audioBuffer . frameCount = = 0 ) ,
" %s(%d): obtainBuffer() err=%d frameCount=%zu " ,
__func__ , m Id, err , audioBuffer . frameCount ) ;
__func__ , m Port Id, err , audioBuffer . frameCount ) ;
requested = & ClientProxy : : kNonBlocking ;
size_t avail = audioBuffer . frameCount + nonContig ;
ALOGV ( " %s(%d): obtainBuffer(%u) returned %zu = %zu + %zu err %d " ,
__func__ , m Id, mRemainingFrames , avail , audioBuffer . frameCount , nonContig , err ) ;
__func__ , m Port Id, mRemainingFrames , avail , audioBuffer . frameCount , nonContig , err ) ;
if ( err ! = NO_ERROR ) {
if ( err = = TIMED_OUT | | err = = WOULD_BLOCK | | err = = - EINTR | |
( isOffloaded ( ) & & ( err = = DEAD_OBJECT ) ) ) {
@ -2160,7 +2160,7 @@ nsecs_t AudioTrack::processAudioBuffer()
return 1000000 ;
}
ALOGE ( " %s(%d): Error %d obtaining an audio buffer, giving up. " ,
__func__ , m Id, err ) ;
__func__ , m Port Id, err ) ;
return NS_NEVER ;
}
@ -2192,7 +2192,7 @@ nsecs_t AudioTrack::processAudioBuffer()
// Sanity check on returned size
if ( ssize_t ( writtenSize ) < 0 | | writtenSize > reqSize ) {
ALOGE ( " %s(%d): EVENT_MORE_DATA requested %zu bytes but callback returned %zd bytes " ,
__func__ , m Id, reqSize , ssize_t ( writtenSize ) ) ;
__func__ , m Port Id, reqSize , ssize_t ( writtenSize ) ) ;
return NS_NEVER ;
}
@ -2296,7 +2296,7 @@ nsecs_t AudioTrack::processAudioBuffer()
status_t AudioTrack : : restoreTrack_l ( const char * from )
{
ALOGW ( " %s(%d): dead IAudioTrack, %s, creating a new one from %s() " ,
__func__ , m Id, isOffloadedOrDirect_l ( ) ? " Offloaded or Direct " : " PCM " , from ) ;
__func__ , m Port Id, isOffloadedOrDirect_l ( ) ? " Offloaded or Direct " : " PCM " , from ) ;
+ + mSequence ;
// refresh the audio configuration cache in this process to make sure we get new
@ -2354,7 +2354,7 @@ retry:
} else {
mStaticProxy - > setBufferPosition ( bufferPosition ) ;
if ( bufferPosition = = mFrameCount ) {
ALOGD ( " %s(%d): restoring track at end of static buffer " , __func__ , m Id) ;
ALOGD ( " %s(%d): restoring track at end of static buffer " , __func__ , m Port Id) ;
}
}
}
@ -2384,7 +2384,7 @@ retry:
mFramesWrittenAtRestore = mFramesWrittenServerOffset ;
}
if ( result ! = NO_ERROR ) {
ALOGW ( " %s(%d): failed status %d, retries %d " , __func__ , m Id, result , retries ) ;
ALOGW ( " %s(%d): failed status %d, retries %d " , __func__ , m Port Id, result , retries ) ;
if ( - - retries > 0 ) {
// leave time for an eventual race condition to clear before retrying
usleep ( 500000 ) ;
@ -2414,7 +2414,7 @@ Modulo<uint32_t> AudioTrack::updateAndGetPosition_l()
// in which case the use of uint32_t for these counters has bigger issues.
ALOGE_IF ( delta < 0 ,
" %s(%d): detected illegal retrograde motion by the server: mServer advanced by %d " ,
__func__ , m Id, delta ) ;
__func__ , m Port Id, delta ) ;
mServer = newServer ;
if ( delta > 0 ) { // avoid retrograde
mPosition + = delta ;
@ -2437,7 +2437,7 @@ bool AudioTrack::isSampleRateSpeedAllowed_l(uint32_t sampleRate, float speed)
" %s(%d): denied "
" mAfLatency:%u mAfFrameCount:%zu mAfSampleRate:%u sampleRate:%u speed:%f "
" mFrameCount:%zu < minFrameCount:%zu " ,
__func__ , m Id,
__func__ , m Port Id,
mAfLatency , mAfFrameCount , mAfSampleRate , sampleRate , speed ,
mFrameCount , minFrameCount ) ;
return allowed ;
@ -2452,8 +2452,13 @@ status_t AudioTrack::setParameters(const String8& keyValuePairs)
status_t AudioTrack : : selectPresentation ( int presentationId , int programId )
{
AutoMutex lock ( mLock ) ;
ALOGV ( " %s(%d): PresentationId:%d ProgramId:%d " , __func__ , mId , presentationId , programId ) ;
return mAudioTrack - > selectPresentation ( presentationId , programId ) ;
AudioParameter param = AudioParameter ( ) ;
param . addInt ( String8 ( AudioParameter : : keyPresentationId ) , presentationId ) ;
param . addInt ( String8 ( AudioParameter : : keyProgramId ) , programId ) ;
ALOGV ( " %s(%d): PresentationId/ProgramId[%s] " ,
__func__ , mPortId , param . toString ( ) . string ( ) ) ;
return mAudioTrack - > setParameters ( param . toString ( ) ) ;
}
VolumeShaper : : Status AudioTrack : : applyVolumeShaper (
@ -2478,7 +2483,7 @@ VolumeShaper::Status AudioTrack::applyVolumeShaper(
} else {
// warn only if not an expected restore failure.
ALOGW_IF ( ! ( ( isOffloadedOrDirect_l ( ) | | mDoNotReconnect ) & & status = = DEAD_OBJECT ) ,
" %s(%d): applyVolumeShaper failed: %d " , __func__ , m Id, status ) ;
" %s(%d): applyVolumeShaper failed: %d " , __func__ , m Port Id, status ) ;
}
return status ;
}
@ -2520,7 +2525,7 @@ status_t AudioTrack::getTimestamp_l(ExtendedTimestamp *timestamp)
}
status_t status = mProxy - > getTimestamp ( timestamp ) ;
LOG_ALWAYS_FATAL_IF ( status ! = OK , " %s(%d): status %d not allowed from proxy getTimestamp " ,
__func__ , m Id, status ) ;
__func__ , m Port Id, status ) ;
bool found = false ;
timestamp - > mPosition [ ExtendedTimestamp : : LOCATION_CLIENT ] = mFramesWritten ;
timestamp - > mTimeNs [ ExtendedTimestamp : : LOCATION_CLIENT ] = 0 ;
@ -2564,7 +2569,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
break ; // offloaded tracks handled below
default :
LOG_ALWAYS_FATAL ( " %s(%d): Invalid mState in getTimestamp(): %d " ,
__func__ , m Id, mState ) ;
__func__ , m Port Id, mState ) ;
break ;
}
@ -2599,7 +2604,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
if ( location = = ExtendedTimestamp : : LOCATION_SERVER ) {
ALOGW_IF ( mPreviousLocation = = ExtendedTimestamp : : LOCATION_KERNEL ,
" %s(%d): location moved from kernel to server " ,
__func__ , m Id) ;
__func__ , m Port Id) ;
// check that the last kernel OK time info exists and the positions
// are valid (if they predate the current track, the positions may
// be zero or negative).
@ -2615,7 +2620,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
( ets . mPosition [ ExtendedTimestamp : : LOCATION_SERVER_LASTKERNELOK ]
- ets . mPosition [ ExtendedTimestamp : : LOCATION_KERNEL_LASTKERNELOK ] ) ;
ALOGV ( " %s(%d): frame adjustment:%lld timestamp:%s " ,
__func__ , m Id, ( long long ) frames , ets . toString ( ) . c_str ( ) ) ;
__func__ , m Port Id, ( long long ) frames , ets . toString ( ) . c_str ( ) ) ;
if ( frames > = ets . mPosition [ location ] ) {
timestamp . mPosition = 0 ;
} else {
@ -2624,7 +2629,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
} else if ( location = = ExtendedTimestamp : : LOCATION_KERNEL ) {
ALOGV_IF ( mPreviousLocation = = ExtendedTimestamp : : LOCATION_SERVER ,
" %s(%d): location moved from server to kernel " ,
__func__ , m Id) ;
__func__ , m Port Id) ;
}
// We update the timestamp time even when paused.
@ -2648,7 +2653,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
mPreviousLocation = location ;
} else {
// right after AudioTrack is started, one may not find a timestamp
ALOGV ( " %s(%d): getBestTimestamp did not find timestamp " , __func__ , m Id) ;
ALOGV ( " %s(%d): getBestTimestamp did not find timestamp " , __func__ , m Port Id) ;
}
}
if ( status = = INVALID_OPERATION ) {
@ -2659,7 +2664,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
// "zero" for NuPlayer). We don't convert for track restoration as position
// does not reset.
ALOGV ( " %s(%d): timestamp server offset:%lld restore frames:%lld " ,
__func__ , m Id,
__func__ , m Port Id,
( long long ) mFramesWrittenServerOffset , ( long long ) mFramesWrittenAtRestore ) ;
if ( mFramesWrittenServerOffset ! = mFramesWrittenAtRestore ) {
status = WOULD_BLOCK ;
@ -2667,7 +2672,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
}
}
if ( status ! = NO_ERROR ) {
ALOGV_IF ( status ! = WOULD_BLOCK , " %s(%d): getTimestamp error:%#x " , __func__ , m Id, status ) ;
ALOGV_IF ( status ! = WOULD_BLOCK , " %s(%d): getTimestamp error:%#x " , __func__ , m Port Id, status ) ;
return status ;
}
if ( isOffloadedOrDirect_l ( ) ) {
@ -2708,7 +2713,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
ALOGW_IF ( ! mTimestampStartupGlitchReported ,
" %s(%d): startup glitch detected "
" deltaTimeUs(%lld) deltaPositionUs(%lld) tsmPosition(%u) " ,
__func__ , m Id,
__func__ , m Port Id,
( long long ) deltaTimeUs , ( long long ) deltaPositionByUs ,
timestamp . mPosition ) ;
mTimestampStartupGlitchReported = true ;
@ -2778,7 +2783,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
if ( currentTimeNanos < limitNs ) {
ALOGD ( " %s(%d): correcting timestamp time for pause, "
" currentTimeNanos: %lld < limitNs: %lld < mStartNs: %lld " ,
__func__ , m Id,
__func__ , m Port Id,
( long long ) currentTimeNanos , ( long long ) limitNs , ( long long ) mStartNs ) ;
timestamp . mTime = convertNsToTimespec ( limitNs ) ;
currentTimeNanos = limitNs ;
@ -2787,7 +2792,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
// retrograde check
if ( currentTimeNanos < previousTimeNanos ) {
ALOGW ( " %s(%d): retrograde timestamp time corrected, %lld < %lld " ,
__func__ , m Id,
__func__ , m Port Id,
( long long ) currentTimeNanos , ( long long ) previousTimeNanos ) ;
timestamp . mTime = mPreviousTimestamp . mTime ;
// currentTimeNanos not used below.
@ -2801,7 +2806,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
// Only report once per position instead of spamming the log.
if ( ! mRetrogradeMotionReported ) {
ALOGW ( " %s(%d): retrograde timestamp position corrected, %d = %u - %u " ,
__func__ , m Id,
__func__ , m Port Id,
deltaPosition ,
timestamp . mPosition ,
mPreviousTimestamp . mPosition ) ;
@ -2822,7 +2827,7 @@ status_t AudioTrack::getTimestamp_l(AudioTimestamp& timestamp)
const int64_t computedSampleRate =
deltaPosition * ( long long ) NANOS_PER_SECOND / deltaTime ;
ALOGD ( " %s(%d): computedSampleRate:%u sampleRate:%u " ,
__func__ , m Id,
__func__ , m Port Id,
( unsigned ) computedSampleRate , mSampleRate ) ;
}
# endif
@ -2869,7 +2874,7 @@ status_t AudioTrack::dump(int fd, const Vector<String16>& args __unused) const
result . append ( " AudioTrack::dump \n " ) ;
result . appendFormat ( " id(%d) status(%d), state(%d), session Id(%d), flags(%#x) \n " ,
m Id, mStatus , mState , mSessionId , mFlags ) ;
m Port Id, mStatus , mState , mSessionId , mFlags ) ;
result . appendFormat ( " stream type(%d), left - right volume(%f, %f) \n " ,
( mStreamType = = AUDIO_STREAM_DEFAULT ) ?
audio_attributes_to_stream_type ( & mAttributes ) : mStreamType ,
@ -2911,18 +2916,18 @@ uint32_t AudioTrack::getUnderrunFrames() const
status_t AudioTrack : : addAudioDeviceCallback ( const sp < AudioSystem : : AudioDeviceCallback > & callback )
{
if ( callback = = 0 ) {
ALOGW ( " %s(%d): adding NULL callback! " , __func__ , m Id) ;
ALOGW ( " %s(%d): adding NULL callback! " , __func__ , m Port Id) ;
return BAD_VALUE ;
}
AutoMutex lock ( mLock ) ;
if ( mDeviceCallback . unsafe_get ( ) = = callback . get ( ) ) {
ALOGW ( " %s(%d): adding same callback! " , __func__ , m Id) ;
ALOGW ( " %s(%d): adding same callback! " , __func__ , m Port Id) ;
return INVALID_OPERATION ;
}
status_t status = NO_ERROR ;
if ( mOutput ! = AUDIO_IO_HANDLE_NONE ) {
if ( mDeviceCallback ! = 0 ) {
ALOGW ( " %s(%d): callback already present! " , __func__ , m Id) ;
ALOGW ( " %s(%d): callback already present! " , __func__ , m Port Id) ;
AudioSystem : : removeAudioDeviceCallback ( this , mOutput ) ;
}
status = AudioSystem : : addAudioDeviceCallback ( this , mOutput ) ;
@ -2935,12 +2940,12 @@ status_t AudioTrack::removeAudioDeviceCallback(
const sp < AudioSystem : : AudioDeviceCallback > & callback )
{
if ( callback = = 0 ) {
ALOGW ( " %s(%d): removing NULL callback! " , __func__ , m Id) ;
ALOGW ( " %s(%d): removing NULL callback! " , __func__ , m Port Id) ;
return BAD_VALUE ;
}
AutoMutex lock ( mLock ) ;
if ( mDeviceCallback . unsafe_get ( ) ! = callback . get ( ) ) {
ALOGW ( " %s(%d): removing different callback! " , __func__ , m Id) ;
ALOGW ( " %s(%d): removing different callback! " , __func__ , m Port Id) ;
return INVALID_OPERATION ;
}
mDeviceCallback . clear ( ) ;
@ -3046,7 +3051,7 @@ bool AudioTrack::hasStarted()
case STATE_FLUSHED :
return false ; // we're not active
default :
LOG_ALWAYS_FATAL ( " %s(%d): Invalid mState in hasStarted(): %d " , __func__ , m Id, mState ) ;
LOG_ALWAYS_FATAL ( " %s(%d): Invalid mState in hasStarted(): %d " , __func__ , m Port Id, mState ) ;
break ;
}
@ -3063,7 +3068,7 @@ bool AudioTrack::hasStarted()
wait = ( ts . mPosition = = 0 | | ts . mPosition = = mStartTs . mPosition ) ;
}
ALOGV ( " %s(%d): hasStarted wait:%d ts:%u start position:%lld " ,
__func__ , m Id,
__func__ , m Port Id,
( int ) wait ,
ts . mPosition ,
( long long ) mStartTs . mPosition ) ;
@ -3085,7 +3090,7 @@ bool AudioTrack::hasStarted()
}
}
ALOGV ( " %s(%d): hasStarted wait:%d ets:%lld start position:%lld " ,
__func__ , m Id,
__func__ , m Port Id,
( int ) wait ,
( long long ) ets . mPosition [ location ] ,
( long long ) mStartEts . mPosition [ location ] ) ;
@ -3161,7 +3166,7 @@ bool AudioTrack::AudioTrackThread::threadLoop()
FALLTHROUGH_INTENDED ;
default :
LOG_ALWAYS_FATAL_IF ( ns < 0 , " %s(%d): processAudioBuffer() returned %lld " ,
__func__ , mReceiver . m Id, ( long long ) ns ) ;
__func__ , mReceiver . m Port Id, ( long long ) ns ) ;
pauseInternal ( ns ) ;
return true ;
}