Ajout version Release/x64 avec les libraries x64 et tuning de la version Debug
This commit is contained in:
		
							
								
								
									
										106
									
								
								SQCSim2021/external/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								SQCSim2021/external/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| // Copyright (C) 2002-2007 Nikolaus Gebhardt | ||||
| // Part of the code for this plugin for irrKlang is based on: | ||||
| //  MP3 input for Audiere by Matt Campbell <mattcampbell@pobox.com>, based on | ||||
| //  libavcodec from ffmpeg (http://ffmpeg.sourceforge.net/). | ||||
| // See license.txt for license details of this plugin. | ||||
|  | ||||
| #ifndef __C_IRRKLANG_AUDIO_STREAM_MP3_H_INCLUDED__ | ||||
| #define __C_IRRKLANG_AUDIO_STREAM_MP3_H_INCLUDED__ | ||||
|  | ||||
| #include <ik_IAudioStream.h> | ||||
| #include <ik_IFileReader.h> | ||||
| #include <vector> | ||||
| #include "decoder/mpaudec.h" | ||||
|  | ||||
| namespace irrklang | ||||
| { | ||||
| 	const int IKP_MP3_INPUT_BUFFER_SIZE = 4096; | ||||
|  | ||||
| 	//!	Reads and decodes audio data into an usable audio stream for the ISoundEngine | ||||
| 	/** To extend irrKlang with new audio format decoders, the only thing needed to do | ||||
| 	is implementing the IAudioStream interface. All the code available in this class is only for | ||||
| 	mp3 decoding and may make this class look a bit more complicated then it actually is. */ | ||||
| 	class CIrrKlangAudioStreamMP3 : public IAudioStream | ||||
| 	{ | ||||
| 	public: | ||||
|  | ||||
| 		CIrrKlangAudioStreamMP3(IFileReader* file); | ||||
| 		~CIrrKlangAudioStreamMP3(); | ||||
|  | ||||
| 		//! returns format of the audio stream | ||||
| 		virtual SAudioStreamFormat getFormat(); | ||||
|  | ||||
| 		//! tells the audio stream to read n audio frames into the specified buffer | ||||
| 		/** \param target: Target data buffer to the method will write the read frames into. The | ||||
| 		specified buffer will be getFormat().getFrameSize()*frameCount big. | ||||
| 		\param frameCount: amount of frames to be read. | ||||
| 		\returns Returns amount of frames really read. Should be frameCountToRead in most cases. */ | ||||
| 		virtual ik_s32 readFrames(void* target, ik_s32 frameCountToRead); | ||||
|  | ||||
| 		//! sets the position of the audio stream. | ||||
| 		/** For example to let the stream be read from the beginning of the file again, | ||||
| 		setPosition(0) would be called. This is usually done be the sound engine to | ||||
| 		loop a stream after if has reached the end. Return true if sucessful and 0 if not. */ | ||||
| 		virtual bool setPosition(ik_s32 pos); | ||||
|  | ||||
| 		// just for the CIrrKlangAudioStreamLoaderMP3 to let him know if loading worked | ||||
| 		bool isOK() { return File != 0; } | ||||
|  | ||||
| 	protected: | ||||
|  | ||||
| 		ik_s32 readFrameForMP3(void* target, ik_s32 frameCountToRead, bool parseOnly=false); | ||||
| 		bool decodeFrame(); | ||||
| 		void skipID3IfNecessary(); | ||||
|  | ||||
| 		irrklang::IFileReader* File; | ||||
| 		SAudioStreamFormat Format; | ||||
|  | ||||
| 		// mpaudec specific | ||||
| 		MPAuDecContext* TheMPAuDecContext; | ||||
|  | ||||
| 		ik_u8 InputBuffer[IKP_MP3_INPUT_BUFFER_SIZE]; | ||||
|  | ||||
| 		int InputPosition; | ||||
| 		int InputLength; | ||||
| 		int Position; | ||||
| 		ik_u8* DecodeBuffer; | ||||
| 		ik_s32 FileBegin; | ||||
| 		ik_u32 CurrentFramePosition; | ||||
|  | ||||
| 		bool FirstFrameRead; | ||||
| 		bool EndOfFileReached; | ||||
|  | ||||
| 		// helper class for managing the streaming decoded audio data | ||||
| 		class QueueBuffer | ||||
| 		{ | ||||
| 		public:	 | ||||
|  | ||||
| 			QueueBuffer(); | ||||
| 			~QueueBuffer(); | ||||
|  | ||||
| 			int getSize(); | ||||
| 			void write(const void* buffer, int size); | ||||
| 			int read(void* buffer, int size); | ||||
| 			void clear(); | ||||
|  | ||||
| 		private: | ||||
|  | ||||
| 			ik_u8* Buffer; | ||||
| 			int Capacity; | ||||
| 			int Size; | ||||
| 		}; | ||||
|  | ||||
| 		struct SFramePositionData | ||||
| 		{ | ||||
| 			int offset; | ||||
| 			int size; | ||||
| 		}; | ||||
|  | ||||
| 		std::vector<SFramePositionData> FramePositionData; | ||||
| 		QueueBuffer DecodedQueue; | ||||
| 	}; | ||||
|  | ||||
|  | ||||
| } // end namespace irrklang | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user