Changeset 415

Show
Ignore:
Timestamp:
04/12/07 20:22:08 (1 year ago)
Author:
dconrad
Message:

We really need a packet description for VBR, and if we don't get it, complain instead of dividing by zero.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/FFissionCodec/FFissionDecoder.cpp

    r414 r415  
    328328                        inputBuffer.In(inData + inPacketDescription[i].mStartOffset, packetSize); 
    329329                } 
    330         } else
     330        } else if (mInputFormat.mBytesPerFrame != 0)
    331331                // no packet description, assume cbr 
    332332                UInt32 amountToCopy = FFMIN(mInputFormat.mBytesPerPacket * ioNumberPackets, ioInputDataByteSize); 
     
    341341                        inData += mInputFormat.mBytesPerPacket; 
    342342                } 
     343        } else { 
     344                // XiphQT throws this in this situation (we need packet descriptions, but don't get them) 
     345                // is there a better error to throw? 
     346                CODEC_THROW(kAudioCodecNotEnoughBufferSpaceError); 
    343347        } 
    344348} 
     
    434438                case kAudioCodecPropertyPacketFrameSize: 
    435439                case kAudioCodecPropertyHasVariablePacketByteSizes: 
     440                case kAudioCodecPropertyRequiresPacketDescription: 
    436441                        if (ioPropertyDataSize != sizeof(UInt32)) 
    437442                                CODEC_THROW(kAudioCodecBadPropertySizeError); 
     
    445450                         
    446451                case kAudioCodecPropertyHasVariablePacketByteSizes: 
     452                case kAudioCodecPropertyRequiresPacketDescription: 
    447453                        *reinterpret_cast<UInt32*>(outPropertyData) = true; 
    448454                        break;