Package com.tulskiy.musique.audio.player

Source Code of com.tulskiy.musique.audio.player.BufferTest

/*
* Copyright (c) 2008, 2009, 2010, 2011 Denis Tulskiy
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with this work.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.tulskiy.musique.audio.player;

import com.tulskiy.musique.audio.player.io.Buffer;
import com.tulskiy.musique.playlist.Track;
import com.tulskiy.musique.util.AudioMath;
import org.junit.Test;

import javax.sound.sampled.AudioFormat;

import static org.junit.Assert.*;

import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import java.util.Arrays;

/**
* Author: Denis Tulskiy
* Date: 1/15/11
*/
public class BufferTest {
    @Test
    public void testRW() {
        Buffer buffer = new Buffer();
        byte[] buf = new byte[100];
        Track t = new Track();
        Arrays.fill(buf, (byte) 1);
        t.getTrackData().setBitrate(5);
        buffer.addNextTrack(t, null, 0, false);
        buffer.write(buf, 0, buf.length);
        buffer.write(buf, 0, buf.length);

        t = new Track();
        t.getTrackData().setBitrate(10);
        buffer.addNextTrack(t, null, 0, false);
        t = new Track();
        t.getTrackData().setBitrate(20);

        buffer.addNextTrack(t, null, 0, false);
        buffer.write(buf, 0, buf.length);
        t = new Track();
        t.getTrackData().setBitrate(30);
        buffer.addNextTrack(t, null, 0, false);

        assertEquals(-1, buffer.read(buf, 0, 100));
        Buffer.NextEntry nextTrack = buffer.pollNextTrack();
        assertEquals(5, nextTrack.track.getTrackData().getBitrate());

        assertEquals(55, buffer.read(buf, 0, 55));
        assertEquals(100, buffer.read(buf, 0, 100));
        assertEquals(45, buffer.read(buf, 0, 100));

        assertEquals(-1, buffer.read(buf, 0, 100));
        nextTrack = buffer.pollNextTrack();
        assertEquals(10, nextTrack.track.getTrackData().getBitrate());

        assertEquals(-1, buffer.read(buf, 0, 100));
        nextTrack = buffer.pollNextTrack();

        assertEquals(20, nextTrack.track.getTrackData().getBitrate());
        assertEquals(100, buffer.read(buf, 0, 100));
        assertEquals(-1, buffer.read(buf, 0, 100));
    }

    @Test
    public void testConvert() {
        byte[] input = new byte[]{
                (byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0xAB,
                0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78
        };

        int[] output;
        AudioFormat fmt;

        output = new int[12];
        fmt = new AudioFormat(44100, 8, 1, true, false);
        assertEquals(AudioMath.convertBuffer(input, output, input.length, fmt), output.length);

        assertArrayEquals(new int[]{
                (byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0xAB,
                0x12, 0x34, 0x56, 0x78,
                0x12, 0x34, 0x56, 0x78
        }, output);

        output = new int[12];
        fmt = new AudioFormat(44100, 8, 2, true, false);
        assertEquals(AudioMath.convertBuffer(input, output, input.length, fmt), output.length);

        assertArrayEquals(new int[]{
                (byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0xAB,
                0x12, 0x34, 0x56, 0x78,
                0x12, 0x34, 0x56, 0x78
        }, output);

        output = new int[6];
        fmt = new AudioFormat(44100, 16, 1, true, false);
        assertEquals(AudioMath.convertBuffer(input, output, input.length, fmt), output.length);

        assertArrayEquals(new int[]{
                (short)0xCDAB, (short)0xABEF,
                (short)0x3412, (short)0x7856,
                (short)0x3412, (short)0x7856,
        }, output);

        output = new int[6];
        fmt = new AudioFormat(44100, 16, 2, true, false);
        assertEquals(AudioMath.convertBuffer(input, output, input.length, fmt), output.length);

        assertArrayEquals(new int[]{
                (short)0xCDAB, (short)0xABEF,
                (short)0x3412, (short)0x7856,
                (short)0x3412, (short)0x7856,
        }, output);

        output = new int[4];
        fmt = new AudioFormat(44100, 24, 1, true, false);
        assertEquals(AudioMath.convertBuffer(input, output, input.length, fmt), output.length);

        assertArrayEquals(new int[]{
                0xFFEFCDAB, 0x3412AB, 0x127856, 0x785634,
        }, output);
    }
}
TOP

Related Classes of com.tulskiy.musique.audio.player.BufferTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.