[Etoys] OggVorbisCodec crash
karl
karl.ramberg at comhem.se
Sun Dec 9 14:28:45 EST 2007
Takashi Yamamiya wrote:
> Hi Karl,
> (sorry I misspelled your name)
>
> 2007/12/8, Karl <karl.ramberg at comhem.se>:
>
>> Takashi Yamamiya wrote:
>>
>>> This is my excuse. OggPlugin is made for SoundRecoder which uses
>>> SequentialSound as internal sound buffer. So I didn't care that
>>> such huge chunk of data is passed to the plugin a time.
>>> It should be handled as primitiveFailed at least.
>>> VM crash is a bug anyway.
>>>
>> So one must send smaller chunks to the plugin. Do you have workaround ?
>> Karl
>>
>
> Yes, if you can divide SampledSound into a number of SequentialSound for
> each second, it should work. But I don't know an easy way to convert to
> SequentialSound. I'll take a look at that. It is a shame.
I made this method:
SampledSound>>compressWithOggVorbisCodec
| newSound sound samplesPerSecond size buffer startIndex stopIndex
tempSound |
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 _ sound compressWith: OggVorbisCodec.
newSound
add: tempSound.
startIndex := stopIndex + 1].
^ newSound
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.
Karl
More information about the Etoys
mailing list