[Etoys] OggVorbisCodec crash

Takashi Yamamiya tak at metatoys.org
Mon Dec 10 14:04:10 EST 2007


Hi Karl,

2007/12/9, karl <karl.ramberg at comhem.se>:
> This method returns a SequentialSound with several SampledSounds
> compressed with OggVorbis in it. It's not optimal as you can notice the
> cut between the each sound.

Good!

But the reason why the sound was cut is Vorbis encoder has a state. It
is better to reuse same encoder in a sequence. I'll put such method
into the stream (I'd rather prefer the rewrite #compressWith: itself).

SampledSound>>compressWithOggVorbisCodec
   | newSound sound samplesPerSecond size buffer startIndex stopIndex
tempSound codec |
   codec := OggVorbisCodec new.
   size := self samples size.
   startIndex := 1.
   newSound := SequentialSound new.
   samplesPerSecond := (self computeSamplesForSeconds: 1) size.
   1
       to: size
       by: samplesPerSecond
       do: [:i |
            ((stopIndex _ startIndex + samplesPerSecond) > size)
ifTrue:[ stopIndex _ size].
           buffer := self samples copyFrom: startIndex to: stopIndex.
           sound := SampledSound samples: buffer samplingRate: self
samplingRate.
           tempSound := codec compressSound: sound.
           newSound
               add: tempSound.
           startIndex := stopIndex + 1].
   ^ newSound

Cheers,
- Takashi


More information about the Etoys mailing list