You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var flacData:ByteArray;
var raw:ByteArray;
var bool:Boolean = true;
var flacCodec:Object;
flacCodec = (new cmodule.flac.CLibInit).init();
var sound:Sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
sound.play();
var byteData:ByteArray = new ByteArray();
var mono:Boolean = true;
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent):void
{
mono = !mono;
flacData = new ByteArray();
flacData.endian = Endian.LITTLE_ENDIAN;
flacCodec.encode(encodingCompleteHandler,encodingProgressHandler, raw, flacData, raw.length, 10);
}
function encodingCompleteHandler(event:*):void {
flacData.position = 0;
(new FileReference()).save(flacData, ".flac");
}
function encodingProgressHandler(progress:int):void {
}
function onSampleData(event:SampleDataEvent):void
{
for(var i:int = 0; i < 2048; i++)
{
var sampleA:Number = Math.random() * 2.0 - 1.0; // -1 to 1
var sampleB:Number = Math.random() * 2.0 - 1.0; // -1 to 1
event.data.writeFloat(sampleA); // left
if(mono)
{
event.data.writeFloat(sampleA); // left again
}
else
{
event.data.writeFloat(sampleB); // right
}
}
if(bool)
{
bool = false;
raw = ByteArray(event.data)
raw.position = 0;
raw = convert32to16(raw)
}
}
/**
Converts an (raw) audio stream from 32-bit (signed, floating point)
to 16-bit (signed integer).
@param source The audio stream to convert.
*/
function convert32to16(source:ByteArray):ByteArray
{
trace("BitrateConvertor.convert32to16(source)", source.length);
var result:ByteArray = new ByteArray();
result.endian = Endian.LITTLE_ENDIAN;
while( source.bytesAvailable ) {
var sample:Number = source.readFloat() * SHORT_MAX_VALUE;
// Make sure we don't overflow.
if (sample < -SHORT_MAX_VALUE) sample = -SHORT_MAX_VALUE;
else if (sample > SHORT_MAX_VALUE) sample = SHORT_MAX_VALUE;
result.writeShort(sample);
}
trace(" - result.length:", result.length);
result.position = 0;
return result;
}
The text was updated successfully, but these errors were encountered:
Hi Luke,
I have created a sample file to try using flac wrapper in Flash. It is working fine for me but the converted file is not playing in any player.
Below is the sample code
import flash.media.Sound;
import flash.events.SampleDataEvent;
import flash.events.MouseEvent;
import cmodule.flac.CLibInit;
import flash.utils.ByteArray;
const FLOAT_MAX_VALUE:Number = 1.0;
const SHORT_MAX_VALUE:int = 0x7fff;
var flacData:ByteArray;
var raw:ByteArray;
var bool:Boolean = true;
var flacCodec:Object;
flacCodec = (new cmodule.flac.CLibInit).init();
var sound:Sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
sound.play();
var byteData:ByteArray = new ByteArray();
var mono:Boolean = true;
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent):void
{
mono = !mono;
flacData = new ByteArray();
flacData.endian = Endian.LITTLE_ENDIAN;
flacCodec.encode(encodingCompleteHandler,encodingProgressHandler, raw, flacData, raw.length, 10);
}
function encodingCompleteHandler(event:*):void {
flacData.position = 0;
(new FileReference()).save(flacData, ".flac");
}
function encodingProgressHandler(progress:int):void {
}
function onSampleData(event:SampleDataEvent):void
{
for(var i:int = 0; i < 2048; i++)
{
var sampleA:Number = Math.random() * 2.0 - 1.0; // -1 to 1
var sampleB:Number = Math.random() * 2.0 - 1.0; // -1 to 1
event.data.writeFloat(sampleA); // left
if(mono)
{
event.data.writeFloat(sampleA); // left again
}
else
{
event.data.writeFloat(sampleB); // right
}
}
if(bool)
{
bool = false;
raw = ByteArray(event.data)
raw.position = 0;
raw = convert32to16(raw)
}
}
/**
Converts an (raw) audio stream from 32-bit (signed, floating point)
to 16-bit (signed integer).
@param source The audio stream to convert.
*/
function convert32to16(source:ByteArray):ByteArray
{
trace("BitrateConvertor.convert32to16(source)", source.length);
}
The text was updated successfully, but these errors were encountered: