Example #1
0
        void ReadAudioChunk(BitStream bs, int channel)
        {
            uint frameAudioLength        = 0;
            uint audioDecompressedLength = 0;

            bool compressed = ((audioFlags[channel] & (int)ARFlags.Compressed) == (int)ARFlags.Compressed);
            bool is16       = ((audioFlags[channel] & (int)ARFlags.Is16Bit) == (int)ARFlags.Is16Bit);
            bool stereo     = ((audioFlags[channel] & (int)ARFlags.Stereo) == (int)ARFlags.Stereo);

            bs.AssertAtByteBoundary();

            bs.DebugFirst();

            Console.WriteLine("reading audio chunk length");
            frameAudioLength = bs.ReadDWord();
            Console.WriteLine("audio chunk length = {0}", frameAudioLength);

            if (compressed)
            {
                audioDecompressedLength = bs.ReadDWord();
                Console.WriteLine("decompressed audio length = {0}", audioDecompressedLength);


                byte[] streamBuf = new byte[frameAudioLength];
                bs.Read(streamBuf, 0, streamBuf.Length);

                audioOut[channel] = new byte[audioDecompressedLength];

                if (is16)
                {
                    if (stereo)
                    {
                        Decompress16Stereo(new BitStream(streamBuf), new MemoryStream(audioOut[channel]));
                    }
                    else
                    {
                        Decompress16Mono(new BitStream(streamBuf), new MemoryStream(audioOut[channel]));
                    }
                }
                else
                if (stereo)
                {
                    Decompress8Stereo(new BitStream(streamBuf), new MemoryStream(audioOut[channel]));
                }
                else
                {
                    Decompress8Mono(new BitStream(streamBuf), new MemoryStream(audioOut[channel]));
                }
            }
            else
            {
                audioOut[channel] = new byte[frameAudioLength];
                bs.Read(audioOut[channel], 0, (int)frameAudioLength);
            }
        }
Example #2
0
		void ReadAudioChunk (BitStream bs, int channel)
		{
			uint frameAudioLength = 0;
			uint audioDecompressedLength = 0;

			bool compressed = ((audioFlags[channel] & (int)ARFlags.Compressed) == (int)ARFlags.Compressed);
			bool is16 = ((audioFlags[channel] & (int)ARFlags.Is16Bit) == (int)ARFlags.Is16Bit);
			bool stereo = ((audioFlags[channel] & (int)ARFlags.Stereo) == (int)ARFlags.Stereo);

			bs.AssertAtByteBoundary ();

			bs.DebugFirst ();

			Console.WriteLine ("reading audio chunk length");
			frameAudioLength = bs.ReadDWord ();
			Console.WriteLine ("audio chunk length = {0}", frameAudioLength);

			if (compressed) {
				audioDecompressedLength = bs.ReadDWord ();
				Console.WriteLine ("decompressed audio length = {0}", audioDecompressedLength);


				byte[] streamBuf = new byte[frameAudioLength];
				bs.Read (streamBuf, 0, streamBuf.Length);

				audioOut[channel] = new byte[audioDecompressedLength];

				if (is16)
					if (stereo)
						Decompress16Stereo (new BitStream (streamBuf), new MemoryStream (audioOut[channel]));
					else
						Decompress16Mono (new BitStream (streamBuf), new MemoryStream (audioOut[channel]));
				else
					if (stereo)
						Decompress8Stereo (new BitStream (streamBuf), new MemoryStream (audioOut[channel]));
					else
						Decompress8Mono (new BitStream (streamBuf), new MemoryStream (audioOut[channel]));
			}
			else {
				audioOut[channel] = new byte[frameAudioLength];
				bs.Read (audioOut[channel], 0, (int)frameAudioLength);
			}
		}