Changeset 1056

Show
Ignore:
Timestamp:
11/08/07 22:43:11 (14 months ago)
Author:
stephen_booth
Message:

Added EOS detection

Location:
trunk/Audio
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/Audio/AudioScheduler.m

    r1043 r1056  
    9393 
    9494        // Determine if region rendering is complete 
    95         if([[[scheduler regionBeingRendered] decoder] currentFrame] == [[[scheduler regionBeingRendered] decoder] totalFrames]  
    96            && [[scheduler regionBeingRendered] framesRendered] == [[scheduler regionBeingRendered] framesScheduled]) { 
     95        if([[scheduler regionBeingRendered] atEnd] && [[scheduler regionBeingRendered] framesRendered] == [[scheduler regionBeingRendered] framesScheduled]) { 
    9796 
    9897                // Notify the delegate 
  • trunk/Audio/ScheduledAudioRegion.h

    r1043 r1056  
    2929{ 
    3030        id <AudioDecoderMethods>        _decoder; 
     31        BOOL                                            _atEnd; 
    3132         
    3233        AudioTimeStamp                          _startTime; 
     
    4950- (id <AudioDecoderMethods>) decoder; 
    5051- (void) setDecoder:(id <AudioDecoderMethods>)decoder; 
     52 
     53- (BOOL) atEnd; 
    5154 
    5255- (AudioTimeStamp) startTime; 
  • trunk/Audio/ScheduledAudioRegion.m

    r1043 r1056  
    197197- (SInt64)                      framesScheduled                                                 { return _framesScheduled; } 
    198198- (SInt64)                      framesRendered                                                  { return _framesRendered; } 
     199- (BOOL)                        atEnd                                                                   { return _atEnd; } 
    199200 
    200201- (unsigned) numberOfSlicesInBuffer 
     
    241242        NSParameterAssert(sliceIndex < [self numberOfSlicesInBuffer]); 
    242243 
    243         return [[self decoder] readAudio:_sliceBuffer[sliceIndex].mBufferList frameCount:[self numberOfFramesPerSlice]]; 
     244        UInt32 framesRead = [[self decoder] readAudio:_sliceBuffer[sliceIndex].mBufferList frameCount:[self numberOfFramesPerSlice]]; 
     245         
     246        if(0 == framesRead) 
     247                _atEnd = YES; 
     248         
     249        return framesRead; 
    244250} 
    245251