Beispiel #1
0
        public void TestDecodeFrameNeedMore()
        {
            string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string path    = Path.Combine(dirName, "bensound-epic.mp3");

            Mpg123 mpg123 = new Mpg123();

            mpg123.OpenFeed();

            byte[] fileBytes = File.ReadAllBytes(path);
            byte[] buffer    = new byte[8];
            Array.Copy(fileBytes, buffer, 8);

            int  num   = 0;
            uint bytes = 0;

            int  b = 0, c = 0;
            long a = 0;

            mpg123.GetFormat(ref a, ref b, ref c);

            Mpg123.Errors error = Mpg123.Errors.OK;
            Assert.That(() => error = mpg123.DecodeFrame(ref num, ref buffer, ref bytes), Throws.Nothing);

            Assert.That(error, Is.EqualTo(Mpg123.Errors.NEED_MORE));
        }
Beispiel #2
0
        public void TestDecodeFrameNumFrames()
        {
            string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string path    = Path.Combine(dirName, "bensound-scifi.mp3");

            Mpg123 mpg123 = new Mpg123();

            mpg123.Open(path);

            byte[] buffer = null;
            int    num    = 0;
            uint   bytes  = 0;

            int  b = 0, c = 0;
            long a = 0;

            mpg123.GetFormat(ref a, ref b, ref c);

            Mpg123.Errors error = Mpg123.Errors.OK;
            while (error == Mpg123.Errors.OK)
            {
                error = mpg123.DecodeFrame(ref num, ref buffer, ref bytes);
            }

            Assert.That(num, Is.GreaterThan(0));
        }
Beispiel #3
0
        public void TestDecodeFrameOpen()
        {
            string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string path    = Path.Combine(dirName, "bensound-epic.mp3");

            Mpg123 mpg123 = new Mpg123();

            mpg123.Open(path);

            byte[] buffer = null;
            int    num    = 0;
            uint   bytes  = 0;

            Mpg123.Errors error = Mpg123.Errors.OK;
            while (error == Mpg123.Errors.OK)
            {
                Assert.That(() => error = mpg123.DecodeFrame(ref num, ref buffer, ref bytes), Throws.Nothing);
            }
        }
Beispiel #4
0
        public void TestReadNeedMore()
        {
            Mpg123 mpg123 = new Mpg123();

            mpg123.OpenFeed();

            byte[] buffer = new byte[8];

            uint done = 0;

            int  b = 0, c = 0;
            long a = 0;

            mpg123.GetFormat(ref a, ref b, ref c);

            Mpg123.Errors error = Mpg123.Errors.OK;
            Assert.That(() => error = mpg123.Read(buffer, ref done), Throws.Nothing);

            Assert.That(error, Is.EqualTo(Mpg123.Errors.NEED_MORE));
        }
Beispiel #5
0
        public void TestDecodeFrameNumFramesTotal()
        {
            string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string path    = Path.Combine(dirName, "bensound-epic.mp3");

            Mpg123 mpg123 = new Mpg123();

            mpg123.Open(path);

            byte[] buffer = null;
            int    num    = 1;
            uint   bytes  = 0;

            Mpg123.Errors error = Mpg123.Errors.OK;
            while (error != Mpg123.Errors.DONE)
            {
                error = mpg123.DecodeFrame(ref num, ref buffer, ref bytes);
            }

            Assert.That(num, Is.EqualTo(6834));
        }
Beispiel #6
0
        public void TestReadEmptyBuffer()
        {
            string dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string path    = Path.Combine(dirName, "bensound-epic.mp3");

            Mpg123 mpg123 = new Mpg123();

            mpg123.Open(path);

            uint done = 0;

            byte[] buffer = new byte[0];

            Mpg123.Errors error = Mpg123.Errors.OK;
            while (error == Mpg123.Errors.OK)
            {
                Assert.That(() => error = mpg123.Read(buffer, ref done), Throws.Nothing);
            }

            Assert.That(done, Is.EqualTo(0));
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            foreach (string decoder in Mpg123.Decoders)
            {
                Console.WriteLine(decoder);
            }

            Out123 out123 = new Out123();

            out123.Open();

            Mpg123 mpg123 = new Mpg123();

            mpg123.Open("Assets/bensound-epic.mp3");

            int offset = 0;

            while (true)
            {
                byte[]        data  = null;
                uint          size  = 0;
                Mpg123.Errors error = mpg123.DecodeFrame(ref offset, ref data, ref size);
                if (error == Mpg123.Errors.NEW_FORMAT)
                {
                    long rate     = 0;
                    int  channels = 0;
                    int  encoding = 0;
                    mpg123.GetFormat(ref rate, ref channels, ref encoding);
                    out123.Start(rate, channels, encoding);
                }
                else if (error == Mpg123.Errors.OK)
                {
                    out123.Play(data);
                }
            }

            Console.ReadLine();
        }
 internal extern static IntPtr NativeMpg123PlainStrError([MarshalAs(UnmanagedType.I4)] Mpg123.Errors error);