weimingtom / nekonme

Automatically exported from code.google.com/p/nekonme
0 stars 0 forks source link

Patch for enabling loadCompressedDataFromByteArray #261

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
I have added support for Mix_LoadWAV_RW and Mix_LoadMUS_RW

Original issue reported on code.google.com by soywiz on 29 Aug 2012 at 12:41

Attachments:

GoogleCodeExporter commented 8 years ago
Implementation of Sound.loadPCMFromByteArray:

    public function loadPCMFromByteArray(Bytes:nme.utils.ByteArray, samples:Int, format:String = "float", stereo:Bool = true, sampleRate:Float = 44100.0):Void {

        // http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
        var wav:ByteArray = new ByteArray();
        wav.endian = Endian.LITTLE_ENDIAN;

        var AudioFormat:Int = switch(format) {
            case "float": 3;
            case "short": 1;
            default: throw(new Error(Std.format("Unsupported format $format")));
        };
        var NumChannels:Int = stereo ? 2 : 1;
        var SampleRate:Int = Std.int(sampleRate);
        var BitsPerSample:Int = switch(format) {
            case "float": 32;
            case "short": 16;
            default: throw(new Error(Std.format("Unsupported format $format")));
        };
        var ByteRate:Int = Std.int(SampleRate * NumChannels * BitsPerSample / 8);
        var BlockAlign:Int = Std.int(NumChannels * BitsPerSample / 8);
        var NumSamples:Int = Std.int(Bytes.length / BlockAlign);

        wav.writeUTFBytes("RIFF");
        wav.writeInt(36 + Bytes.length);
        wav.writeUTFBytes("WAVE");
        wav.writeUTFBytes("fmt ");
        wav.writeInt(16); // Subchunk1Size
        wav.writeShort((AudioFormat)); // AudioFormat
        wav.writeShort((NumChannels));
        wav.writeInt((SampleRate));
        wav.writeInt((ByteRate));
        wav.writeShort((BlockAlign));
        wav.writeShort((BitsPerSample));
        wav.writeUTFBytes("data");
        wav.writeInt((Bytes.length));
        wav.writeBytes(Bytes, 0, Bytes.length);

        wav.position = 0;
        loadCompressedDataFromByteArray(wav, wav.length);
    }

Original comment by soywiz on 29 Aug 2012 at 1:33

GoogleCodeExporter commented 8 years ago
I have create a accumulatie patch that will allow to use these functions on iOS.

Original comment by soywiz on 30 Aug 2012 at 8:17

Attachments:

GoogleCodeExporter commented 8 years ago
Fixed in r2032

Original comment by soywiz on 2 Sep 2012 at 2:48