From 5534e757b722d164de8a9bc74c87816b85c54d3e Mon Sep 17 00:00:00 2001 From: veroxzik <43590004+veroxzik@users.noreply.github.com> Date: Sat, 16 Apr 2022 22:16:39 -0400 Subject: [PATCH] Fixes flickering, adds irrklang .net 4 and removes irrklang c++. Also removes hardcoded paths. Graphic updates occur on timer1 (currently every 20ms). --- BAKKA Editor/BAKKA Editor.vcxproj | 14 +- BAKKA Editor/MyForm.h | 88 +- BAKKA Editor/MyForm.resx | 1534 ++-------- .../include/ik_ESoundEngineOptions.h | 78 - .../include/ik_ESoundOutputDrivers.h | 59 - .../include/ik_EStreamModes.h | 31 - .../include/ik_IAudioRecorder.h | 110 - .../include/ik_IAudioStream.h | 49 - .../include/ik_IAudioStreamLoader.h | 40 - .../include/ik_IFileFactory.h | 41 - .../include/ik_IFileReader.h | 50 - .../include/ik_IRefCounted.h | 119 - .../irrKlang-64bit-1.6.0/include/ik_ISound.h | 194 -- .../include/ik_ISoundDeviceList.h | 41 - .../include/ik_ISoundEffectControl.h | 243 -- .../include/ik_ISoundEngine.h | 436 --- .../include/ik_ISoundMixedOutputReceiver.h | 46 - .../include/ik_ISoundSource.h | 167 -- .../include/ik_ISoundStopEventReceiver.h | 72 - .../include/ik_IVirtualRefCounted.h | 48 - .../include/ik_SAudioStreamFormat.h | 71 - .../include/ik_irrKlangTypes.h | 96 - .../irrKlang-64bit-1.6.0/include/ik_vec3d.h | 261 -- .../irrKlang-64bit-1.6.0/include/irrKlang.h | 1040 ------- .../lib/Winx64-visualStudio/irrKlang.exp | Bin 2329 -> 0 bytes .../lib/Winx64-visualStudio/irrKlang.lib | Bin 4380 -> 0 bytes .../lib/dotnet-4-64/ikpFlac.dll | Bin 0 -> 200192 bytes .../lib/dotnet-4-64/ikpMP3.dll | Bin 0 -> 183296 bytes .../lib/dotnet-4-64/irrKlang.NET4.dll | Bin 0 -> 594432 bytes .../ikpMP3/CIrrKlangAudioStreamLoaderMP3.cpp | 42 - .../ikpMP3/CIrrKlangAudioStreamLoaderMP3.h | 32 - .../ikpMP3/CIrrKlangAudioStreamMP3.cpp | 397 --- .../plugins/ikpMP3/CIrrKlangAudioStreamMP3.h | 106 - .../plugins/ikpMP3/decoder/bits.c | 273 -- .../plugins/ikpMP3/decoder/internal.h | 86 - .../plugins/ikpMP3/decoder/mpaudec.c | 2477 ----------------- .../plugins/ikpMP3/decoder/mpaudec.h | 34 - .../plugins/ikpMP3/decoder/mpaudectab.h | 772 ----- .../plugins/ikpMP3/decoder/mpegaudio.h | 17 - .../plugins/ikpMP3/ikpMP3.cpp | 41 - .../plugins/ikpMP3/license.txt | 458 --- .../plugins/ikpMP3/readme.txt | 7 - 42 files changed, 358 insertions(+), 9312 deletions(-) delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundEngineOptions.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundOutputDrivers.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_EStreamModes.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioRecorder.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStream.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStreamLoader.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileFactory.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileReader.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IRefCounted.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISound.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundDeviceList.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEffectControl.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEngine.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundMixedOutputReceiver.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundSource.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundStopEventReceiver.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IVirtualRefCounted.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_SAudioStreamFormat.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_irrKlangTypes.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_vec3d.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/include/irrKlang.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.exp delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.lib create mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll create mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll create mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.cpp delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.cpp delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/bits.c delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/internal.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.c delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudectab.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpegaudio.h delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/ikpMP3.cpp delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/license.txt delete mode 100644 BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/readme.txt diff --git a/BAKKA Editor/BAKKA Editor.vcxproj b/BAKKA Editor/BAKKA Editor.vcxproj index bc56988..da64c53 100644 --- a/BAKKA Editor/BAKKA Editor.vcxproj +++ b/BAKKA Editor/BAKKA Editor.vcxproj @@ -89,12 +89,12 @@ Level3 _DEBUG;%(PreprocessorDefinitions) - C:\Users\otaku\source\repos\BAKKA Editor\BAKKA Editor\irrKlang-64bit-1.6.0\include;%(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) - irrKlang.lib;%(AdditionalDependencies) - C:\Users\otaku\source\repos\BAKKA Editor\BAKKA Editor\irrKlang-64bit-1.6.0\lib\Winx64-visualStudio;%(AdditionalLibraryDirectories) + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) Windows main @@ -118,12 +118,12 @@ Level3 NDEBUG;%(PreprocessorDefinitions) - C:\Users\otaku\source\repos\BAKKA Editor\BAKKA Editor\irrKlang-64bit-1.6.0\include;%(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) - irrKlang.lib;%(AdditionalDependencies) - C:\Users\otaku\source\repos\BAKKA Editor\BAKKA Editor\irrKlang-64bit-1.6.0\lib\Winx64-visualStudio;%(AdditionalLibraryDirectories) + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) Windows main @@ -133,7 +133,7 @@ - O:\Wacca_Stuff\Charting\irrKlang-64bit-1.6.0\bin\dotnet-4-64\irrKlang.NET4.dll + irrKlang-64bit-1.6.0\lib\dotnet-4-64\irrKlang.NET4.dll diff --git a/BAKKA Editor/MyForm.h b/BAKKA Editor/MyForm.h index 0ddce10..fdb3ef0 100644 --- a/BAKKA Editor/MyForm.h +++ b/BAKKA Editor/MyForm.h @@ -1,5 +1,4 @@ #pragma once -#pragma comment(lib, "irrKlang.lib") // link with irrKlang.dll #include #include #include @@ -8,7 +7,6 @@ #include #include #include -#include #include #include #include @@ -134,6 +132,7 @@ namespace BAKKAEditor { using namespace System::Drawing; using namespace System::IO; using namespace System::Threading; + using namespace System::Reflection; /// /// Summary for MyForm @@ -144,9 +143,6 @@ namespace BAKKAEditor { MyForm(void) { InitializeComponent(); - // - //TODO: Add the constructor code here - // } protected: @@ -165,6 +161,8 @@ namespace BAKKAEditor { ISoundEngine SoundEngine; ISound^ currentlyPlayingSong = SoundEngine.Play2D(stdStringToSystemString(songFilePath), true, true); ISound^ currentlyPlayingTickSound = SoundEngine.Play2D(stdStringToSystemString(tickFilePath), false, true); + BufferedGraphicsContext^ bufferedGfxContext; + BufferedGraphics^ bufferedGfx; protected: private: System::Windows::Forms::ToolStripMenuItem^ fileToolStripMenuItem; private: System::Windows::Forms::ToolStripMenuItem^ newToolStripMenuItem; @@ -329,6 +327,7 @@ private: System::Windows::Forms::Label^ songFileName; private: System::Windows::Forms::Button^ selectSongFile; private: System::Windows::Forms::OpenFileDialog^ openFileDialogSong; private: System::Windows::Forms::Label^ VolumeLabel; +private: System::Windows::Forms::Timer^ timer1; private: System::Windows::Forms::TrackBar^ SongVolume; private: System::ComponentModel::BackgroundWorker^ backgroundWorkerSong; @@ -541,6 +540,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; this->backgroundWorker1 = (gcnew System::ComponentModel::BackgroundWorker()); this->backgroundWorker2 = (gcnew System::ComponentModel::BackgroundWorker()); this->panel1 = (gcnew System::Windows::Forms::Panel()); + this->timer1 = (gcnew System::Windows::Forms::Timer(this->components)); this->menuStrip->SuspendLayout(); this->NoteTypeBox->SuspendLayout(); (cli::safe_cast(this->VisualHispeed))->BeginInit(); @@ -1653,6 +1653,12 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; this->panel1->Controls->Add(this->CurrentObjectText); this->panel1->Name = L"panel1"; // + // timer1 + // + this->timer1->Enabled = true; + this->timer1->Interval = 20; + this->timer1->Tick += gcnew System::EventHandler(this, &MyForm::timer1_Tick); + // // MyForm // this->AllowDrop = true; @@ -3617,6 +3623,13 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; //InitialSettingsPane->Width = (this->Width - NoteTypeBox->Width - 36); //Point position(NoteTypeBox->Width + 12, 27); //InitialSettingsPane->Location = position; + + // Update BufferedGraphics size + bufferedGfxContext->MaximumBuffer = Drawing::Size(CirclePanel->Width + 1, CirclePanel->Height + 1); + bufferedGfx = bufferedGfxContext->Allocate(CirclePanel->CreateGraphics(), + Drawing::Rectangle(0, 0, CirclePanel->Width, CirclePanel->Height)); + DrawToGraphics(bufferedGfx->Graphics); + RefreshPaint(); } private: System::Void MeasureNum_ValueChanged(System::Object^ sender, System::EventArgs^ e) { @@ -3760,14 +3773,11 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; } } private: System::Void CirclePanel_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { - //Note graphics - Graphics^ notesGraphics = e->Graphics; - BufferedGraphics^ BufferedNotesGraphics; - //Configure buffer context - BufferedGraphicsContext^ context = BufferedGraphicsManager::Current; - context->MaximumBuffer = System::Drawing::Size(CirclePanel->Width + 1, CirclePanel->Height + 1); + bufferedGfx->Render(e->Graphics); + } + + void DrawToGraphics(Graphics^ g) { System::Drawing::Rectangle PanelRect(0, 0, CirclePanel->Width, CirclePanel->Height); - BufferedNotesGraphics = context->Allocate(CirclePanel->CreateGraphics(), PanelRect); //Pens for drawing parts of circle float widthOfBasePen = (float)CirclePanel->Width * (4.f / 600.f); //sizes are essentially the pixel width if the box is 600x600 float widthOfLinesPen = (float)CirclePanel->Width * (2.f / 600.f); @@ -3802,7 +3812,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; System::Drawing::Size size(sizeOfRect, sizeOfRect); System::Drawing::Rectangle Rect(location, size); //Drawing mode - BufferedNotesGraphics->Graphics->SmoothingMode = Drawing2D::SmoothingMode::HighSpeed; + g->SmoothingMode = Drawing2D::SmoothingMode::HighSpeed; //Current time float currentTime; if (scrollBarChanged) { @@ -3826,7 +3836,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; //Make Background Transparent SolidBrush^ backgroundBrush = gcnew SolidBrush(this->BackColor); - BufferedNotesGraphics->Graphics->FillRectangle(backgroundBrush, PanelRect); + g->FillRectangle(backgroundBrush, PanelRect); //Draw pre-existing mask std::map>>::iterator mapitr = mapOfMasks.lower_bound(currentTime); @@ -3839,7 +3849,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { maskStartAngle = -((float)listITR->first * 6); maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - BufferedNotesGraphics->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); + g->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); } } } @@ -3850,7 +3860,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { maskStartAngle = -((float)listITR->first * 6); maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - BufferedNotesGraphics->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); + g->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); } } } @@ -3860,7 +3870,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { maskStartAngle = -((float)listITR->first * 6); maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - BufferedNotesGraphics->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); + g->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); } } } @@ -3868,15 +3878,15 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; //Draw selected mask if (SelectedLineType == 1 && Rect.Width >= 1) { if (SelectedNoteTypeVisual == 12) { - BufferedNotesGraphics->Graphics->FillPie(MaskBrush, Rect, startAngle, arcLength); + g->FillPie(MaskBrush, Rect, startAngle, arcLength); } if (SelectedNoteTypeVisual == 13) { - BufferedNotesGraphics->Graphics->FillPie(MaskRemoveBrush, Rect, startAngle, arcLength); + g->FillPie(MaskRemoveBrush, Rect, startAngle, arcLength); } } //Switch Drawing mode - BufferedNotesGraphics->Graphics->SmoothingMode = Drawing2D::SmoothingMode::AntiAlias; + g->SmoothingMode = Drawing2D::SmoothingMode::AntiAlias; //Draw measure circle float nearestMeasure = std::ceil(currentTime); @@ -3893,13 +3903,13 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); System::Drawing::Rectangle RectFut(locationFut, sizeFut); if (RectFut.Width >= 1) { - BufferedNotesGraphics->Graphics->DrawEllipse(CircleBeatPen, RectFut); + g->DrawEllipse(CircleBeatPen, RectFut); } } //Draw base circle - BufferedNotesGraphics->Graphics->DrawEllipse(CircleBasePen, Rect); + g->DrawEllipse(CircleBasePen, Rect); //Draw Degree Lines for (int i = 0; i < 360; i += 6) { //i is the angle n degrees @@ -3923,7 +3933,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; yEnd = (innerRadius * sin(degToRad)) + yCenterOfCircle; PointF coordPointEnd(xEnd, yEnd); - BufferedNotesGraphics->Graphics->DrawLine(CircleLinesPen, coordPointStart, coordPointEnd); + g->DrawLine(CircleLinesPen, coordPointStart, coordPointEnd); } //Draw future holds @@ -3953,14 +3963,14 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); System::Drawing::Rectangle RectFut(locationFut, sizeFut); if (RectFut.Width >= 1) { - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw hold + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw hold if (listofNotesitr->noteType == 25) { //If bonus hold CircleNotePen->Color = BonusColor; CircleNotePen->Width += highlightWidth; futStartAngle += 2; //increase size for highlight futArcLength -= 4; - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight } if (HighlightCheckBox->Checked) { if (islistITREqualToViewITR(listofNotesitr)) { @@ -3968,7 +3978,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; CircleNotePen->Width += highlightWidth; futStartAngle += 2; //increase size for highlight futArcLength -= 4; - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight } } } @@ -4008,14 +4018,14 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); System::Drawing::Rectangle RectFut(locationFut, sizeFut); if (RectFut.Width >= 1) { - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw note + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw note if (listofNotesitr->noteType >= 20) { //If bonus note CircleNotePen->Color = BonusColor; CircleNotePen->Width += highlightWidth; futStartAngle += 2; //increase size for highlight futArcLength -= 4; - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight } if (HighlightCheckBox->Checked) { if (islistITREqualToViewITR(listofNotesitr)) { @@ -4023,7 +4033,7 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; CircleNotePen->Width += highlightWidth; futStartAngle += 2; //increase size for highlight futArcLength -= 4; - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight + g->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight } } } @@ -4041,11 +4051,8 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; if (SelectedLineType == 1 && Rect.Width >= 1) { CircleNotePen->Color = returnColor(SelectedNoteTypeVisual); CircleNotePen->Width = widthOfNotePen; - BufferedNotesGraphics->Graphics->DrawArc(CircleNotePen, Rect, startAngle, arcLength); + g->DrawArc(CircleNotePen, Rect, startAngle, arcLength); } - - //Draw Buffer to screen - BufferedNotesGraphics->Render(notesGraphics); } bool islistITREqualToViewITR(std::list::iterator listITR) { if (listITR->beat != viewNotesITR->beat) @@ -4270,6 +4277,18 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; SetStyle(ControlStyles::OptimizedDoubleBuffer, true); SetStyle(ControlStyles::UserPaint, true); SetStyle(ControlStyles::AllPaintingInWmPaint, true); + + // Initialize BufferedGraphics + bufferedGfxContext = BufferedGraphicsManager::Current; + bufferedGfxContext->MaximumBuffer = Drawing::Size(CirclePanel->Width + 1, CirclePanel->Height + 1); + bufferedGfx = bufferedGfxContext->Allocate(CirclePanel->CreateGraphics(), + Drawing::Rectangle(0, 0, CirclePanel->Width, CirclePanel->Height)); + DrawToGraphics(bufferedGfx->Graphics); + + // Force double buffering on CirlcePanel + Type^ controlType = CirclePanel->GetType(); + PropertyInfo^ pi = controlType->GetProperty("DoubleBuffered", BindingFlags::Instance | BindingFlags::NonPublic); + pi->SetValue(CirclePanel, true); } private: System::Void CirclePanel_Scroll(System::Object^ sender, System::Windows::Forms::ScrollEventArgs^ e) { if (e->ScrollOrientation == ScrollOrientation::VerticalScroll) { @@ -4329,5 +4348,8 @@ private: System::Windows::Forms::CheckBox^ HighlightCheckBox; private: System::Void HighlightCheckBox_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { RefreshPaint(); } +private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { + DrawToGraphics(bufferedGfx->Graphics); +} }; } diff --git a/BAKKA Editor/MyForm.resx b/BAKKA Editor/MyForm.resx index be471fa..90935bd 100644 --- a/BAKKA Editor/MyForm.resx +++ b/BAKKA Editor/MyForm.resx @@ -120,42 +120,11 @@ 17, 17 - - - 0, 0 - - - 990, 24 - - - - 0 - - - Menu Strip - - - menuStrip - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 14 - - - 37, 20 - - - File - Ctrl+N + 186, 22 @@ -195,12 +164,43 @@ Exit + + 37, 20 + + + File + 52, 20 About + + 0, 0 + + + 990, 24 + + + + 0 + + + Menu Strip + + + menuStrip + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 14 + True @@ -387,9 +387,6 @@ 8 - - 124, 17 - True @@ -408,6 +405,9 @@ Hold (H) + + 124, 17 + After first insert of a hold, you must continue adding to the hold until end. @@ -609,9 +609,6 @@ Tap, Orange Flicks, and Green Flicks 13 - - 124, 17 - 87, 19 @@ -1236,54 +1233,6 @@ Default: 0.5 (1/2 of a measure) True - - RemoveMask - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 5 - - - AddMask - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 6 - - - 12, 119 - - - 496, 84 - - - 15 - - - Gimmick Types - - - GimmickBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - True @@ -1341,308 +1290,32 @@ Default: 0.5 (1/2 of a measure) 6 - - True + + 12, 119 - - ReverseEnd2BeatNum2 + + 496, 84 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 0 - - - label12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 1 - - - ReverseEnd2BeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 2 - - - ReverseEnd2MeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 3 - - - ReverseEnd1BeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 4 - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 5 - - - ReverseEnd1BeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 6 - - - ReverseEnd1MeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 7 - - - StopEndMeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 8 - - - StopEndBeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 9 - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 10 - - - StopEndBeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 11 - - - HiSpeedChangeNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 12 - - - TimeSigNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 13 - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 14 - - - TimeSigNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - + 15 - - BPMChangeNum + + Gimmick Types - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + GimmickBox - - GimmickSettingsBox - - - 16 - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 17 - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 18 - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 19 - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 20 - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 21 - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 22 - - - 12, 209 - - - 333, 188 - - - 23 - - - Gimmick Settings - - - GimmickSettingsBox - - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - - 10 + + 11 + + + True 274, 149 @@ -2247,168 +1920,36 @@ Default: 0.5 (1/2 of a measure) 22 + + 12, 209 + + + 333, 188 + + + 23 + + + Gimmick Settings + + + GimmickSettingsBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 10 + Top, Right True - - InitialSetSave - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 0 - - - MovieOffsetNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 1 - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 2 - - - OffsetNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 3 - - - label16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 4 - - - InitTimeSigNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 5 - - - label15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 6 - - - InitTimeSigNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 7 - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 8 - - - InitialBPMNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 9 - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 10 - - - 696, 27 - - - 282, 160 - - - 24 - - - Initial Chart Settings - - - InitialSettingsPane - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - Bottom @@ -2706,6 +2247,30 @@ Default: 0.5 (1/2 of a measure) 10 + + 696, 27 + + + 282, 160 + + + 24 + + + Initial Chart Settings + + + InitialSettingsPane + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + True @@ -2742,66 +2307,6 @@ Default: 0.5 (1/2 of a measure) True - - MaskCenter - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 0 - - - MaskCClockwise - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 1 - - - MaskClockwise - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 2 - - - 514, 119 - - - 176, 84 - - - 26 - - - Mask Setting - - - MaskSettingsBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - True @@ -2883,6 +2388,30 @@ Default: 0.5 (1/2 of a measure) 2 + + 514, 119 + + + 176, 84 + + + 26 + + + Mask Setting + + + MaskSettingsBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + True @@ -2949,162 +2478,6 @@ Default: 0.5 (1/2 of a measure) True - - GimmickValueLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 0 - - - GimmickTypeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 1 - - - GimmickSubBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 2 - - - GimmickBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 3 - - - label22 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 4 - - - label21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 5 - - - label20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 6 - - - label19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 7 - - - NextGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 8 - - - PrevGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 9 - - - DeleteGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 10 - - - 12, 578 - - - 482, 208 - - - 28 - - - Gimmicks View - - - PreChartViewBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - True @@ -3429,276 +2802,36 @@ Default: 0.5 (1/2 of a measure) 10 + + 12, 578 + + + 482, 208 + + + 28 + + + Gimmicks View + + + PreChartViewBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + Bottom, Right True - - EditNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 0 - - - PrevBeatButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 1 - - - NextBeatButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 2 - - - MatchNoteCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 3 - - - MatchTimeCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 4 - - - NotesMaskLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 5 - - - NotesSizeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 6 - - - NotesPosLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 7 - - - NotesTypeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 8 - - - NotesSubBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 9 - - - NotesBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 10 - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 11 - - - label27 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 12 - - - label26 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 13 - - - label25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 14 - - - label24 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 15 - - - label23 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 16 - - - NextNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 17 - - - PrevNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 18 - - - DeleteNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 19 - - - 508, 578 - - - 470, 208 - - - 29 - - - Notes View - - - NotesViewBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - 238, 155 @@ -4293,6 +3426,30 @@ Default: 0.5 (1/2 of a measure) 19 + + 508, 578 + + + 470, 208 + + + 29 + + + Notes View + + + NotesViewBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + Bottom, Right @@ -4341,54 +3498,6 @@ Default: 0.5 (1/2 of a measure) True - - SizeTrackBar - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 0 - - - PosTrackBar - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 1 - - - 351, 209 - - - 339, 133 - - - 31 - - - Current Note Settings - - - CurrentNoteBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - 137, 45 @@ -4431,6 +3540,30 @@ Default: 0.5 (1/2 of a measure) 1 + + 351, 209 + + + 339, 133 + + + 31 + + + Current Note Settings + + + CurrentNoteBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + 491, 20 @@ -4482,6 +3615,25 @@ Default: 0.5 (1/2 of a measure) True + + True + + + Microsoft Sans Serif, 9.75pt, style=Bold + + + 91, 55 + + + 64, 32 + + + 47 + + + Song +Volume: + VolumeLabel @@ -4494,6 +3646,15 @@ Default: 0.5 (1/2 of a measure) 1 + + 161, 59 + + + 162, 45 + + + 46 + SongVolume @@ -4506,6 +3667,21 @@ Default: 0.5 (1/2 of a measure) 3 + + True + + + 97, 102 + + + 86, 13 + + + 45 + + + Select File (.ogg) + songFileName @@ -4518,6 +3694,18 @@ Default: 0.5 (1/2 of a measure) 4 + + 6, 19 + + + 75, 23 + + + 34 + + + Play (P) + PlayButton @@ -4530,6 +3718,15 @@ Default: 0.5 (1/2 of a measure) 5 + + 87, 19 + + + 479, 45 + + + 36 + songTrackSlider @@ -4542,6 +3739,18 @@ Default: 0.5 (1/2 of a measure) 7 + + 6, 48 + + + 75, 23 + + + 37 + + + Select Song + selectSongFile @@ -4581,6 +3790,22 @@ Default: 0.5 (1/2 of a measure) True + + True + + + 6, 58 + + + 87, 30 + + + 3 + + + Highlight +Viewed Note + HighlightCheckBox @@ -5079,188 +4304,18 @@ Default: 0.5 (1/2 of a measure) System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + timer1 + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MyForm System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - True - - - 6, 58 - - - 87, 30 - - - 3 - - - Highlight -Viewed Note - - - HighlightCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - VisualSettingsBox - - - 0 - - - 6, 19 - - - 75, 23 - - - 34 - - - Play (P) - - - PlayButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 5 - - - 87, 19 - - - 479, 45 - - - 36 - - - songTrackSlider - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 7 - - - 6, 48 - - - 75, 23 - - - 37 - - - Select Song - - - selectSongFile - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 8 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - 91, 55 - - - 64, 32 - - - 47 - - - Song -Volume: - - - VolumeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 1 - - - 161, 59 - - - 162, 45 - - - 46 - - - SongVolume - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 3 - - - True - - - 97, 102 - - - 86, 13 - - - 45 - - - Select File (.ogg) - - - songFileName - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 4 - 650, 20 @@ -5279,4 +4334,7 @@ Volume: 181, 59 + + 345, 59 + \ No newline at end of file diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundEngineOptions.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundEngineOptions.h deleted file mode 100644 index df65607..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundEngineOptions.h +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __E_IRRKLANG_SOUND_ENGINE_OPTIONS_H_INCLUDED__ -#define __E_IRRKLANG_SOUND_ENGINE_OPTIONS_H_INCLUDED__ - -namespace irrklang -{ - //! An enumeration for all options for starting up the sound engine - /** When using createIrrKlangDevice, use a combination of this these - as 'options' parameter to start up the engine. By default, irrKlang - uses ESEO_DEFAULT_OPTIONS, which is set to the combination - ESEO_MULTI_THREADED | ESEO_LOAD_PLUGINS | ESEO_USE_3D_BUFFERS | ESEO_PRINT_DEBUG_INFO_TO_DEBUGGER | ESEO_PRINT_DEBUG_INFO_TO_STDOUT. */ - enum E_SOUND_ENGINE_OPTIONS - { - //! If specified (default), it will make irrKlang run in a separate thread. - /** Using this flag, irrKlang will update - all streams, sounds, 3d positions and whatever automaticly. You also don't need to call ISoundEngine::update() - if irrKlang is running multithreaded. However, if you want to run irrKlang in the same thread - as your application (for easier debugging for example), don't set this. But you need to call ISoundEngine::update() - as often as you can (at least about 2-3 times per second) to make irrKlang update everything correctly then. */ - ESEO_MULTI_THREADED = 0x01, - - //! If the window of the application doesn't have the focus, irrKlang will be silent if this has been set. - /** This will only work when irrKlang is using the DirectSound output driver. */ - ESEO_MUTE_IF_NOT_FOCUSED = 0x02, - - //! Automaticly loads external plugins when starting up. - /** Plugins usually are .dll, .so or .dylib - files named for example ikpMP3.dll (= short for irrKlangPluginMP3) which are executed - after the startup of the sound engine and modify it for example to make it possible - to play back mp3 files. Plugins are being loaded from the current working directory - as well as from the position where the .exe using the irrKlang library resides. - It is also possible to load the plugins after the engine has started up using - ISoundEngine::loadPlugins(). */ - ESEO_LOAD_PLUGINS = 0x04, - - //! Uses 3D sound buffers instead of emulating them when playing 3d sounds (default). - /** If this flag is not specified, all buffers will by created - in 2D only and 3D positioning will be emulated in software, making the engine run - faster if hardware 3d audio is slow on the system. */ - ESEO_USE_3D_BUFFERS = 0x08, - - //! Prints debug messages to the debugger window. - /** irrKlang will print debug info and status messages to any windows debugger supporting - OutputDebugString() (like VisualStudio). - This is useful if your application does not capture any console output (see ESEO_PRINT_DEBUG_INFO_TO_STDOUT). */ - ESEO_PRINT_DEBUG_INFO_TO_DEBUGGER = 0x10, - - //! Prints debug messages to stdout (the ConsoleWindow). - /** irrKlang will print debug info and status messages stdout, the console window in Windows. */ - ESEO_PRINT_DEBUG_INFO_TO_STDOUT = 0x20, - - //! Uses linear rolloff for 3D sound. - /** If specified, instead of the default logarithmic one, irrKlang will - use a linear rolloff model which influences the attenuation - of the sounds over distance. The volume is interpolated linearly between the MinDistance - and MaxDistance, making it possible to adjust sounds more easily although this is not - physically correct. - Note that this option may not work when used together with the ESEO_USE_3D_BUFFERS - option when using Direct3D for example, irrKlang will then turn off ESEO_USE_3D_BUFFERS - automaticly to be able to use this option and write out a warning. */ - ESEO_LINEAR_ROLLOFF = 0x40, - - //! Default parameters when starting up the engine. - ESEO_DEFAULT_OPTIONS = ESEO_MULTI_THREADED | ESEO_LOAD_PLUGINS | ESEO_USE_3D_BUFFERS | ESEO_PRINT_DEBUG_INFO_TO_DEBUGGER | ESEO_PRINT_DEBUG_INFO_TO_STDOUT, - - //! Never used, it only forces the compiler to compile these enumeration values to 32 bit. - /** Don't use this. */ - ESEO_FORCE_32_BIT = 0x7fffffff - }; - -} // end namespace irrklang - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundOutputDrivers.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundOutputDrivers.h deleted file mode 100644 index bc3e0ea..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ESoundOutputDrivers.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __E_IRRKLANG_SOUND_OUTPUT_DRIVERS_H_INCLUDED__ -#define __E_IRRKLANG_SOUND_OUTPUT_DRIVERS_H_INCLUDED__ - -namespace irrklang -{ - //! An enumeration for all types of supported sound drivers - /** Values of this enumeration can be used as parameter when calling createIrrKlangDevice(). */ - enum E_SOUND_OUTPUT_DRIVER - { - //! Autodetects the best sound driver for the system - ESOD_AUTO_DETECT = 0, - - //! DirectSound8 sound output driver, windows only. - /** In contrast to ESOD_DIRECT_SOUND, this supports sophisticated sound effects - but may not be available on old windows versions. It behaves very similar - to ESOD_DIRECT_SOUND but also supports DX8 sound effects.*/ - ESOD_DIRECT_SOUND_8, - - //! DirectSound sound output driver, windows only. - /** This uses DirectSound 3 or above, if available. If DX8 sound effects - are needed, use ESOD_DIRECT_SOUND_8 instead. The - ESOD_DIRECT_SOUND driver may be available on more and older windows - versions than ESOD_DIRECT_SOUND_8.*/ - ESOD_DIRECT_SOUND, - - //! WinMM sound output driver, windows only. - /** Supports the ISoundMixedOutputReceiver interface using setMixedDataOutputReceiver. */ - ESOD_WIN_MM, - - //! ALSA sound output driver, linux only. - /** When using ESOD_ALSA in createIrrKlangDevice(), it is possible to set the third parameter, - 'deviceID' to the name of specific ALSA pcm device, to the irrKlang force to use this one. - Set it to 'default', or 'plug:hw' or whatever you need it to be. - Supports the ISoundMixedOutputReceiver interface using setMixedDataOutputReceiver. */ - ESOD_ALSA, - - //! Core Audio sound output driver, mac os only. - /** Supports the ISoundMixedOutputReceiver interface using setMixedDataOutputReceiver. */ - ESOD_CORE_AUDIO, - - //! Null driver, creating no sound output - ESOD_NULL, - - //! Amount of built-in sound output drivers - ESOD_COUNT, - - //! This enumeration literal is never used, it only forces the compiler to - //! compile these enumeration values to 32 bit. - ESOD_FORCE_32_BIT = 0x7fffffff - }; - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_EStreamModes.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_EStreamModes.h deleted file mode 100644 index 62d4a0f..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_EStreamModes.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __E_IRRKLANG_STREAM_MODES_H_INCLUDED__ -#define __E_IRRKLANG_STREAM_MODES_H_INCLUDED__ - -namespace irrklang -{ - //! An enumeration for all types of supported stream modes - enum E_STREAM_MODE - { - //! Autodetects the best stream mode for a specified audio data. - ESM_AUTO_DETECT = 0, - - //! Streams the audio data when needed. - ESM_STREAMING, - - //! Loads the whole audio data into the memory. - ESM_NO_STREAMING, - - //! This enumeration literal is never used, it only forces the compiler to - //! compile these enumeration values to 32 bit. - ESM_FORCE_32_BIT = 0x7fffffff - }; - -} // end namespace irrklang - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioRecorder.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioRecorder.h deleted file mode 100644 index 49b4085..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioRecorder.h +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_AUDIO_RECORDER_H_INCLUDED__ -#define __I_IRRKLANG_AUDIO_RECORDER_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_ISoundSource.h" - - -namespace irrklang -{ - class ICapturedAudioDataReceiver; - - //! Interface to an audio recorder. Create it using the createIrrKlangAudioRecorder() function. - /** It creates sound sources into an ISoundEngine which then can be played there. - See @ref recordingAudio for an example on how to use this. */ - class IAudioRecorder : public virtual IRefCounted - { - public: - - //! Starts recording audio. - /** Clears all possibly previously recorded buffered audio data and starts to record. - When finished recording audio data, call stopRecordingAudio(). - All recorded audio data gets stored into an internal audio buffer, which - can then be accessed for example using addSoundSourceFromRecordedAudio() or - getRecordedAudioData(). For recording audio data not into an internal audio - buffer, use startRecordingCustomHandledAudio(). - \param sampleRate: Sample rate of the recorded audio. - \param sampleFormat: Sample format of the recorded audio. - \param channelCount: Amount of audio channels. - \return Returns true if successfully started recording and false if not.*/ - virtual bool startRecordingBufferedAudio(ik_s32 sampleRate=22000, - ESampleFormat sampleFormat=ESF_S16, - ik_s32 channelCount=1) = 0; - - //! Starts recording audio. - /** Clears all possibly previously recorded buffered audio data and starts to record - audio data, which is delivered to a custom user callback interface. - When finished recording audio data, call stopRecordingAudio(). If instead of - recording the data to the receiver interface recording into a managed buffer - is wished, use startRecordingBufferedAudio() instead. - \param receiver: Interface to be implemented by the user, gets called once for each - captured audio data chunk. - \param sampleRate: Sample rate of the recorded audio. - \param sampleFormat: Sample format of the recorded audio. - \param channelCount: Amount of audio channels. - \return Returns true if successfully started recording and false if not. */ - virtual bool startRecordingCustomHandledAudio(ICapturedAudioDataReceiver* receiver, - ik_s32 sampleRate=22000, - ESampleFormat sampleFormat=ESF_S16, - ik_s32 channelCount=1) = 0; - - //! Stops recording audio. - virtual void stopRecordingAudio() = 0; - - //! Creates a sound source for the recorded audio data. - /** The returned sound source pointer then can be used to play back the recorded audio data - using ISoundEngine::play2D(). This method only will succeed if the audio was recorded using - startRecordingBufferedAudio() and audio recording is currently stopped. - \param soundName Name of the virtual sound file (e.g. "someRecordedAudio"). You can also use this - name when calling play3D() or play2D(). */ - virtual ISoundSource* addSoundSourceFromRecordedAudio(const char* soundName) = 0; - - //! Clears recorded audio data buffer, freeing memory. - /** This method will only succeed if audio recording is currently stopped. */ - virtual void clearRecordedAudioDataBuffer() = 0; - - //! Returns if the recorder is currently recording audio. - virtual bool isRecording() = 0; - - //! Returns the audio format of the recorded audio data. - /** Also contains informations about the length of the recorded audio stream. */ - virtual SAudioStreamFormat getAudioFormat() = 0; - - //! Returns a pointer to the recorded audio data. - /** This method will only succeed if audio recording is currently stopped and - something was recorded previously using startRecordingBufferedAudio(). - The lenght of the buffer can be retrieved using - getAudioFormat().getSampleDataSize(). Note that the pointer is only valid - as long as not clearRecordedAudioDataBuffer() is called or another sample is - recorded.*/ - virtual void* getRecordedAudioData() = 0; - - //! returns the name of the sound driver, like 'ALSA' for the alsa device. - /** Possible returned strings are "NULL", "ALSA", "CoreAudio", "winMM", - "DirectSound" and "DirectSound8". */ - virtual const char* getDriverName() = 0; - }; - - - //! Interface to be implemented by the user if access to the recorded audio data is needed. - /** Is used as parameter in IAudioRecorder::startRecordingCustomHandledAudio. */ - class ICapturedAudioDataReceiver : public IRefCounted - { - public: - - //! Gets called once for each captured audio data chunk. - /** See IAudioRecorder::startRecordingCustomHandledAudio for details. - \param audioData: Pointer to a part of the recorded audio data - \param lengthInBytes: Amount of bytes in the audioData buffer.*/ - virtual void OnReceiveAudioDataStreamChunk(unsigned char* audioData, unsigned long lengthInBytes) = 0; - }; - - -} // end namespace irrklang - - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStream.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStream.h deleted file mode 100644 index 97bfbd4..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStream.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_AUDIO_STREAM_H_INCLUDED__ -#define __I_IRRKLANG_AUDIO_STREAM_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_SAudioStreamFormat.h" - -namespace irrklang -{ - - -//! Reads and decodes audio data into an usable audio stream for the ISoundEngine -class IAudioStream : public IRefCounted -{ -public: - - //! destructor - virtual ~IAudioStream() {}; - - //! returns format of the audio stream - virtual SAudioStreamFormat getFormat() = 0; - - //! 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. - \param pos: Position in frames.*/ - virtual bool setPosition(ik_s32 pos) = 0; - - //! returns true if the audio stream is seekable - /* Some file formats like (MODs) don't support seeking */ - virtual bool getIsSeekingSupported() { return true; } - - //! tells the audio stream to read frameCountToRead 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 at least getFormat().getFrameSize()*frameCountToRead bytes big. - \param frameCountToRead: 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) = 0; -}; - - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStreamLoader.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStreamLoader.h deleted file mode 100644 index dd90ae2..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IAudioStreamLoader.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_AUDIO_STREAM_LOADER_H_INCLUDED__ -#define __I_IRRKLANG_AUDIO_STREAM_LOADER_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_IFileReader.h" - -namespace irrklang -{ - -class IAudioStream; - -//! Class which is able to create an audio file stream from a file. -class IAudioStreamLoader : public IRefCounted -{ -public: - - //! destructor - virtual ~IAudioStreamLoader() {}; - - //! Returns true if the file maybe is able to be loaded by this class. - /** This decision should be based only on the file extension (e.g. ".wav"). The given - filename string is guaranteed to be lower case. */ - virtual bool isALoadableFileExtension(const ik_c8* fileName) = 0; - - //! Creates an audio file input stream from a file - /** \return Pointer to the created audio stream. Returns 0 if loading failed. - If you no longer need the stream, you should call IAudioFileStream::drop(). - See IRefCounted::drop() for more information. */ - virtual IAudioStream* createAudioStream(IFileReader* file) = 0; -}; - - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileFactory.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileFactory.h deleted file mode 100644 index 4160acb..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileFactory.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_FILE_FACTORY_H_INCLUDED__ -#define __I_IRRKLANG_FILE_FACTORY_H_INCLUDED__ - -#include "ik_IRefCounted.h" - -namespace irrklang -{ - class IFileReader; - - //! Interface to overwrite file access in irrKlang. - /** Derive your own class from IFileFactory, overwrite the createFileReader() - method and return your own implemented IFileReader to overwrite file access of irrKlang. - Use ISoundEngine::addFileFactory() to let irrKlang know about your class. - Example code can be found in the tutorial 04.OverrideFileAccess. - */ - class IFileFactory : public virtual IRefCounted - { - public: - - virtual ~IFileFactory() {}; - - //! Opens a file for read access. - /** Derive your own class from IFileFactory, overwrite this - method and return your own implemented IFileReader to overwrite file access of irrKlang. - Use ISoundEngine::addFileFactory() to let irrKlang know about your class. - Example code can be found in the tutorial 04.OverrideFileAccess. - \param filename Name of file to open. - \return Returns a pointer to the created file interface. - The returned pointer should be dropped when no longer needed. - See IRefCounted::drop() for more information. Returns 0 if file cannot be opened. */ - virtual IFileReader* createFileReader(const ik_c8* filename) = 0; - }; - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileReader.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileReader.h deleted file mode 100644 index 818fe1a..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IFileReader.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_READ_FILE_H_INCLUDED__ -#define __I_IRRKLANG_READ_FILE_H_INCLUDED__ - -#include "ik_IRefCounted.h" - -namespace irrklang -{ - - //! Interface providing read acess to a file. - class IFileReader : public virtual IRefCounted - { - public: - - virtual ~IFileReader() {}; - - //! Reads an amount of bytes from the file. - //! \param buffer: Pointer to buffer where to read bytes will be written to. - //! \param sizeToRead: Amount of bytes to read from the file. - //! \return Returns how much bytes were read. - virtual ik_s32 read(void* buffer, ik_u32 sizeToRead) = 0; - - //! Changes position in file, returns true if successful. - //! \param finalPos: Destination position in the file. - //! \param relativeMovement: If set to true, the position in the file is - //! changed relative to current position. Otherwise the position is changed - //! from beginning of file. - //! \return Returns true if successful, otherwise false. - virtual bool seek(ik_s32 finalPos, bool relativeMovement = false) = 0; - - //! Returns size of file. - //! \return Returns the size of the file in bytes. - virtual ik_s32 getSize() = 0; - - //! Returns the current position in the file. - //! \return Returns the current position in the file in bytes. - virtual ik_s32 getPos() = 0; - - //! Returns name of file. - //! \return Returns the file name as zero terminated character string. - virtual const ik_c8* getFileName() = 0; - }; - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IRefCounted.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IRefCounted.h deleted file mode 100644 index f86e8b9..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IRefCounted.h +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_IREFERENCE_COUNTED_H_INCLUDED__ -#define __I_IRRKLANG_IREFERENCE_COUNTED_H_INCLUDED__ - -#include "ik_irrKlangTypes.h" - -namespace irrklang -{ - //! Base class of most objects of the irrKlang. - /** This class provides reference counting through the methods grab() and drop(). - It also is able to store a debug string for every instance of an object. - Most objects of irrKlang are derived from IRefCounted, and so they are reference counted. - - When you receive an object in irrKlang (for example an ISound using play2D() or - play3D()), and you no longer need the object, you have - to call drop(). This will destroy the object, if grab() was not called - in another part of you program, because this part still needs the object. - Note, that you only don't need to call drop() for all objects you receive, it - will be explicitely noted in the documentation. - - A simple example: - - If you want to play a sound, you may want to call the method - ISoundEngine::play2D. You call - ISound* mysound = engine->play2D("foobar.mp3", false, false true); - If you no longer need the sound interface, call mysound->drop(). The - sound may still play on after this because the engine still has a reference - to that sound, but you can be sure that it's memory will be released as soon - the sound is no longer used. - - If you want to add a sound source, you may want to call a method - ISoundEngine::addSoundSourceFromFile. You do this like - ISoundSource* mysource = engine->addSoundSourceFromFile("example.jpg"); - You will not have to drop the pointer to the source, because - sound sources are managed by the engine (it will live as long as the sound engine) and - the documentation says so. - */ - class IRefCounted - { - public: - - //! Constructor. - IRefCounted() - : ReferenceCounter(1) - { - } - - //! Destructor. - virtual ~IRefCounted() - { - } - - //! Grabs the object. Increments the reference counter by one. - //! Someone who calls grab() to an object, should later also call - //! drop() to it. If an object never gets as much drop() as grab() - //! calls, it will never be destroyed. - //! The IRefCounted class provides a basic reference counting mechanism - //! with its methods grab() and drop(). Most objects of irrklang - //! are derived from IRefCounted, and so they are reference counted. - //! - //! When you receive an object in irrKlang (for example an ISound using play2D() or - //! play3D()), and you no longer need the object, you have - //! to call drop(). This will destroy the object, if grab() was not called - //! in another part of you program, because this part still needs the object. - //! Note, that you only don't need to call drop() for all objects you receive, it - //! will be explicitely noted in the documentation. - //! - //! A simple example: - //! - //! If you want to play a sound, you may want to call the method - //! ISoundEngine::play2D. You call - //! ISound* mysound = engine->play2D("foobar.mp3", false, false true); - //! If you no longer need the sound interface, call mysound->drop(). The - //! sound may still play on after this because the engine still has a reference - //! to that sound, but you can be sure that it's memory will be released as soon - //! the sound is no longer used. - void grab() { ++ReferenceCounter; } - - //! When you receive an object in irrKlang (for example an ISound using play2D() or - //! play3D()), and you no longer need the object, you have - //! to call drop(). This will destroy the object, if grab() was not called - //! in another part of you program, because this part still needs the object. - //! Note, that you only don't need to call drop() for all objects you receive, it - //! will be explicitely noted in the documentation. - //! - //! A simple example: - //! - //! If you want to play a sound, you may want to call the method - //! ISoundEngine::play2D. You call - //! ISound* mysound = engine->play2D("foobar.mp3", false, false true); - //! If you no longer need the sound interface, call mysound->drop(). The - //! sound may still play on after this because the engine still has a reference - //! to that sound, but you can be sure that it's memory will be released as soon - //! the sound is no longer used. - bool drop() - { - --ReferenceCounter; - - if (!ReferenceCounter) - { - delete this; - return true; - } - - return false; - } - - private: - - ik_s32 ReferenceCounter; - }; - -} // end namespace irr - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISound.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISound.h deleted file mode 100644 index 3f267b9..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISound.h +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_H_INCLUDED__ - -#include "ik_IVirtualRefCounted.h" -#include "ik_ISoundEffectControl.h" -#include "ik_vec3d.h" - - -namespace irrklang -{ - class ISoundSource; - class ISoundStopEventReceiver; - - //! Represents a sound which is currently played. - /** The sound can be stopped, its volume or pan changed, effects added/removed - and similar using this interface. - Creating sounds is done using ISoundEngine::play2D() or ISoundEngine::play3D(). - More informations about the source of a sound can be obtained from the ISoundSource - interface. */ - class ISound : public IVirtualRefCounted - { - public: - - //! returns source of the sound which stores the filename and other informations about that sound - /** \return Returns the sound source poitner of this sound. May return 0 if the sound source - has been removed.*/ - virtual ISoundSource* getSoundSource() = 0; - - //! returns if the sound is paused - virtual void setIsPaused( bool paused = true) = 0; - - //! returns if the sound is paused - virtual bool getIsPaused() = 0; - - //! Will stop the sound and free its resources. - /** If you just want to pause the sound, use setIsPaused(). - After calling stop(), isFinished() will usually return true. - Be sure to also call ->drop() once you are done.*/ - virtual void stop() = 0; - - //! returns volume of the sound, a value between 0 (mute) and 1 (full volume). - /** (this volume gets multiplied with the master volume of the sound engine - and other parameters like distance to listener when played as 3d sound) */ - virtual ik_f32 getVolume() = 0; - - //! sets the volume of the sound, a value between 0 (mute) and 1 (full volume). - /** This volume gets multiplied with the master volume of the sound engine - and other parameters like distance to listener when played as 3d sound. */ - virtual void setVolume(ik_f32 volume) = 0; - - //! sets the pan of the sound. Takes a value between -1 and 1, 0 is center. - virtual void setPan(ik_f32 pan) = 0; - - //! returns the pan of the sound. Takes a value between -1 and 1, 0 is center. - virtual ik_f32 getPan() = 0; - - //! returns if the sound has been started to play looped - virtual bool isLooped() = 0; - - //! changes the loop mode of the sound. - /** If the sound is playing looped and it is changed to not-looped, then it - will stop playing after the loop has finished. - If it is not looped and changed to looped, the sound will start repeating to be - played when it reaches its end. - Invoking this method will not have an effect when the sound already has stopped. */ - virtual void setIsLooped(bool looped) = 0; - - //! returns if the sound has finished playing. - /** Don't mix this up with isPaused(). isFinished() returns if the sound has been - finished playing. If it has, is maybe already have been removed from the playing list of the - sound engine and calls to any other of the methods of ISound will not have any result. - If you call stop() to a playing sound will result that this function will return true - when invoked. */ - virtual bool isFinished() = 0; - - //! Sets the minimal distance if this is a 3D sound. - /** Changes the distance at which the 3D sound stops getting louder. This works - like this: As a listener approaches a 3D sound source, the sound gets louder. - Past a certain point, it is not reasonable for the volume to continue to increase. - Either the maximum (zero) has been reached, or the nature of the sound source - imposes a logical limit. This is the minimum distance for the sound source. - Similarly, the maximum distance for a sound source is the distance beyond - which the sound does not get any quieter. - The default minimum distance is 1, the default max distance is a huge number like 1000000000.0f. */ - virtual void setMinDistance(ik_f32 min) = 0; - - //! Returns the minimal distance if this is a 3D sound. - /** See setMinDistance() for details. */ - virtual ik_f32 getMinDistance() = 0; - - //! Sets the maximal distance if this is a 3D sound. - /** Changing this value is usually not necessary. Use setMinDistance() instead. - Don't change this value if you don't know what you are doing: This value causes the sound - to stop attenuating after it reaches the max distance. Most people think that this sets the - volume of the sound to 0 after this distance, but this is not true. Only change the - minimal distance (using for example setMinDistance()) to influence this. - The maximum distance for a sound source is the distance beyond which the sound does not get any quieter. - The default minimum distance is 1, the default max distance is a huge number like 1000000000.0f. */ - virtual void setMaxDistance(ik_f32 max) = 0; - - //! Returns the maximal distance if this is a 3D sound. - /** See setMaxDistance() for details. */ - virtual ik_f32 getMaxDistance() = 0; - - //! sets the position of the sound in 3d space - virtual void setPosition(vec3df position) = 0; - - //! returns the position of the sound in 3d space - virtual vec3df getPosition() = 0; - - //! sets the position of the sound in 3d space, needed for Doppler effects. - /** To use doppler effects use ISound::setVelocity to set a sounds velocity, - ISoundEngine::setListenerPosition() to set the listeners velocity and - ISoundEngine::setDopplerEffectParameters() to adjust two parameters influencing - the doppler effects intensity. */ - virtual void setVelocity(vec3df vel) = 0; - - //! returns the velocity of the sound in 3d space, needed for Doppler effects. - /** To use doppler effects use ISound::setVelocity to set a sounds velocity, - ISoundEngine::setListenerPosition() to set the listeners velocity and - ISoundEngine::setDopplerEffectParameters() to adjust two parameters influencing - the doppler effects intensity. */ - virtual vec3df getVelocity() = 0; - - //! returns the current play position of the sound in milliseconds. - /** \return Returns -1 if not implemented or possible for this sound for example - because it already has been stopped and freed internally or similar. */ - virtual ik_u32 getPlayPosition() = 0; - - //! sets the current play position of the sound in milliseconds. - /** \param pos Position in milliseconds. Must be between 0 and the value returned - by getPlayPosition(). - \return Returns true successful. False is returned for example if the sound already finished - playing and is stopped or the audio source is not seekable, for example if it - is an internet stream or a a file format not supporting seeking (a .MOD file for example). - A file can be tested if it can bee seeking using ISoundSource::getIsSeekingSupported(). */ - virtual bool setPlayPosition(ik_u32 pos) = 0; - - //! Sets the playback speed (frequency) of the sound. - /** Plays the sound at a higher or lower speed, increasing or decreasing its - frequency which makes it sound lower or higher. - Note that this feature is not available on all sound output drivers (it is on the - DirectSound drivers at least), and it does not work together with the - 'enableSoundEffects' parameter of ISoundEngine::play2D and ISoundEngine::play3D when - using DirectSound. - \param speed Factor of the speed increase or decrease. 2 is twice as fast, - 0.5 is only half as fast. The default is 1.0. - \return Returns true if sucessful, false if not. The current sound driver might not - support changing the playBack speed, or the sound was started with the - 'enableSoundEffects' parameter. */ - virtual bool setPlaybackSpeed(ik_f32 speed = 1.0f) = 0; - - //! Returns the playback speed set by setPlaybackSpeed(). Default: 1.0f. - /** See setPlaybackSpeed() for details */ - virtual ik_f32 getPlaybackSpeed() = 0; - - //! returns the play length of the sound in milliseconds. - /** Returns -1 if not known for this sound for example because its decoder - does not support length reporting or it is a file stream of unknown size. - Note: You can also use ISoundSource::getPlayLength() to get the length of - a sound without actually needing to play it. */ - virtual ik_u32 getPlayLength() = 0; - - //! Returns the sound effect control interface for this sound. - /** Sound effects such as Chorus, Distorsions, Echo, Reverb and similar can - be controlled using this. The interface pointer is only valid as long as the ISound pointer is valid. - If the ISound pointer gets dropped (IVirtualRefCounted::drop()), the ISoundEffects - may not be used any more. - \return Returns a pointer to the sound effects interface if available. The sound - has to be started via ISoundEngine::play2D() or ISoundEngine::play3D(), - with the flag enableSoundEffects=true, otherwise 0 will be returned. Note that - if the output driver does not support sound effects, 0 will be returned as well.*/ - virtual ISoundEffectControl* getSoundEffectControl() = 0; - - //! Sets the sound stop event receiver, an interface which gets called if a sound has finished playing. - /** This event is guaranteed to be called when the sound or sound stream is finished, - either because the sound reached its playback end, its sound source was removed, - ISoundEngine::stopAllSounds() has been called or the whole engine was deleted. - There is an example on how to use events in irrklang at @ref events . - \param receiver Interface to a user implementation of the sound receiver. This interface - should be as long valid as the sound exists or another stop event receiver is set. - Set this to null to set no sound stop event receiver. - \param userData: A iser data pointer, can be null. */ - virtual void setSoundStopEventReceiver(ISoundStopEventReceiver* reciever, void* userData=0) = 0; - }; - -} // end namespace irrklang - - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundDeviceList.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundDeviceList.h deleted file mode 100644 index bda2090..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundDeviceList.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_DEVICE_LIST_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_DEVICE_LIST_H_INCLUDED__ - -#include "ik_IRefCounted.h" - -namespace irrklang -{ - -//! A list of sound devices for a sound driver. Use irrklang::createSoundDeviceList() to create this list. -/** The function createIrrKlangDevice() has a parameter 'deviceID' which takes the value returned by -ISoundDeviceList::getDeviceID() and uses that device then. -The list of devices in ISoundDeviceList usually also includes the default device which is the first -entry and has an empty deviceID string ("") and the description "default device". -There is some example code on how to use the ISoundDeviceList in @ref enumeratingDevices.*/ -class ISoundDeviceList : public IRefCounted -{ -public: - - //! Returns amount of enumerated devices in the list. - virtual ik_s32 getDeviceCount() = 0; - - //! Returns the ID of the device. Use this string to identify this device in createIrrKlangDevice(). - /** \param index Index of the device, a value between 0 and ISoundDeviceList::getDeviceCount()-1. - \return Returns a pointer to a string identifying the device. The string will only as long valid - as long as the ISoundDeviceList exists. */ - virtual const char* getDeviceID(ik_s32 index) = 0; - - //! Returns description of the device. - /** \param index Index of the device, a value between 0 and ISoundDeviceList::getDeviceCount()-1. */ - virtual const char* getDeviceDescription(ik_s32 index) = 0; -}; - - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEffectControl.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEffectControl.h deleted file mode 100644 index 86ade35..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEffectControl.h +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_EFFECT_CONTROL_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_EFFECT_CONTROL_H_INCLUDED__ - -#include "ik_IVirtualRefCounted.h" -#include "ik_vec3d.h" - - -namespace irrklang -{ - //! Interface to control the active sound effects (echo, reverb,...) of an ISound object, a playing sound. - /** Sound effects such as chorus, distorsions, echo, reverb and similar can - be controlled using this. An instance of this interface can be obtained via - ISound::getSoundEffectControl(). The sound containing this interface has to be started via - ISoundEngine::play2D() or ISoundEngine::play3D() with the flag enableSoundEffects=true, - otherwise no acccess to this interface will be available. - For the DirectSound driver, these are effects available since DirectSound8. For most - effects, sounds should have a sample rate of 44 khz and should be at least - 150 milli seconds long for optimal quality when using the DirectSound driver. - Note that the interface pointer is only valid as long as - the ISound pointer is valid. If the ISound pointer gets dropped (IVirtualRefCounted::drop()), - the ISoundEffects may not be used any more. */ - class ISoundEffectControl - { - public: - - //! Disables all active sound effects - virtual void disableAllEffects() = 0; - - //! Enables the chorus sound effect or adjusts its values. - /** Chorus is a voice-doubling effect created by echoing the - original sound with a slight delay and slightly modulating the delay of the echo. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fWetDryMix Ratio of wet (processed) signal to dry (unprocessed) signal. Minimal Value:0, Maximal Value:100.0f; - \param fDepth Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Minimal Value:0, Maximal Value:100.0f; - \param fFeedback Percentage of output signal to feed back into the effect's input. Minimal Value:-99, Maximal Value:99.0f; - \param fFrequency Frequency of the LFO. Minimal Value:0, Maximal Value:10.0f; - \param sinusWaveForm True for sinus wave form, false for triangle. - \param fDelay Number of milliseconds the input is delayed before it is played back. Minimal Value:0, Maximal Value:20.0f; - \param lPhase Phase differential between left and right LFOs. Possible values: - -180, -90, 0, 90, 180 - \return Returns true if successful. */ - virtual bool enableChorusSoundEffect(ik_f32 fWetDryMix = 50, - ik_f32 fDepth = 10, - ik_f32 fFeedback = 25, - ik_f32 fFrequency = 1.1, - bool sinusWaveForm = true, - ik_f32 fDelay = 16, - ik_s32 lPhase = 90) = 0; - - //! removes the sound effect from the sound - virtual void disableChorusSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isChorusSoundEffectEnabled() = 0; - - //! Enables the Compressor sound effect or adjusts its values. - /** Compressor is a reduction in the fluctuation of a signal above a certain amplitude. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fGain Output gain of signal after Compressor. Minimal Value:-60, Maximal Value:60.0f; - \param fAttack Time before Compressor reaches its full value. Minimal Value:0.01, Maximal Value:500.0f; - \param fRelease Speed at which Compressor is stopped after input drops below fThreshold. Minimal Value:50, Maximal Value:3000.0f; - \param fThreshold Point at which Compressor begins, in decibels. Minimal Value:-60, Maximal Value:0.0f; - \param fRatio Compressor ratio. Minimal Value:1, Maximal Value:100.0f; - \param fPredelay Time after lThreshold is reached before attack phase is started, in milliseconds. Minimal Value:0, Maximal Value:4.0f; - \return Returns true if successful. */ - virtual bool enableCompressorSoundEffect( ik_f32 fGain = 0, - ik_f32 fAttack = 10, - ik_f32 fRelease = 200, - ik_f32 fThreshold = -20, - ik_f32 fRatio = 3, - ik_f32 fPredelay = 4) = 0; - - //! removes the sound effect from the sound - virtual void disableCompressorSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isCompressorSoundEffectEnabled() = 0; - - //! Enables the Distortion sound effect or adjusts its values. - /** Distortion is achieved by adding harmonics to the signal in such a way that, - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - as the level increases, the top of the waveform becomes squared off or clipped. - \param fGain Amount of signal change after distortion. Minimal Value:-60, Maximal Value:0; - \param fEdge Percentage of distortion intensity. Minimal Value:0, Maximal Value:100; - \param fPostEQCenterFrequency Center frequency of harmonic content addition. Minimal Value:100, Maximal Value:8000; - \param fPostEQBandwidth Width of frequency band that determines range of harmonic content addition. Minimal Value:100, Maximal Value:8000; - \param fPreLowpassCutoff Filter cutoff for high-frequency harmonics attenuation. Minimal Value:100, Maximal Value:8000; - \return Returns true if successful. */ - virtual bool enableDistortionSoundEffect(ik_f32 fGain = -18, - ik_f32 fEdge = 15, - ik_f32 fPostEQCenterFrequency = 2400, - ik_f32 fPostEQBandwidth = 2400, - ik_f32 fPreLowpassCutoff = 8000) = 0; - - //! removes the sound effect from the sound - virtual void disableDistortionSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isDistortionSoundEffectEnabled() = 0; - - //! Enables the Echo sound effect or adjusts its values. - /** An echo effect causes an entire sound to be repeated after a fixed delay. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fWetDryMix Ratio of wet (processed) signal to dry (unprocessed) signal. Minimal Value:0, Maximal Value:100.0f; - \param fFeedback Percentage of output fed back into input. Minimal Value:0, Maximal Value:100.0f; - \param fLeftDelay Delay for left channel, in milliseconds. Minimal Value:1, Maximal Value:2000.0f; - \param fRightDelay Delay for right channel, in milliseconds. Minimal Value:1, Maximal Value:2000.0f; - \param lPanDelay Value that specifies whether to swap left and right delays with each successive echo. Minimal Value:0, Maximal Value:1; - \return Returns true if successful. */ - virtual bool enableEchoSoundEffect(ik_f32 fWetDryMix = 50, - ik_f32 fFeedback = 50, - ik_f32 fLeftDelay = 500, - ik_f32 fRightDelay = 500, - ik_s32 lPanDelay = 0) = 0; - - //! removes the sound effect from the sound - virtual void disableEchoSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isEchoSoundEffectEnabled() = 0; - - //! Enables the Flanger sound effect or adjusts its values. - /** Flange is an echo effect in which the delay between the original - signal and its echo is very short and varies over time. The result is - sometimes referred to as a sweeping sound. The term flange originated - with the practice of grabbing the flanges of a tape reel to change the speed. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fWetDryMix Ratio of wet (processed) signal to dry (unprocessed) signal. Minimal Value:0, Maximal Value:100.0f; - \param fDepth Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Minimal Value:0, Maximal Value:100.0f; - \param fFeedback Percentage of output signal to feed back into the effect's input. Minimal Value:-99, Maximal Value:99.0f; - \param fFrequency Frequency of the LFO. Minimal Value:0, Maximal Value:10.0f; - \param triangleWaveForm True for triangle wave form, false for square. - \param fDelay Number of milliseconds the input is delayed before it is played back. Minimal Value:0, Maximal Value:20.0f; - \param lPhase Phase differential between left and right LFOs. Possible values: - -180, -90, 0, 90, 180 - \return Returns true if successful. */ - virtual bool enableFlangerSoundEffect(ik_f32 fWetDryMix = 50, - ik_f32 fDepth = 100, - ik_f32 fFeedback = -50, - ik_f32 fFrequency = 0.25f, - bool triangleWaveForm = true, - ik_f32 fDelay = 2, - ik_s32 lPhase = 0) = 0; - - //! removes the sound effect from the sound - virtual void disableFlangerSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isFlangerSoundEffectEnabled() = 0; - - //! Enables the Gargle sound effect or adjusts its values. - /** The gargle effect modulates the amplitude of the signal. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param rateHz Rate of modulation, in Hertz. Minimal Value:1, Maximal Value:1000 - \param sinusWaveForm True for sinus wave form, false for triangle. - \return Returns true if successful. */ - virtual bool enableGargleSoundEffect(ik_s32 rateHz = 20, bool sinusWaveForm = true) = 0; - - //! removes the sound effect from the sound - virtual void disableGargleSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isGargleSoundEffectEnabled() = 0; - - //! Enables the Interactive 3D Level 2 reverb sound effect or adjusts its values. - /** An implementation of the listener properties in the I3DL2 specification. Source properties are not supported. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param lRoom Attenuation of the room effect, in millibels (mB). Interval: [-10000, 0] Default: -1000 mB - \param lRoomHF Attenuation of the room high-frequency effect. Interval: [-10000, 0] default: 0 mB - \param flRoomRolloffFactor Rolloff factor for the reflected signals. Interval: [0.0, 10.0] default: 0.0 - \param flDecayTime Decay time, in seconds. Interval: [0.1, 20.0] default: 1.49s - \param flDecayHFRatio Ratio of the decay time at high frequencies to the decay time at low frequencies. Interval: [0.1, 2.0] default: 0.83 - \param lReflections Attenuation of early reflections relative to lRoom. Interval: [-10000, 1000] default: -2602 mB - \param flReflectionsDelay Delay time of the first reflection relative to the direct path in seconds. Interval: [0.0, 0.3] default: 0.007 s - \param lReverb Attenuation of late reverberation relative to lRoom, in mB. Interval: [-10000, 2000] default: 200 mB - \param flReverbDelay Time limit between the early reflections and the late reverberation relative to the time of the first reflection. Interval: [0.0, 0.1] default: 0.011 s - \param flDiffusion Echo density in the late reverberation decay in percent. Interval: [0.0, 100.0] default: 100.0 % - \param flDensity Modal density in the late reverberation decay, in percent. Interval: [0.0, 100.0] default: 100.0 % - \param flHFReference Reference high frequency, in hertz. Interval: [20.0, 20000.0] default: 5000.0 Hz - \return Returns true if successful. */ - virtual bool enableI3DL2ReverbSoundEffect(ik_s32 lRoom = -1000, - ik_s32 lRoomHF = -100, - ik_f32 flRoomRolloffFactor = 0, - ik_f32 flDecayTime = 1.49f, - ik_f32 flDecayHFRatio = 0.83f, - ik_s32 lReflections = -2602, - ik_f32 flReflectionsDelay = 0.007f, - ik_s32 lReverb = 200, - ik_f32 flReverbDelay = 0.011f, - ik_f32 flDiffusion = 100.0f, - ik_f32 flDensity = 100.0f, - ik_f32 flHFReference = 5000.0f ) = 0; - - //! removes the sound effect from the sound - virtual void disableI3DL2ReverbSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isI3DL2ReverbSoundEffectEnabled() = 0; - - //! Enables the ParamEq sound effect or adjusts its values. - /** Parametric equalizer amplifies or attenuates signals of a given frequency. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fCenter Center frequency, in hertz, The default value is 8000. Minimal Value:80, Maximal Value:16000.0f - \param fBandwidth Bandwidth, in semitones, The default value is 12. Minimal Value:1.0f, Maximal Value:36.0f - \param fGain Gain, default value is 0. Minimal Value:-15.0f, Maximal Value:15.0f - \return Returns true if successful. */ - virtual bool enableParamEqSoundEffect(ik_f32 fCenter = 8000, - ik_f32 fBandwidth = 12, - ik_f32 fGain = 0) = 0; - - //! removes the sound effect from the sound - virtual void disableParamEqSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isParamEqSoundEffectEnabled() = 0; - - //! Enables the Waves Reverb sound effect or adjusts its values. - /** \param fInGain Input gain of signal, in decibels (dB). Min/Max: [-96.0,0.0] Default: 0.0 dB. - If this sound effect is already enabled, calling this only modifies the parameters of the active effect. - \param fReverbMix Reverb mix, in dB. Min/Max: [-96.0,0.0] Default: 0.0 dB - \param fReverbTime Reverb time, in milliseconds. Min/Max: [0.001,3000.0] Default: 1000.0 ms - \param fHighFreqRTRatio High-frequency reverb time ratio. Min/Max: [0.001,0.999] Default: 0.001 - \return Returns true if successful. */ - virtual bool enableWavesReverbSoundEffect(ik_f32 fInGain = 0, - ik_f32 fReverbMix = 0, - ik_f32 fReverbTime = 1000, - ik_f32 fHighFreqRTRatio = 0.001f) = 0; - - //! removes the sound effect from the sound - virtual void disableWavesReverbSoundEffect() = 0; - - //! returns if the sound effect is active on the sound - virtual bool isWavesReverbSoundEffectEnabled() = 0; - }; - -} // end namespace irrklang - - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEngine.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEngine.h deleted file mode 100644 index fdb25e8..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundEngine.h +++ /dev/null @@ -1,436 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_ENGINE_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_ENGINE_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_vec3d.h" -#include "ik_ISoundSource.h" -#include "ik_ISound.h" -#include "ik_EStreamModes.h" -#include "ik_IFileFactory.h" -#include "ik_ISoundMixedOutputReceiver.h" - - -namespace irrklang -{ - class IAudioStreamLoader; - struct SInternalAudioInterface; - - //! Interface to the sound engine, for playing 3d and 2d sound and music. - /** This is the main interface of irrKlang. You usually would create this using - the createIrrKlangDevice() function. - */ - class ISoundEngine : public virtual irrklang::IRefCounted - { - public: - - //! returns the name of the sound driver, like 'ALSA' for the alsa device - /** Possible returned strings are "NULL", "ALSA", "CoreAudio", "winMM", - "DirectSound" and "DirectSound8". */ - virtual const char* getDriverName() = 0; - - //! loads a sound source (if not loaded already) from a file and plays it. - /** \param sourceFileName Filename of sound, like "sounds/test.wav" or "foobar.ogg". - \param playLooped plays the sound in loop mode. If set to 'false', the sound is played once, then stopped and deleted from the internal playing list. Calls to - ISound have no effect after such a non looped sound has been stopped automaticly. - \param startPaused starts the sound paused. This implies that track=true. Use this if you want to modify some of the playing - parameters before the sound actually plays. Usually you would set this parameter to true, then use the ISound interface to - modify some of the sound parameters and then call ISound::setPaused(false); - Note: You need to call ISound::drop() when setting this parameter to true and you don't need the ISound - object anymore. See 'return' for details. - \param track Makes it possible to track the sound. Causes the method to return an ISound interface. See 'return' for details. - \param streamMode Specifies if the file should be streamed or loaded completely into memory for playing. - ESM_AUTO_DETECT sets this to autodetection. Note: if the sound has been loaded or played before into the - engine, this parameter has no effect. - \param enableSoundEffects Makes it possible to use sound effects such as chorus, distorsions, echo, - reverb and similar for this sound. Sound effects can then be controlled via ISound::getSoundEffectControl(). - Only enable if necessary. - \return Only returns a pointer to an ISound if the parameters 'track', 'startPaused' or - 'enableSoundEffects' have been set to true. Note: if this method returns an ISound as result, - you HAVE to call ISound::drop() after you don't need the ISound interface anymore. Otherwise this - will cause memory waste. This method also may return 0 altough 'track', 'startPaused' or - 'enableSoundEffects' have been set to true, if the sound could not be played.*/ - virtual ISound* play2D(const char* soundFileName, - bool playLooped = false, - bool startPaused = false, - bool track = false, - E_STREAM_MODE streamMode = ESM_AUTO_DETECT, - bool enableSoundEffects = false) = 0; - - //! Plays a sound source as 2D sound with its default settings stored in ISoundSource. - /** An ISoundSource object will be created internally when playing a sound the first time, - or can be added with getSoundSource(). - \param source The sound source, specifiying sound file source and default settings for this file. - Use the other ISoundEngine::play2D() overloads if you want to specify a filename string instead of this. - \param playLooped plays the sound in loop mode. If set to 'false', the sound is played once, then stopped and deleted from the internal playing list. Calls to - ISound have no effect after such a non looped sound has been stopped automaticly. - \param startPaused starts the sound paused. This implies that track=true. Use this if you want to modify some of the playing - parameters before the sound actually plays. Usually you would set this parameter to true, then use the ISound interface to - modify some of the sound parameters and then call ISound::setPaused(false); - Note: You need to call ISound::drop() when setting this parameter to true and you don't need the ISound - object anymore. See 'return' for details. - \param track Makes it possible to track the sound. Causes the method to return an ISound interface. See 'return' for details. - \param enableSoundEffects Makes it possible to use sound effects such as chorus, distorsions, echo, - reverb and similar for this sound. Sound effects can then be controlled via ISound::getSoundEffectControl(). - Only enable if necessary. - \return Only returns a pointer to an ISound if the parameters 'track', 'startPaused' or - 'enableSoundEffects' have been set to true. Note: if this method returns an ISound as result, - you HAVE to call ISound::drop() after you don't need the ISound interface anymore. Otherwise this - will cause memory waste. This method also may return 0 altough 'track', 'startPaused' or - 'enableSoundEffects' have been set to true, if the sound could not be played.*/ - virtual ISound* play2D(ISoundSource* source, - bool playLooped = false, - bool startPaused = false, - bool track = false, - bool enableSoundEffects = false) = 0; - - //! Loads a sound source (if not loaded already) from a file and plays it as 3D sound. - /** There is some example code on how to work with 3D sound at @ref sound3d. - \param sourceFileName Filename of sound, like "sounds/test.wav" or "foobar.ogg". - \param pos Position of the 3D sound. - \param playLooped plays the sound in loop mode. If set to 'false', the sound is played once, then stopped and deleted from the internal playing list. Calls to - ISound have no effect after such a non looped sound has been stopped automaticly. - \param startPaused starts the sound paused. This implies that track=true. Use this if you want to modify some of the playing - parameters before the sound actually plays. Usually you would set this parameter to true, then use the ISound interface to - modify some of the sound parameters and then call ISound::setPaused(false); - Note: You need to call ISound::drop() when setting this parameter to true and you don't need the ISound - object anymore. See 'return' for details. - \param track Makes it possible to track the sound. Causes the method to return an ISound interface. See 'return' for details. - \param streamMode Specifies if the file should be streamed or loaded completely into memory for playing. - ESM_AUTO_DETECT sets this to autodetection. Note: if the sound has been loaded or played before into the - engine, this parameter has no effect. - \param enableSoundEffects Makes it possible to use sound effects such as chorus, distorsions, echo, - reverb and similar for this sound. Sound effects can then be controlled via ISound::getSoundEffectControl(). - Only enable if necessary. - \return Only returns a pointer to an ISound if the parameters 'track', 'startPaused' or - 'enableSoundEffects' have been set to true. Note: if this method returns an ISound as result, - you HAVE to call ISound::drop() after you don't need the ISound interface anymore. Otherwise this - will cause memory waste. This method also may return 0 altough 'track', 'startPaused' or - 'enableSoundEffects' have been set to true, if the sound could not be played.*/ - virtual ISound* play3D(const char* soundFileName, vec3df pos, - bool playLooped = false, - bool startPaused = false, - bool track = false, - E_STREAM_MODE streamMode = ESM_AUTO_DETECT, - bool enableSoundEffects = false) = 0; - - //! Plays a sound source as 3D sound with its default settings stored in ISoundSource. - /** An ISoundSource object will be created internally when playing a sound the first time, - or can be added with getSoundSource(). There is some example code on how to work with 3D sound @ref sound3d. - \param source The sound source, specifiying sound file source and default settings for this file. - Use the other ISoundEngine::play2D() overloads if you want to specify a filename string instead of this. - \param pos Position of the 3D sound. - \param playLooped plays the sound in loop mode. If set to 'false', the sound is played once, then stopped and deleted from the internal playing list. Calls to - ISound have no effect after such a non looped sound has been stopped automaticly. - \param startPaused starts the sound paused. This implies that track=true. Use this if you want to modify some of the playing - parameters before the sound actually plays. Usually you would set this parameter to true, then use the ISound interface to - modify some of the sound parameters and then call ISound::setPaused(false); - Note: You need to call ISound::drop() when setting this parameter to true and you don't need the ISound - object anymore. See 'return' for details. - \param track Makes it possible to track the sound. Causes the method to return an ISound interface. See 'return' for details. - \param enableSoundEffects Makes it possible to use sound effects such as chorus, distorsions, echo, - reverb and similar for this sound. Sound effects can then be controlled via ISound::getSoundEffectControl(). - Only enable if necessary. - \return Only returns a pointer to an ISound if the parameters 'track', 'startPaused' or - 'enableSoundEffects' have been set to true. Note: if this method returns an ISound as result, - you HAVE to call ISound::drop() after you don't need the ISound interface anymore. Otherwise this - will cause memory waste. This method also may return 0 altough 'track', 'startPaused' or - 'enableSoundEffects' have been set to true, if the sound could not be played.*/ - virtual ISound* play3D(ISoundSource* source, vec3df pos, - bool playLooped = false, - bool startPaused = false, - bool track = false, - bool enableSoundEffects = false) = 0; - - //! Stops all currently playing sounds. - virtual void stopAllSounds() = 0; - - //! Pauses or unpauses all currently playing sounds. - virtual void setAllSoundsPaused( bool bPaused = true ) = 0; - - //! Gets a sound source by sound name. Adds the sound source as file into the sound engine if not loaded already. - /** Please note: For performance reasons most ISoundEngine implementations will - not try to load the sound when calling this method, but only when play() is called - with this sound source as parameter. - \param addIfNotFound if 'true' adds the sound source to the list and returns the interface to it - if it cannot be found in the sound source list. If 'false', returns 0 if the sound - source is not in the list and does not modify the list. Default value: true. - \return Returns the sound source or 0 if not available. - Note: Don't call drop() to this pointer, it will be managed by irrKlang and - exist as long as you don't delete irrKlang or call removeSoundSource(). However, - you are free to call grab() if you want and drop() it then later of course. */ - virtual ISoundSource* getSoundSource(const ik_c8* soundName, bool addIfNotFound=true) = 0; - - //! Returns a sound source by index. - /** \param idx: Index of the loaded sound source, must by smaller than getSoundSourceCount(). - \return Returns the sound source or 0 if not available. - Note: Don't call drop() to this pointer, it will be managed by irrKlang and - exist as long as you don't delete irrKlang or call removeSoundSource(). However, - you are free to call grab() if you want and drop() it then later of course. */ - virtual ISoundSource* getSoundSource(ik_s32 index) = 0; - - //! Returns amount of loaded sound sources. - virtual ik_s32 getSoundSourceCount() = 0; - - //! Adds sound source into the sound engine as file. - /** \param fileName Name of the sound file (e.g. "sounds/something.mp3"). You can also use this - name when calling play3D() or play2D(). - \param mode Streaming mode for this sound source - \param preload If this flag is set to false (which is default) the sound engine will - not try to load the sound file when calling this method, but only when play() is called - with this sound source as parameter. Otherwise the sound will be preloaded. - \return Returns the pointer to the added sound source or 0 if not sucessful because for - example a sound already existed with that name. If not successful, the reason will be printed - into the log. Note: Don't call drop() to this pointer, it will be managed by irrKlang and - exist as long as you don't delete irrKlang or call removeSoundSource(). However, - you are free to call grab() if you want and drop() it then later of course. */ - virtual ISoundSource* addSoundSourceFromFile(const ik_c8* fileName, E_STREAM_MODE mode=ESM_AUTO_DETECT, - bool preload=false) = 0; - - //! Adds a sound source into the sound engine as memory source. - /** Note: This method only accepts a file (.wav, .ogg, etc) which is totally loaded into memory. - If you want to add a sound source from decoded plain PCM data in memory, use addSoundSourceFromPCMData() instead. - \param memory Pointer to the memory to be treated as loaded sound file. - \param sizeInBytes Size of the memory chunk, in bytes. - \param soundName Name of the virtual sound file (e.g. "sounds/something.mp3"). You can also use this - name when calling play3D() or play2D(). Hint: If you include the extension of the original file - like .ogg, .mp3 or .wav at the end of the filename, irrKlang will be able to decide better what - file format it is and might be able to start playback faster. - \param copyMemory If set to true which is default, the memory block is copied - and stored in the engine, after calling addSoundSourceFromMemory() the memory pointer can be deleted - savely. If set to false, the memory is not copied and the user takes the responsibility that - the memory block pointed to remains there as long as the sound engine or at least this sound - source exists. - \return Returns the pointer to the added sound source or 0 if not sucessful because for example a sound already - existed with that name. If not successful, the reason will be printed into the log. - Note: Don't call drop() to this pointer, it will be managed by irrKlang and exist as long as you don't - delete irrKlang or call removeSoundSource(). However, you are free to call grab() if you - want and drop() it then later of course. */ - virtual ISoundSource* addSoundSourceFromMemory(void* memory, ik_s32 sizeInBytes, const ik_c8* soundName, - bool copyMemory=true) = 0; - - - //! Adds a sound source into the sound engine from plain PCM data in memory. - /** \param memory Pointer to the memory to be treated as loaded sound file. - \param sizeInBytes Size of the memory chunk, in bytes. - \param soundName Name of the virtual sound file (e.g. "sounds/something.mp3"). You can also use this - name when calling play3D() or play2D(). - \param copyMemory If set to true which is default, the memory block is copied - and stored in the engine, after calling addSoundSourceFromPCMData() the memory pointer can be deleted - savely. If set to true, the memory is not copied and the user takes the responsibility that - the memory block pointed to remains there as long as the sound engine or at least this sound - source exists. - \return Returns the pointer to the added sound source or 0 if not sucessful because for - example a sound already existed with that name. If not successful, the reason will be printed - into the log. */ - virtual ISoundSource* addSoundSourceFromPCMData(void* memory, ik_s32 sizeInBytes, - const ik_c8* soundName, SAudioStreamFormat format, - bool copyMemory=true) = 0; - - //! Adds a sound source as alias for an existing sound source, but with a different name or optional different default settings. - /** This is useful if you want to play multiple sounds but each sound isn't necessarily one single file. - Also useful if you want to or play the same sound using different names, volumes or min and max 3D distances. - \param baseSource The sound source where this sound source should be based on. This sound - source will use the baseSource as base to access the file and similar, but it will have its - own name and its own default settings. - \param soundName Name of the new sound source to be added. - \return Returns the pointer to the added sound source or 0 if not sucessful because for - example a sound already existed with that name. If not successful, the reason will be printed - into the log.*/ - virtual ISoundSource* addSoundSourceAlias(ISoundSource* baseSource, const ik_c8* soundName) = 0; - - //! Removes a sound source from the engine, freeing the memory it occupies. - /** This will also cause all currently playing sounds of this source to be stopped. - Also note that if the source has been removed successfully, the value returned - by getSoundSourceCount() will have been decreased by one. - Removing sound sources is only necessary if you know you won't use a lot of non-streamed - sounds again. Sound sources of streamed sounds do not cost a lot of memory.*/ - virtual void removeSoundSource(ISoundSource* source) = 0; - - //! Removes a sound source from the engine, freeing the memory it occupies. - /** This will also cause all currently playing sounds of this source to be stopped. - Also note that if the source has been removed successfully, the value returned - by getSoundSourceCount() will have been decreased by one. - Removing sound sources is only necessary if you know you won't use a lot of non-streamed - sounds again. Sound sources of streamed sounds do not cost a lot of memory. */ - virtual void removeSoundSource(const ik_c8* name) = 0; - - //! Removes all sound sources from the engine - /** This will also cause all sounds to be stopped. - Removing sound sources is only necessary if you know you won't use a lot of non-streamed - sounds again. Sound sources of streamed sounds do not cost a lot of memory. */ - virtual void removeAllSoundSources() = 0; - - //! Sets master sound volume. This value is multiplied with all sounds played. - /** \param volume 0 (silent) to 1.0f (full volume) */ - virtual void setSoundVolume(ik_f32 volume) = 0; - - //! Returns master sound volume. - /* A value between 0.0 and 1.0. Default is 1.0. Can be changed using setSoundVolume(). */ - virtual ik_f32 getSoundVolume() = 0; - - //! Sets the current listener 3d position. - /** When playing sounds in 3D, updating the position of the listener every frame should be - done using this function. - \param pos Position of the camera or listener. - \param lookdir Direction vector where the camera or listener is looking into. If you have a - camera position and a target 3d point where it is looking at, this would be cam->getTarget() - cam->getAbsolutePosition(). - \param velPerSecond The velocity per second describes the speed of the listener and - is only needed for doppler effects. - \param upvector Vector pointing 'up', so the engine can decide where is left and right. - This vector is usually (0,1,0).*/ - virtual void setListenerPosition(const vec3df& pos, - const vec3df& lookdir, - const vec3df& velPerSecond = vec3df(0,0,0), - const vec3df& upVector = vec3df(0,1,0)) = 0; - - //! Updates the audio engine. This should be called several times per frame if irrKlang was started in single thread mode. - /** This updates the 3d positions of the sounds as well as their volumes, effects, - streams and other stuff. Call this several times per frame (the more the better) if you - specified irrKlang to run single threaded. Otherwise it is not necessary to use this method. - This method is being called by the scene manager automaticly if you are using one, so - you might want to ignore this. */ - virtual void update() = 0; - - //! Returns if a sound with the specified name is currently playing. - virtual bool isCurrentlyPlaying(const char* soundName) = 0; - - //! Returns if a sound with the specified source is currently playing. - virtual bool isCurrentlyPlaying(ISoundSource* source) = 0; - - //! Stops all sounds of a specific sound source - virtual void stopAllSoundsOfSoundSource(ISoundSource* source) = 0; - - //! Registers a new audio stream loader in the sound engine. - /** Use this to enhance the audio engine to support other or new file formats. - To do this, implement your own IAudioStreamLoader interface and register it - with this method */ - virtual void registerAudioStreamLoader(IAudioStreamLoader* loader) = 0; - - //! Returns if irrKlang is running in the same thread as the application or is using multithreading. - /** This basicly returns the flag set by the user when creating the sound engine.*/ - virtual bool isMultiThreaded() const = 0; - - //! Adds a file factory to the sound engine, making it possible to override file access of the sound engine. - /** Derive your own class from IFileFactory, overwrite the createFileReader() - method and return your own implemented IFileReader to overwrite file access of irrKlang. */ - virtual void addFileFactory(IFileFactory* fileFactory) = 0; - - //! Sets the default minimal distance for 3D sounds. - /** This value influences how loud a sound is heard based on its distance. - See ISound::setMinDistance() for details about what the min distance is. - It is also possible to influence this default value for every sound file - using ISoundSource::setDefaultMinDistance(). - This method only influences the initial distance value of sounds. For changing the - distance after the sound has been started to play, use ISound::setMinDistance() and ISound::setMaxDistance(). - \param minDistance Default minimal distance for 3d sounds. The default value is 1.0f.*/ - virtual void setDefault3DSoundMinDistance(ik_f32 minDistance) = 0; - - //! Returns the default minimal distance for 3D sounds. - /** This value influences how loud a sound is heard based on its distance. - You can change it using setDefault3DSoundMinDistance(). - See ISound::setMinDistance() for details about what the min distance is. - It is also possible to influence this default value for every sound file - using ISoundSource::setDefaultMinDistance(). - \return Default minimal distance for 3d sounds. The default value is 1.0f. */ - virtual ik_f32 getDefault3DSoundMinDistance() = 0; - - //! Sets the default maximal distance for 3D sounds. - /** Changing this value is usually not necessary. Use setDefault3DSoundMinDistance() instead. - Don't change this value if you don't know what you are doing: This value causes the sound - to stop attenuating after it reaches the max distance. Most people think that this sets the - volume of the sound to 0 after this distance, but this is not true. Only change the - minimal distance (using for example setDefault3DSoundMinDistance()) to influence this. - See ISound::setMaxDistance() for details about what the max distance is. - It is also possible to influence this default value for every sound file - using ISoundSource::setDefaultMaxDistance(). - This method only influences the initial distance value of sounds. For changing the - distance after the sound has been started to play, use ISound::setMinDistance() and ISound::setMaxDistance(). - \param maxDistance Default maximal distance for 3d sounds. The default value is 1000000000.0f. */ - virtual void setDefault3DSoundMaxDistance(ik_f32 maxDistance) = 0; - - //! Returns the default maximal distance for 3D sounds. - /** This value influences how loud a sound is heard based on its distance. - You can change it using setDefault3DSoundmaxDistance(), but - changing this value is usually not necessary. This value causes the sound - to stop attenuating after it reaches the max distance. Most people think that this sets the - volume of the sound to 0 after this distance, but this is not true. Only change the - minimal distance (using for example setDefault3DSoundMinDistance()) to influence this. - See ISound::setMaxDistance() for details about what the max distance is. - It is also possible to influence this default value for every sound file - using ISoundSource::setDefaultMaxDistance(). - \return Default maximal distance for 3d sounds. The default value is 1000000000.0f. */ - virtual ik_f32 getDefault3DSoundMaxDistance() = 0; - - //! Sets a rolloff factor which influences the amount of attenuation that is applied to 3D sounds. - /** The rolloff factor can range from 0.0 to 10.0, where 0 is no rolloff. 1.0 is the default - rolloff factor set, the value which we also experience in the real world. A value of 2 would mean - twice the real-world rolloff. */ - virtual void setRolloffFactor(ik_f32 rolloff) = 0; - - //! Sets parameters affecting the doppler effect. - /** \param dopplerFactor is a value between 0 and 10 which multiplies the doppler - effect. Default value is 1.0, which is the real world doppler effect, and 10.0f - would be ten times the real world doppler effect. - \param distanceFactor is the number of meters in a vector unit. The default value - is 1.0. Doppler effects are calculated in meters per second, with this parameter, - this can be changed, all velocities and positions are influenced by this. If - the measurement should be in foot instead of meters, set this value to 0.3048f - for example.*/ - virtual void setDopplerEffectParameters(ik_f32 dopplerFactor=1.0f, ik_f32 distanceFactor=1.0f) = 0; - - //! Loads irrKlang plugins from a custom path. - /** Plugins usually are .dll, .so or .dylib - files named for example ikpMP3.dll (= short for irrKlangPluginMP3) which - make it possible to play back mp3 files. Plugins are being - loaded from the current working directory at startup of the sound engine - if the parameter ESEO_LOAD_PLUGINS is set (which it is by default), but - using this method, it is possible to load plugins from a custom path in addition. - \param path Path to the plugin directory, like "C:\games\somegamegame\irrklangplugins". - \return returns true if sucessful or fals if not, for example because the path could - not be found. */ - virtual bool loadPlugins(const ik_c8* path) = 0; - - //! Returns a pointer to internal sound engine pointers, like the DirectSound interface. - /** Use this with caution. This is only exposed to make it possible for other libraries - such as Video playback packages to extend or use the sound driver irrklang uses. */ - virtual const SInternalAudioInterface& getInternalAudioInterface() = 0; - - //! Sets the OutputMixedDataReceiver, so you can receive the pure mixed output audio data while it is being played. - /** This can be used to store the sound output as .wav file or for creating a Oscillograph or similar. - This works only with software based audio drivers, that is ESOD_WIN_MM, ESOD_ALSA, and ESOD_CORE_AUDIO. - Returns true if sucessful and fals if the current audio driver doesn't support this feature. Set this to null - again once you don't need it anymore. */ - virtual bool setMixedDataOutputReceiver(ISoundMixedOutputReceiver* receiver) = 0; - }; - - - //! structure for returning pointers to the internal audio interface. - /** Use ISoundEngine::getInternalAudioInterface() to get this. */ - struct SInternalAudioInterface - { - //! IDirectSound interface, this is not null when using the ESOD_DIRECT_SOUND audio driver - void* pIDirectSound; - - //! IDirectSound8 interface, this is not null when using the ESOD_DIRECT_SOUND8 audio driver - void* pIDirectSound8; - - //! HWaveout interface, this is not null when using the ESOD_WIN_MM audio driver - void* pWinMM_HWaveOut; - - //! ALSA PCM Handle interface, this is not null when using the ESOD_ALSA audio driver - void* pALSA_SND_PCM; - - //! AudioDeviceID handle, this is not null when using the ESOD_CORE_AUDIO audio driver - ik_u32 pCoreAudioDeciceID; - }; - - - -} // end namespace irrklang - - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundMixedOutputReceiver.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundMixedOutputReceiver.h deleted file mode 100644 index 8f6d58e..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundMixedOutputReceiver.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_MIXED_OUTPUT_RECEIVER_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_MIXED_OUTPUT_RECEIVER_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_SAudioStreamFormat.h" - - -namespace irrklang -{ - - -//! Interface to be implemented by the user, which recieves the mixed output when it it played by the sound engine. -/** This can be used to store the sound output as .wav file or for creating a Oscillograph or similar. - Simply implement your own class derived from ISoundMixedOutputReceiver and use ISoundEngine::setMixedDataOutputReceiver - to let the audio driver know about it. */ -class ISoundMixedOutputReceiver -{ -public: - - //! destructor - virtual ~ISoundMixedOutputReceiver() {}; - - //! Called when a chunk of sound has been mixed and is about to be played. - /** Note: This is called from the playing thread of the sound library, so you need to - make everything you are doing in this method thread safe. Additionally, it would - be a good idea to do nothing complicated in your implementation and return as fast as possible, - otherwise sound output may be stuttering. - \param data representing the sound frames which just have been mixed. Sound data always - consists of two interleaved sound channels at 16bit per frame. - \param byteCount Amount of bytes of the data - \param playbackrate The playback rate at samples per second (usually something like 44000). - This value will not change and always be the same for an instance of an ISoundEngine. */ - virtual void OnAudioDataReady(const void* data, int byteCount, int playbackrate) = 0; - -}; - - -} // end namespace irrklang - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundSource.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundSource.h deleted file mode 100644 index 087d295..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundSource.h +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_IRR_SOUND_SOURCE_H_INCLUDED__ -#define __I_IRRKLANG_IRR_SOUND_SOURCE_H_INCLUDED__ - -#include "ik_IVirtualRefCounted.h" -#include "ik_vec3d.h" -#include "ik_EStreamModes.h" -#include "ik_SAudioStreamFormat.h" - - -namespace irrklang -{ - - //! A sound source describes an input file (.ogg, .mp3, .wav or similar) and its default settings. - /** It provides some informations about the sound source like the play lenght and - can have default settings for volume, distances for 3d etc. There is some example code on how - to use Sound sources at @ref soundSources.*/ - class ISoundSource : public IVirtualRefCounted - { - public: - - //! Returns the name of the sound source (usually, this is the file name) - virtual const ik_c8* getName() = 0; - - //! Sets the stream mode which should be used for a sound played from this source. - /** Note that if this is set to ESM_NO_STREAMING, the engine still might decide - to stream the sound if it is too big. The threashold for this can be - adjusted using ISoundSource::setForcedStreamingThreshold(). */ - virtual void setStreamMode(E_STREAM_MODE mode) = 0; - - //! Returns the detected or set type of the sound with wich the sound will be played. - /** Note: If the returned type is ESM_AUTO_DETECT, this mode will change after the - sound has been played the first time. */ - virtual E_STREAM_MODE getStreamMode() = 0; - - //! Returns the play length of the sound in milliseconds. - /** Returns -1 if not known for this sound for example because its decoder - does not support lenght reporting or it is a file stream of unknown size. - Note: If the sound never has been played before, the sound engine will have to open - the file and try to get the play lenght from there, so this call could take a bit depending - on the type of file. */ - virtual ik_u32 getPlayLength() = 0; - - //! Returns informations about the sound source: channel count (mono/stereo), frame count, sample rate, etc. - /** \return Returns the structure filled with 0 or negative values if not known for this sound for example because - because the file could not be opened or similar. - Note: If the sound never has been played before, the sound engine will have to open - the file and try to get the play lenght from there, so this call could take a bit depending - on the type of file. */ - virtual SAudioStreamFormat getAudioFormat() = 0; - - //! Returns if sounds played from this source will support seeking via ISound::setPlayPosition(). - /* If a sound is seekable depends on the file type and the audio format. For example MOD files - cannot be seeked currently. - \return Returns true of the sound source supports setPlayPosition() and false if not. - Note: If the sound never has been played before, the sound engine will have to open - the file and try to get the information from there, so this call could take a bit depending - on the type of file. */ - virtual bool getIsSeekingSupported() = 0; - - //! Sets the default volume for a sound played from this source. - /** The default value of this is 1.0f. - Note that the default volume is being multiplied with the master volume - of ISoundEngine, change this via ISoundEngine::setSoundVolume(). - //! \param volume 0 (silent) to 1.0f (full volume). Default value is 1.0f. */ - virtual void setDefaultVolume(ik_f32 volume=1.0f) = 0; - - //! Returns the default volume for a sound played from this source. - /** You can influence this default volume value using setDefaultVolume(). - Note that the default volume is being multiplied with the master volume - of ISoundEngine, change this via ISoundEngine::setSoundVolume(). - //! \return 0 (silent) to 1.0f (full volume). Default value is 1.0f. */ - virtual ik_f32 getDefaultVolume() = 0; - - //! sets the default minimal distance for 3D sounds played from this source. - /** This value influences how loud a sound is heard based on its distance. - See ISound::setMinDistance() for details about what the min distance is. - This method only influences the initial distance value of sounds. For changing the - distance while the sound is playing, use ISound::setMinDistance() and ISound::setMaxDistance(). - \param minDistance: Default minimal distance for 3D sounds from this source. Set it to a negative - value to let sounds of this source use the engine level default min distance, which - can be set via ISoundEngine::setDefault3DSoundMinDistance(). Default value is -1, causing - the default min distance of the sound engine to take effect. */ - virtual void setDefaultMinDistance(ik_f32 minDistance) = 0; - - //! Returns the default minimal distance for 3D sounds played from this source. - /** This value influences how loud a sound is heard based on its distance. - See ISound::setMinDistance() for details about what the minimal distance is. - \return Default minimal distance for 3d sounds from this source. If setDefaultMinDistance() - was set to a negative value, it will return the default value set in the engine, - using ISoundEngine::setDefault3DSoundMinDistance(). Default value is -1, causing - the default min distance of the sound engine to take effect. */ - virtual ik_f32 getDefaultMinDistance() = 0; - - //! Sets the default maximal distance for 3D sounds played from this source. - /** Changing this value is usually not necessary. Use setDefaultMinDistance() instead. - Don't change this value if you don't know what you are doing: This value causes the sound - to stop attenuating after it reaches the max distance. Most people think that this sets the - volume of the sound to 0 after this distance, but this is not true. Only change the - minimal distance (using for example setDefaultMinDistance()) to influence this. - See ISound::setMaxDistance() for details about what the max distance is. - This method only influences the initial distance value of sounds. For changing the - distance while the sound is played, use ISound::setMinDistance() - and ISound::setMaxDistance(). - \param maxDistance Default maximal distance for 3D sounds from this source. Set it to a negative - value to let sounds of this source use the engine level default max distance, which - can be set via ISoundEngine::setDefault3DSoundMaxDistance(). Default value is -1, causing - the default max distance of the sound engine to take effect. */ - virtual void setDefaultMaxDistance(ik_f32 maxDistance) = 0; - - //! returns the default maxmial distance for 3D sounds played from this source. - /** This value influences how loud a sound is heard based on its distance. - Changing this value is usually not necessary. Use setDefaultMinDistance() instead. - Don't change this value if you don't know what you are doing: This value causes the sound - to stop attenuating after it reaches the max distance. Most people think that this sets the - volume of the sound to 0 after this distance, but this is not true. Only change the - minimal distance (using for example setDefaultMinDistance()) to influence this. - See ISound::setMaxDistance() for details about what the max distance is. - \return Default maximal distance for 3D sounds from this source. If setDefaultMaxDistance() - was set to a negative value, it will return the default value set in the engine, - using ISoundEngine::setDefault3DSoundMaxDistance(). Default value is -1, causing - the default max distance of the sound engine to take effect. */ - virtual ik_f32 getDefaultMaxDistance() = 0; - - //! Forces the sound to be reloaded at next replay. - /** Sounds which are not played as streams are buffered to make it possible to - replay them without much overhead. If the sound file is altered after the sound - has been played the first time, the engine won't play the changed file then. - Calling this method makes the engine reload the file before the file is played - the next time.*/ - virtual void forceReloadAtNextUse() = 0; - - //! Sets the threshold size where irrKlang decides to force streaming a file independent of the user specified setting. - /** When specifying ESM_NO_STREAMING for playing back a sound file, irrKlang will - ignore this setting if the file is bigger than this threshold and stream the file - anyway. Please note that if an audio format loader is not able to return the - size of a sound source and returns -1 as length, this will be ignored as well - and streaming has to be forced. - \param threshold: New threshold. The value is specified in uncompressed bytes and its default value is - about one Megabyte. Set to 0 or a negative value to disable stream forcing. */ - virtual void setForcedStreamingThreshold(ik_s32 thresholdBytes) = 0; - - //! Returns the threshold size where irrKlang decides to force streaming a file independent of the user specified setting. - /** The value is specified in uncompressed bytes and its default value is - about one Megabyte. See setForcedStreamingThreshold() for details. */ - virtual ik_s32 getForcedStreamingThreshold() = 0; - - //! Returns a pointer to the loaded and decoded sample data. - /** \return Returns a pointer to the sample data. The data is provided in decoded PCM data. The - exact format can be retrieved using getAudioFormat(). Use getAudioFormat().getSampleDataSize() - for getting the amount of bytes. The returned pointer will only be valid as long as the sound - source exists. - This function will only return a pointer to the data if the - audio file is not streamed, namely ESM_NO_STREAMING. Otherwise this function will return 0. - Note: If the sound never has been played before, the sound engine will have to open - the file and decode audio data from there, so this call could take a bit depending - on the type of the file.*/ - virtual void* getSampleData() = 0; - }; - -} // end namespace irrklang - - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundStopEventReceiver.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundStopEventReceiver.h deleted file mode 100644 index 511a8b0..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_ISoundStopEventReceiver.h +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_SOUND_STOP_EVENT_RECEIVER_H_INCLUDED__ -#define __I_IRRKLANG_SOUND_STOP_EVENT_RECEIVER_H_INCLUDED__ - -#include "ik_IRefCounted.h" -#include "ik_SAudioStreamFormat.h" - - -namespace irrklang -{ - - -//! An enumeration listing all reasons for a fired sound stop event -enum E_STOP_EVENT_CAUSE -{ - //! The sound stop event was fired because the sound finished playing - ESEC_SOUND_FINISHED_PLAYING = 0, - - //! The sound stop event was fired because the sound was stopped by the user, calling ISound::stop(). - ESEC_SOUND_STOPPED_BY_USER, - - //! The sound stop event was fired because the source of the sound was removed, for example - //! because irrKlang was shut down or the user called ISoundEngine::removeSoundSource(). - ESEC_SOUND_STOPPED_BY_SOURCE_REMOVAL, - - //! This enumeration literal is never used, it only forces the compiler to - //! compile these enumeration values to 32 bit. - ESEC_FORCE_32_BIT = 0x7fffffff -}; - - -//! Interface to be implemented by the user, which recieves sound stop events. -/** The interface has only one method to be implemented by the user: OnSoundStopped(). -Implement this interface and set it via ISound::setSoundStopEventReceiver(). -The sound stop event is guaranteed to be called when a sound or sound stream is finished, -either because the sound reached its playback end, its sound source was removed, -ISoundEngine::stopAllSounds() has been called or the whole engine was deleted. */ -class ISoundStopEventReceiver -{ -public: - - //! destructor - virtual ~ISoundStopEventReceiver() {}; - - //! Called when a sound has stopped playing. - /** This is the only method to be implemented by the user. - The sound stop event is guaranteed to be called when a sound or sound stream is finished, - either because the sound reached its playback end, its sound source was removed, - ISoundEngine::stopAllSounds() has been called or the whole engine was deleted. - Please note: Sound events will occur in a different thread when the engine runs in - multi threaded mode (default). In single threaded mode, the event will happen while - the user thread is calling ISoundEngine::update(). - \param sound: Sound which has been stopped. - \param reason: The reason why the sound stop event was fired. Usually, this will be ESEC_SOUND_FINISHED_PLAYING. - When the sound was aborded by calling ISound::stop() or ISoundEngine::stopAllSounds();, this would be - ESEC_SOUND_STOPPED_BY_USER. If irrKlang was deleted or the sound source was removed, the value is - ESEC_SOUND_STOPPED_BY_SOURCE_REMOVAL. - \param userData: userData pointer set by the user when registering the interface - via ISound::setSoundStopEventReceiver(). */ - virtual void OnSoundStopped(ISound* sound, E_STOP_EVENT_CAUSE reason, void* userData) = 0; - -}; - - -} // end namespace irrklang - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IVirtualRefCounted.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IVirtualRefCounted.h deleted file mode 100644 index 86b589f..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_IVirtualRefCounted.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __I_IRRKLANG_VIRTUAL_UNKNOWN_H_INCLUDED__ -#define __I_IRRKLANG_VIRTUAL_UNKNOWN_H_INCLUDED__ - -#include "ik_irrKlangTypes.h" - - -namespace irrklang -{ - - //! Reference counting base class for objects in the Irrlicht Engine similar to IRefCounted. - /** See IRefCounted for the basics of this class. - The difference to IRefCounted is that the class has to implement reference counting - for itself. - */ - class IVirtualRefCounted - { - public: - - //! Destructor. - virtual ~IVirtualRefCounted() - { - } - - //! Grabs the object. Increments the reference counter by one. - /** To be implemented by the derived class. If you don't want to - implement this, use the class IRefCounted instead. See IRefCounted::grab() for details - of this method. */ - virtual void grab() = 0; - - //! Drops the object. Decrements the reference counter by one. - /** To be implemented by the derived class. If you don't want to - implement this, use the class IRefCounted instead. See IRefCounted::grab() for details - of this method. */ - virtual bool drop() = 0; - }; - - - -} // end namespace irrklang - - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_SAudioStreamFormat.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_SAudioStreamFormat.h deleted file mode 100644 index cc6d343..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_SAudioStreamFormat.h +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __S_IRRKLANG_AUDIO_STREAM_FORMAT_H_INCLUDED__ -#define __S_IRRKLANG_AUDIO_STREAM_FORMAT_H_INCLUDED__ - -#include "ik_IRefCounted.h" - - -namespace irrklang -{ - - //! audio sample data format enumeration for supported formats - enum ESampleFormat - { - //! one unsigned byte (0;255) - ESF_U8, - - //! 16 bit, signed (-32k;32k) - ESF_S16 - }; - - - //! structure describing an audio stream format with helper functions - struct SAudioStreamFormat - { - //! channels, 1 for mono, 2 for stereo - ik_s32 ChannelCount; - - //! amount of frames in the sample data or stream. - /** If the stream has an unknown lenght, this is -1 */ - ik_s32 FrameCount; - - //! samples per second - ik_s32 SampleRate; - - //! format of the sample data - ESampleFormat SampleFormat; - - //! returns the size of a sample of the data described by the stream data in bytes - inline ik_s32 getSampleSize() const - { - return (SampleFormat == ESF_U8) ? 1 : 2; - } - - //! returns the frame size of the stream data in bytes - inline ik_s32 getFrameSize() const - { - return ChannelCount * getSampleSize(); - } - - //! returns the size of the sample data in bytes - /* Returns an invalid negative value when the stream has an unknown lenght */ - inline ik_s32 getSampleDataSize() const - { - return getFrameSize() * FrameCount; - } - - //! returns amount of bytes per second - inline ik_s32 getBytesPerSecond() const - { - return getFrameSize() * SampleRate; - } - }; - - -} // end namespace irrklang - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_irrKlangTypes.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_irrKlangTypes.h deleted file mode 100644 index e2b1560..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_irrKlangTypes.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __IRRKLANG_TYPES_H_INCLUDED__ -#define __IRRKLANG_TYPES_H_INCLUDED__ - - -namespace irrklang -{ - - //! 8 bit unsigned variable. - /** This is a typedef for unsigned char, it ensures portability of the engine. */ - typedef unsigned char ik_u8; - - //! 8 bit signed variable. - /** This is a typedef for signed char, it ensures portability of the engine. */ - typedef signed char ik_s8; - - //! 8 bit character variable. - /** This is a typedef for char, it ensures portability of the engine. */ - typedef char ik_c8; - - - - //! 16 bit unsigned variable. - /** This is a typedef for unsigned short, it ensures portability of the engine. */ - typedef unsigned short ik_u16; - - //! 16 bit signed variable. - /** This is a typedef for signed short, it ensures portability of the engine. */ - typedef signed short ik_s16; - - - - //! 32 bit unsigned variable. - /** This is a typedef for unsigned int, it ensures portability of the engine. */ - typedef unsigned int ik_u32; - - //! 32 bit signed variable. - /** This is a typedef for signed int, it ensures portability of the engine. */ - typedef signed int ik_s32; - - - - //! 32 bit floating point variable. - /** This is a typedef for float, it ensures portability of the engine. */ - typedef float ik_f32; - - //! 64 bit floating point variable. - /** This is a typedef for double, it ensures portability of the engine. */ - typedef double ik_f64; - - - - // some constants - - const ik_f32 IK_ROUNDING_ERROR_32 = 0.000001f; - const ik_f64 IK_PI64 = 3.1415926535897932384626433832795028841971693993751; - const ik_f32 IK_PI32 = 3.14159265359f; - const ik_f32 IK_RADTODEG = 180.0f / IK_PI32; - const ik_f32 IK_DEGTORAD = IK_PI32 / 180.0f; - const ik_f64 IK_RADTODEG64 = 180.0 / IK_PI64; - const ik_f64 IK_DEGTORAD64 = IK_PI64 / 180.0; - - //! returns if a float equals the other one, taking floating - //! point rounding errors into account - inline bool equalsfloat(const ik_f32 a, const ik_f32 b, const ik_f32 tolerance = IK_ROUNDING_ERROR_32) - { - return (a + tolerance > b) && (a - tolerance < b); - } - -} // end irrklang namespace - -// ensure wchar_t type is existing for unicode support -#include - -// define the wchar_t type if not already built in. -#ifdef _MSC_VER // microsoft compiler - #ifndef _WCHAR_T_DEFINED - //! A 16 bit wide character type. - /** - Defines the wchar_t-type. - In VS6, its not possible to tell - the standard compiler to treat wchar_t as a built-in type, and - sometimes we just don't want to include the huge stdlib.h or wchar.h, - so we'll use this. - */ - typedef unsigned short wchar_t; - #define _WCHAR_T_DEFINED - #endif // wchar is not defined -#endif // microsoft compiler - - -#endif // __IRR_TYPES_H_INCLUDED__ - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_vec3d.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_vec3d.h deleted file mode 100644 index ce56669..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/ik_vec3d.h +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright (C) 2002-2018 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __IRR_IRRKLANG_VEC_3D_H_INCLUDED__ -#define __IRR_IRRKLANG_VEC_3D_H_INCLUDED__ - -#include -#include "ik_irrKlangTypes.h" - - -namespace irrklang -{ - - //! a 3d vector template class for representing vectors and points in 3d - template - class vec3d - { - public: - - vec3d(): X(0), Y(0), Z(0) {}; - vec3d(T nx, T ny, T nz) : X(nx), Y(ny), Z(nz) {}; - vec3d(const vec3d& other) :X(other.X), Y(other.Y), Z(other.Z) {}; - - //! constructor creating an irrklang vec3d from an irrlicht vector. - #ifdef __IRR_POINT_3D_H_INCLUDED__ - template - vec3d(const B& other) :X(other.X), Y(other.Y), Z(other.Z) {}; - #endif // __IRR_POINT_3D_H_INCLUDED__ - - // operators - - vec3d operator-() const { return vec3d(-X, -Y, -Z); } - - vec3d& operator=(const vec3d& other) { X = other.X; Y = other.Y; Z = other.Z; return *this; } - - vec3d operator+(const vec3d& other) const { return vec3d(X + other.X, Y + other.Y, Z + other.Z); } - vec3d& operator+=(const vec3d& other) { X+=other.X; Y+=other.Y; Z+=other.Z; return *this; } - - vec3d operator-(const vec3d& other) const { return vec3d(X - other.X, Y - other.Y, Z - other.Z); } - vec3d& operator-=(const vec3d& other) { X-=other.X; Y-=other.Y; Z-=other.Z; return *this; } - - vec3d operator*(const vec3d& other) const { return vec3d(X * other.X, Y * other.Y, Z * other.Z); } - vec3d& operator*=(const vec3d& other) { X*=other.X; Y*=other.Y; Z*=other.Z; return *this; } - vec3d operator*(const T v) const { return vec3d(X * v, Y * v, Z * v); } - vec3d& operator*=(const T v) { X*=v; Y*=v; Z*=v; return *this; } - - vec3d operator/(const vec3d& other) const { return vec3d(X / other.X, Y / other.Y, Z / other.Z); } - vec3d& operator/=(const vec3d& other) { X/=other.X; Y/=other.Y; Z/=other.Z; return *this; } - vec3d operator/(const T v) const { T i=(T)1.0/v; return vec3d(X * i, Y * i, Z * i); } - vec3d& operator/=(const T v) { T i=(T)1.0/v; X*=i; Y*=i; Z*=i; return *this; } - - bool operator<=(const vec3d&other) const { return X<=other.X && Y<=other.Y && Z<=other.Z;}; - bool operator>=(const vec3d&other) const { return X>=other.X && Y>=other.Y && Z>=other.Z;}; - - bool operator==(const vec3d& other) const { return other.X==X && other.Y==Y && other.Z==Z; } - bool operator!=(const vec3d& other) const { return other.X!=X || other.Y!=Y || other.Z!=Z; } - - // functions - - //! returns if this vector equalsfloat the other one, taking floating point rounding errors into account - bool equals(const vec3d& other) - { - return equalsfloat(X, other.X) && - equalsfloat(Y, other.Y) && - equalsfloat(Z, other.Z); - } - - void set(const T nx, const T ny, const T nz) {X=nx; Y=ny; Z=nz; } - void set(const vec3d& p) { X=p.X; Y=p.Y; Z=p.Z;} - - //! Returns length of the vector. - ik_f64 getLength() const { return sqrt(X*X + Y*Y + Z*Z); } - - //! Returns squared length of the vector. - /** This is useful because it is much faster then - getLength(). */ - ik_f64 getLengthSQ() const { return X*X + Y*Y + Z*Z; } - - //! Returns the dot product with another vector. - T dotProduct(const vec3d& other) const - { - return X*other.X + Y*other.Y + Z*other.Z; - } - - //! Returns distance from an other point. - /** Here, the vector is interpreted as point in 3 dimensional space. */ - ik_f64 getDistanceFrom(const vec3d& other) const - { - ik_f64 vx = X - other.X; ik_f64 vy = Y - other.Y; ik_f64 vz = Z - other.Z; - return sqrt(vx*vx + vy*vy + vz*vz); - } - - //! Returns squared distance from an other point. - /** Here, the vector is interpreted as point in 3 dimensional space. */ - ik_f32 getDistanceFromSQ(const vec3d& other) const - { - ik_f32 vx = X - other.X; ik_f32 vy = Y - other.Y; ik_f32 vz = Z - other.Z; - return (vx*vx + vy*vy + vz*vz); - } - - //! Calculates the cross product with another vector - vec3d crossProduct(const vec3d& p) const - { - return vec3d(Y * p.Z - Z * p.Y, Z * p.X - X * p.Z, X * p.Y - Y * p.X); - } - - //! Returns if this vector interpreted as a point is on a line between two other points. - /** It is assumed that the point is on the line. */ - bool isBetweenPoints(const vec3d& begin, const vec3d& end) const - { - ik_f32 f = (ik_f32)(end - begin).getLengthSQ(); - return (ik_f32)getDistanceFromSQ(begin) < f && - (ik_f32)getDistanceFromSQ(end) < f; - } - - //! Normalizes the vector. - vec3d& normalize() - { - T l = (T)getLength(); - if (l == 0) - return *this; - - l = (T)1.0 / l; - X *= l; - Y *= l; - Z *= l; - return *this; - } - - //! Sets the lenght of the vector to a new value - void setLength(T newlength) - { - normalize(); - *this *= newlength; - } - - //! Inverts the vector. - void invert() - { - X *= -1.0f; - Y *= -1.0f; - Z *= -1.0f; - } - - //! Rotates the vector by a specified number of degrees around the Y - //! axis and the specified center. - //! \param degrees: Number of degrees to rotate around the Y axis. - //! \param center: The center of the rotation. - void rotateXZBy(ik_f64 degrees, const vec3d& center) - { - degrees *= IK_DEGTORAD64; - T cs = (T)cos(degrees); - T sn = (T)sin(degrees); - X -= center.X; - Z -= center.Z; - set(X*cs - Z*sn, Y, X*sn + Z*cs); - X += center.X; - Z += center.Z; - } - - //! Rotates the vector by a specified number of degrees around the Z - //! axis and the specified center. - //! \param degrees: Number of degrees to rotate around the Z axis. - //! \param center: The center of the rotation. - void rotateXYBy(ik_f64 degrees, const vec3d& center) - { - degrees *= IK_DEGTORAD64; - T cs = (T)cos(degrees); - T sn = (T)sin(degrees); - X -= center.X; - Y -= center.Y; - set(X*cs - Y*sn, X*sn + Y*cs, Z); - X += center.X; - Y += center.Y; - } - - //! Rotates the vector by a specified number of degrees around the X - //! axis and the specified center. - //! \param degrees: Number of degrees to rotate around the X axis. - //! \param center: The center of the rotation. - void rotateYZBy(ik_f64 degrees, const vec3d& center) - { - degrees *= IK_DEGTORAD64; - T cs = (T)cos(degrees); - T sn = (T)sin(degrees); - Z -= center.Z; - Y -= center.Y; - set(X, Y*cs - Z*sn, Y*sn + Z*cs); - Z += center.Z; - Y += center.Y; - } - - //! Returns interpolated vector. - /** \param other: other vector to interpolate between - \param d: value between 0.0f and 1.0f. */ - vec3d getInterpolated(const vec3d& other, ik_f32 d) const - { - ik_f32 inv = 1.0f - d; - return vec3d(other.X*inv + X*d, - other.Y*inv + Y*d, - other.Z*inv + Z*d); - } - - //! Gets the Y and Z rotations of a vector. - /** Thanks to Arras on the Irrlicht forums to add this method. - \return A vector representing the rotation in degrees of - this vector. The Z component of the vector will always be 0. */ - vec3d getHorizontalAngle() - { - vec3d angle; - - angle.Y = (T)atan2(X, Z); - angle.Y *= (ik_f32)IK_RADTODEG; - - if (angle.Y < 0.0f) angle.Y += 360.0f; - if (angle.Y >= 360.0f) angle.Y -= 360.0f; - - ik_f32 z1 = (T)sqrt(X*X + Z*Z); - - angle.X = (T)atan2(z1, Y); - angle.X *= (ik_f32)IK_RADTODEG; - angle.X -= 90.0f; - - if (angle.X < 0.0f) angle.X += 360.0f; - if (angle.X >= 360) angle.X -= 360.0f; - - return angle; - } - - //! Fills an array of 4 values with the vector data (usually floats). - /** Useful for setting in shader constants for example. The fourth value - will always be 0. */ - void getAs4Values(T* array) - { - array[0] = X; - array[1] = Y; - array[2] = Z; - array[3] = 0; - } - - - // member variables - - T X, Y, Z; - }; - - - //! Typedef for a ik_f32 3d vector, a vector using floats for X, Y and Z - typedef vec3d vec3df; - - //! Typedef for an integer 3d vector, a vector using ints for X, Y and Z - typedef vec3d vec3di; - - template vec3d operator*(const S scalar, const vec3d& vector) { return vector*scalar; } - -} // end namespace irrklang - - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/include/irrKlang.h b/BAKKA Editor/irrKlang-64bit-1.6.0/include/irrKlang.h deleted file mode 100644 index 33f9ea0..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/include/irrKlang.h +++ /dev/null @@ -1,1040 +0,0 @@ -/* irrKlang.h -- interface of the 'irrKlang' library - - Copyright (C) 2002-2018 Nikolaus Gebhardt - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. -*/ - -#ifndef __IRR_KLANG_H_INCLUDED__ -#define __IRR_KLANG_H_INCLUDED__ - -#include "ik_irrKlangTypes.h" -#include "ik_vec3d.h" - -#include "ik_IRefCounted.h" -#include "ik_IVirtualRefCounted.h" - -#include "ik_ESoundOutputDrivers.h" -#include "ik_ESoundEngineOptions.h" -#include "ik_EStreamModes.h" -#include "ik_SAudioStreamFormat.h" -#include "ik_ISoundEngine.h" -#include "ik_ISoundSource.h" -#include "ik_ISound.h" -#include "ik_IAudioStream.h" -#include "ik_IAudioStreamLoader.h" -#include "ik_ISoundEffectControl.h" -#include "ik_ISoundStopEventReceiver.h" -#include "ik_IFileFactory.h" -#include "ik_IFileReader.h" -#include "ik_ISoundDeviceList.h" -#include "ik_IAudioRecorder.h" -#include "ik_ISoundMixedOutputReceiver.h" - -//! irrKlang Version -#define IRR_KLANG_VERSION "1.6.0" - -/*! \mainpage irrKlang 1.6.0 API documentation - * - *
- - * \section contents Contents - * General:
- * @ref intro
- * @ref features
- * @ref links
- * @ref tipsandtricks
- *
- * Programming irrKlang:
- * @ref concept
- * @ref playingSounds
- * @ref changingSounds
- * @ref soundSources
- * @ref sound3d
- * @ref removingSounds
- * @ref events
- * @ref memoryPlayback
- * @ref effects
- * @ref fileOverriding
- * @ref audioDecoders
- * @ref plugins
- * @ref staticLib
- * @ref enumeratingDevices
- * @ref recordingAudio
- * @ref unicode
- *
- * Short full examples:
- * @ref quickstartexample
- * @ref quickstartexample2
- *
- *
- * - * \section intro Introduction - * - * Welcome to the irrKlang API documentation. This page should give you a short overview - * over irrKlang, the high level audio library. - * In this documentation files you'll find any information you'll need to develop applications with - * irrKlang using C++. If you are looking for a tutorial on how to start, you'll - * find some on the homepage of irrKlang at - * http://www.ambiera.com/irrklang - * or inside the SDK in the directory \examples. - * - * The irrKlang library is intended to be an easy-to-use 3d and 2d sound engine, so - * this documentation is an important part of it. If you have any questions or - * suggestions, please take a look into the ambiera.com forum or just send a mail. - * - *
- *
- * - * - * \section features Features of irrKlang - * - * irrKlang is a high level 2D and 3D - * cross platform sound engine and audio library. - * It has a very simply object orientated interface and was designed to be used - * in games, scientific simulations, architectural visualizations and similar. - * irrKlang plays several file formats such as - *
    - *
  • RIFF WAVE (*.wav)
  • - *
  • Ogg Vorbis (*.ogg)
  • - *
  • MPEG-1 Audio Layer 3 (*.mp3)
  • - *
  • Free Lossless Audio Codec (*.flac)
  • - *
  • Amiga Modules (*.mod)
  • - *
  • Impulse Tracker (*.it)
  • - *
  • Scream Tracker 3 (*.s3d)
  • - *
  • Fast Tracker 2 (*.xm)
  • - *
- * It is also able to run on different operating systems and use several output drivers: - *
    - *
  • Windows 98, ME, NT 4, 2000, XP, Vista, Windows 7, Windows 8
  • - *
      - *
    • DirectSound
    • - *
    • DirectSound8
    • - *
    • WinMM
    • - *
    - *
  • Linux / *nix
  • - *
      - *
    • ALSA
    • - *
    - *
  • MacOSX (x86 and PPC)
  • - *
      - *
    • CoreAudio
    • - *
    - *
- *
- *
- *
- * - * - * - * \section links Links into the API documentation - * - * irrklang::ISoundEngine: The main class of irrKlang.
- * Class list: List of all classes with descriptions.
- * Class members: Good place to find forgotten features.
- *
- *
- *
- * - * - * - * \section tipsandtricks Tips and Tricks - * - * This section lists a few tips you might consider when implementing the sound part of your application - * using irrKlang: - * - *
    - *
  • If you can choose which audio file format is the primary one for your application, - * use .OGG files, instead of for example .MP3 files. irrKlang uses a lot less memory - * and CPU power when playing .OGGs.
  • - *
  • To keep your application simple, each time you play a sound, you can use for example - * play2D("filename.mp3") and let irrKlang handle the rest. There is no need to implement - * a preloading/caching/file management system for the audio playback. irrKlang will handle - * all this by itself and will never load a file twice.
  • - *
  • irrKlang is crashing in your application? This should not happen, irrKlang is pretty stable, - * and in most cases, this is a problem in your code: In a lot of cases the reason is simply - * a wrong call to irrklang::IRefCounted::drop(). Be sure you are doing it correctly. (If you are unsure, - * tempoarily remove all calls to irrklang::IRefCounted::drop() and see if this helps.)
  • - *
- * - *
- *
- *
- *
- * - * - * - * \section concept Starting up the Engine - * - * irrKlang is designed so that it is very easy to achieve everything, its interface should - * be very simple to use. The @ref quickstartexample shows how to play and mp3 file, and there - * is another example, @ref quickstartexample2, showing some few more details.
- * To start up the sound engine, you simply need to call createIrrKlangDevice(). To shut it down, - * call IRefCounted::drop(): - * - * \code - * #include - * - * // ... - * - * // start up the engine - * irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice(); - * - * // ... - * - * // after finished, - * // close the engine again, similar as calling 'delete' - * engine->drop(); - * \endcode - * - * The createIrrKlangDevice() function also accepts several parameters, so that you can - * specify which sound driver should be used, if plugins should be used, if irrKlang - * should run in multithreaded mode, and similar. - *
- *
- *
- *
- * - * - * - * \section playingSounds Playing Sounds - * - * Once you have irrKlang running (like in @ref concept), you can start playing sounds: - * - * \code - * engine->play2D("someSoundFile.wav"); - * \endcode - * - * This works with all supported file types. You can replace "someSoundFile.wav" with - * "someSoundFile.mp3", or "someSoundFile.ogg", for example.
- * To play a sound looped, set the second parameter to 'true': - * - * \code - * engine->play2D("myMusic.mp3", true); - * \endcode - * - * To stop this looping sound again, use engine->\link irrklang::ISoundEngine::stopAllSounds stopAllSounds()\endlink to stop all sounds, or - * irrklang::ISound::stop() if you only want to stop that single sound. @ref changingSounds - * shows how to get to that ISound interface. - *
- *
- *
- *
- * - * - * \section changingSounds Influencing Sounds during Playback - * To influence parameters of the sound such as pan, volume or playback speed during runtime, - * to get the play position or stop playback of single playing sounds, - * you can use the irrklang::ISound interface. - * irrklang::ISoundEngine::play2D (but also play3D) returns - * a pointer to this interface when its third ('startPaused') or fourth ('track') parameter - * was set to true: - * - * \code - * irrklang::ISound* snd = engine->play2D("myMusic.mp3", true, false, true); - * - * // ... - * - * if (snd) - * snd->setVolume(someNewValue); - * - * // ... - * - * if (snd) - * { - * snd->drop(); // don't forget to release the pointer once it is no longer needed by you - * snd = 0; - * } - * \endcode - * - * The irrklang::ISound interface can also be used to test if the sound has been finished, - * set event receivers, pause and unpause sounds and similar. - *
- *
- *
- *
- * - * - * \section soundSources Using Sound Sources - * - * To be more flexible playing back sounds, irrKlang uses the concept of sound sources. - * A sound source can be simply the name of a sound file, such as "sound.wav". It is possible - * to add "sound.wav" as sound source to irrKlang, and play it using the sound source pointer: - * - * \code - * irrklang::ISoundSource* shootSound = engine->addSoundSourceFromFile("shoot.wav"); - * - * engine->play2D(shootSound); - * - * // note: you don't need to drop() the shootSound if you don't use it anymore - * \endcode - * - * The advantage of using irrklang::ISoundSource is that it is possible to set - * default values for this source, such - * as volume or distances if it should be used as 3D sound: - * - * \code - * irrklang::ISoundSource* shootSound = engine->addSoundSourceFromFile("shoot.wav"); - * - * shootSound->setDefaultVolume(0.5f); - * - * // shootSound will now be played with half its sound volume by default: - * engine->play2D(shootSound); - * \endcode - * - * It is also possible to have multiple settings for the same sound file: - * - * \code - * irrklang::ISoundSource* shootSound = engine->addSoundSourceFromFile("shoot.wav"); - * irrklang::ISoundSource* shootSound2 = engine->addSoundSourceAlias(shootSound, "silentShoot"); - * - * shootSound2->setDefaultVolume(0.1f); - * - * // shootSound will now be played with 100% of its sound volume by default, - * // shootSound2 will now be played 10% of its sound volume by default. It is - * // also possible to play it using engine->play("silentShoot"), now. - * \endcode - * - * Using addSoundSourceFromMemory(), it is also possible to play sounds back directly from memory, - * without files. - * Of course, it is not necessary to use sound sources. Using irrklang::ISound, it is - * possible to change the settings of all sounds, too. But using sound sources, it is - * not necessary to do this every time a sound is played. - *
- *
- *
- *
- * - * - * - * \section sound3d 3D Sound - * - * There is nothing difficult in playing sounds in 3D using irrKlang: Instead of using - * irrklang::ISoundEngine::play2D(), just use irrklang::ISoundEngine::play3D(), which - * takes a 3D position as additional parameter: - * - * \code - * irrklang::vec3df position(23,70,90); - * engine->play3D("yourSound.wav", position); - * \endcode - * - * But to make it sound realistic, you need to set a minimal sound - * distance: If your sound is caused by a bee, it will usually have a smaller - * sound radius than for example a jet engine. You can set default values using sound sources - * (see @ref soundSources) or set these values after you have started the sound paused: - * - * \code - * irrklang::vec3df position(23,70,90); - * - * // start the sound paused: - * irrklang::ISound* snd = engine->play3D("yourSound.wav", position, false, true); - * - * if (snd) - * { - * snd->setMinDistance(30.0f); // a loud sound - * snd->setIsPaused(false); // unpause the sound - * } - * \endcode - * - * There is also the possibility to change the maxDistance, but it is only necessary to change this - * in very rare cicumstances. - * If the sound moves, it is also a good idea to update its position from time to time: - * - * \code - * if (snd) - * snd->setPosition(newPosition); - * \endcode - * - * And don't forget to drop() the sound after you don't need it anymore. If you do, it's - * nothing severe because irrKlang will still clean up the sounds resources after it has - * finished, but you still would waste some few bytes of memory: - * - * \code - * if (snd) - * { - * snd->drop(); - * snd = 0; - * } - * \endcode - * - * To update the position of yourself, the listener of the 3D sounds, use this from - * time to time: - * - * \code - * irrklang::vec3df position(0,0,0); // position of the listener - * irrklang::vec3df lookDirection(10,0,10); // the direction the listener looks into - * irrklang::vec3df velPerSecond(0,0,0); // only relevant for doppler effects - * irrklang::vec3df upVector(0,1,0); // where 'up' is in your 3D scene - * - * engine->setListenerPosition(position, lookDirection, velPerSecond, upVector); - * \endcode - * - *
- *
- *
- *
- * - * - * \section removingSounds Removing Sounds - * - * irrKlang manages the memory usage of sounds by itself, so usually, you don't have - * to care about memory management. But if you know you need to reduce the - * amount of used memory at a certain point in your program, you can do this: - * - * \code - * engine->removeAllSoundSources(); - * \endcode - * - * This will remove all sounds and also cause all sounds to be stopped. To remove single - * sounds from the engine, use: - * - * \code - * engine->removeSoundSource(pointerToSomeSoundSource); - * // or: - * engine->removeSoundSource("nameOfASoundFile.wav"); - * \endcode - * - * Note: Only removing buffered sounds will reduce the amount of memory used by irrKlang, streamed - * sounds don't occupy a lot of memory when they are not played. - *
- *
- *
- *
- * - * - * - * \section events Using Sound Events - * - * In order to wait for a sound to be finished, it is simply possible to - * poll irrklang::ISound::isFinished(). Another way would be to constantly use - * irrklang::ISoundEngine::isCurrentlyPlaying to test wether a sound with that name or source - * is currently playing. But of course, an event based approach is a lot nicer. That's why irrKlang - * supports sound events.
- * The key to sound events is the method - * \link irrklang::ISound::setSoundStopEventReceiver setSoundStopEventReceiver \endlink - * of the irrklang::ISound interface - * (See @ref changingSounds on how to get the ISound interface): - * - * \code - * irrklang::ISound* snd = engine->play2D("speech.mp3", false, false, true); - * if (snd) - * snd->setSoundStopEventReceiver(yourEventReceiver, 0); - * \endcode - * - * The optional second parameter of setSoundStopEventReceiver is a user pointer, set it to whatever you like. - * 'yourEventReceiver' must be an implementation of the irrklang::ISoundStopEventReceiver interface.
- * A whole implementation could look like this: - * - * \code - * class MySoundEndReceiver : public irrklang::ISoundStopEventReceiver - * { - * public: - * virtual void OnSoundStopped (irrklang::ISound* sound, irrklang::E_STOP_EVENT_CAUSE reason, void* userData) - * { - * // called when the sound has ended playing - * printf("sound has ended"); - * } - * } - * - * // ... - * - * MySoundEndReceiver* myReceiver = new MySoundEndReceiver(); - * irrklang::ISound* snd = engine->play2D("speech.mp3", false, false, true); - * if (snd) - * snd->setSoundStopEventReceiver(myReceiver); - * - * myReceiver->drop(); // similar to delete - * \endcode - * - * The irrklang::ISoundStopEventReceiver::OnSoundStopped() method is guaranteed to be called when a sound or sound stream has stopped, - * either because the sound reached its playback end, its sound source was removed, - * ISoundEngine::stopAllSounds() has been called or the whole engine was deleted. - *
- *
- *
- *
- * - * - * - * \section memoryPlayback Memory Playback - * - * Using irrKlang, it is easily possible to play sounds directly from memory instead out of - * files. There is an example project showing this: In the SDK, in /examples/03.MemoryPlayback. - * But in short, it simply works by adding the memory as sound source (See @ref soundSources for - * details about sound sources): - * - * \code - * engine->addSoundSourceFromMemory(pointerToMemory, memorySize, "nameforthesound.wav"); - * - * // play sound now - * engine->play2D("nameforthesound.wav"); - * \endcode - * - * Or using a sound source pointer: - * - * \code - * irrklang::ISoundSource* snd = - * engine->addSoundSourceFromMemory(pointerToMemory, memorySize, "nameforthesound.wav"); - * - * // play sound now - * engine->play2D(snd); - * \endcode - * - * Note: It is also possible to overwrite the file access directly, don't use this Memory Playback - * feature for this. See @ref fileOverriding for details. - *
- *
- *
- *
- * - * - * - * \section effects Sound Effects - * - * irrKlang supports the effects Chorus, Compressor, Distortion, Echo, Flanger - * Gargle, 3DL2Reverb, ParamEq and WavesReverb, when using the sound driver - * irrklang::ESOD_DIRECT_SOUND_8, which selected by default when using Windows.
- * - * Using the irrklang::ISound interface, you can optain the irrklang::ISoundEffectControl - * interface if the sound device supports sound effects and the last parameter ('enableSoundEffects') - * was set to true when calling play2D(): - * - * \code - * irrklang::ISound* snd = engine->play2D("sound.wav", true, false, true, ESM_AUTO_DETECT, true); - * - * if (snd) - * { - * irrklang::ISoundEffectControl* fx = snd->getSoundEffectControl(); - * if (fx) - * { - * // enable the echo sound effect for this sound - * fx->enableEchoSoundEffect(); - * } - * } - * - * snd->drop(); - * \endcode - * - * This enabled the echo sound effect for this sound. The method also supports a lot of - * parameters, and can be called multiple times to change those parameters over time if wished. - * There are a lot of other sound effects, see irrklang::ISoundEffectControl for details. - *
- *
- *
- *
- * - * - * - * \section fileOverriding Overriding File Access - * - * It is possible to let irrKlang use your own file access functions. - * This is useful if you want to read sounds from other sources than - * just files, for example from custom internet streams or - * an own encypted archive format. There is an example in the SDK in - * examples/04.OverrideFileAccess which shows this as well.
- * - * The only thing to do for this is to implement your own irrklang::IFileFactory, - * and set it in irrKlang using irrklang::ISoundEngine::addFileFactory(): - * - * \code - * // a class implementing the IFileFactory interface to override irrklang file access - * class CMyFileFactory : public irrklang::IFileFactory - * { - * public: - * - * // Opens a file for read access. Simply return 0 if file not found. - * virtual irrklang::IFileReader* createFileReader(const ik_c8* filename) - * { - * // return your own irrklang::IFileReader implementation here, for example like that: - * return new CMyReadFile(filename); - * } - * }; - * - * // ... - * - * CMyFileFactory* myFactory = new CMyFileFactory(); - * engine->addFileFactory(myFactory); - * myFactory->drop(); - * \endcode - * - * For a full example implementation, just take a look into the SDK in examples/04.OverrideFileAccess. - *
- *
- *
- *
- * - * - * - * \section audioDecoders Adding Audio Decoders - * - * To add support for new file formats, it is possible to add new audio decoders - * to irrKlang. - * The only thing to do for this is to implement your own irrklang::IAudioStreamLoader, - * and irrklang::IAudioStream, and set it in irrKlang using - * irrklang::ISoundEngine::registerAudioStreamLoader(): - * - * \code - * class NewAudioStreamLoader : public irrklang::IAudioStreamLoader - * { - * // ... returns NewAudioDecoder and the used file name suffices. - * }; - * - * class NewAudioDecoder : public irrklang::IAudioStream - * { - * public: - * // ... decodes the new file format - * }; - * - * // ... - * - * NewAudioDecoder* loader = new NewAudioDecoder(); - * engine->registerAudioStreamLoader(loader); - * loader->drop(); - * \endcode - * - * There is an example audio decoder and loader with full source in plugins/ikpMP3, which - * adds MP3 audio decoding capabilities to irrKlang. - *
- *
- *
- *
- * - * - * - * \section plugins Creating irrKlang Plugins - * - * irrKlang plugins are ikp*.dll (Windows), ikp*.so (Unix) or ikp*.dylib (MacOS) - * files which are loaded by irrKlang at startup when the - * irrklang::ESEO_LOAD_PLUGINS was set (which is default) or - * irrklang::ISoundEngine::loadPlugins() was called.
- * - * The plugin only needs to contain the following function which will be called by irrKlang: - * - * \code - * #ifdef WIN32 - * // Windows version - * __declspec(dllexport) void __stdcall irrKlangPluginInit(ISoundEngine* engine, const char* version) - * #else - * // Linux and Mac OS version - * void irrKlangPluginInit(ISoundEngine* engine, const char* version) - * #endif - * { - * // your implementation here - * } - * \endcode - * - * In there, it is for example possible to extend irrKlang with new audio decoders, - * see @ref audioDecoders for details.
- * - * There is an example plugin with full source in plugins/ikpMP3, which - * adds MP3 audio decoding capabilities to irrKlang. - *
- *
- *
- *
- * - * - * - * \section staticLib Using irrKlang as static Lib - * - * If you don't want to use the irrKlang.DLL file and link irrKlang statically, you can do this - * by simply linking to the irrKlang.lib in the bin/win32-visualstudio_lib folder. This folder - * will only available in the pro versions of irrKlang, which you get when purchasing an irrKlang - * license. - * - * To use irrKlang in this way, just define IRRKLANG_STATIC before including irrklang.h, like this: - * - * \code - * #define IRRKLANG_STATIC - * #include - * \endcode - * - * Of course, IRRKLANG_STATIC can also simply be defined in the project/compiler settings instead of - * in the source file. - *
- *
- *
- *
- * - * - * - * \section enumeratingDevices Enumerating sound devices - * - * irrKlang uses the default sound device when playing sound when started without parameters. But if you want - * irrKlang to playback sound on one specific sound device, you may want to enumerate the available - * sound devices on your system and select one of them. Use irrklang::createSoundDeviceList() for this. - * This example code shows how to print a list of all available sound devices on the current system and lets - * the user choose one of them: - * - * \code - * int main(int argc, const char** argv) - * { - * // enumerate devices - * - * irrklang::ISoundDeviceList* deviceList = createSoundDeviceList(); - * - * // ask user for a sound device - * - * printf("Devices available:\n\n"); - * - * for (int i=0; igetDeviceCount(); ++i) - * printf("%d: %s\n", i, deviceList->getDeviceDescription(i)); - * - * printf("\nselect a device using the number (or press any key to use default):\n\n"); - * int deviceNumber = getch() - '0'; - * - * // create device with the selected driver - * - * const char* deviceID = deviceList->getDeviceID(deviceNumber); - * - * ISoundEngine* engine = createIrrKlangDevice(irrklang::ESOD_AUTO_DETECT, - * irrklang::ESEO_DEFAULT_OPTIONS, - * deviceID); - * - * deviceList->drop(); // delete device list - * - * // ... use engine now - * } - * \endcode - * - * In this way, it is also possible to play back sound using two devices at the same time: Simply - * create two irrKlang devices with each a different deviceID.
- * Note: createSoundDeviceList() takes a driver type parameter (such as irrklang::ESOD_DIRECT_SOUND8), which you - * have to set to the same value as the first parameter you want to use with createIrrKlangDevice(), if it is - * other than irrklang::ESOD_AUTO_DETECT. - *
- *
- *
- *
- * - * - * - * \section recordingAudio Recording Audio - * - * irrKlang is able to record audio from sound capturing devices such as microphones (currently only - * supported in windows). Use the irrklang::IAudioRecorder interface to do this. The following example shows how - * to record some audio and play it back again using the engine: - * - * \code - * int main(int argc, const char** argv) - * { - * irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice(); - * irrklang::IAudioRecorder* recorder = irrklang::createIrrKlangAudioRecorder(engine); - * - * if (!engine || !recorder) - * { - * printf("Could not create audio engine or audio recoder\n"); - * return 1; - * } - * - * printf("\nPress any key to start recording audio...\n"); - * getch(); - * - * // record some audio - * - * recorder->startRecordingBufferedAudio(); - * - * printf("\nRECORDING. Press any key to stop...\n"); - * getch(); - * - * recorder->stopRecordingAudio(); - * - * printf("\nRecording done, recorded %dms of audio.\n", - * recorder->getAudioFormat().FrameCount * 1000 / recorder->getAudioFormat().SampleRate ); - * printf("Press any key to play back recorded audio...\n"); - * getch(); - * - * // play the recorded audio - * recorder->addSoundSourceFromRecordedAudio("myRecordedVoice"); - * engine->play2D("myRecordedVoice", true); - * - * // wait until user presses a key - * printf("\nPress any key to quit..."); - * getch(); - * - * recorder->drop(); - * engine->drop(); // delete engine - * - * return 0; - * } - * \endcode - * - * In order to select a specific audio capturing device for recording, it is necessary to enumerate - * the available devices. Simply replace the first to lines of code of the example above with code - * like this to list all devices and select one: - * - * \code - * // enumerate recording devices and ask user to select one - * - * irrklang::ISoundDeviceList* deviceList = irrklang::createAudioRecorderDeviceList(); - * - * printf("Devices available:\n\n"); - * - * for (int i=0; igetDeviceCount(); ++i) - * printf("%d: %s\n", i, deviceList->getDeviceDescription(i)); - * - * printf("\nselect a device using the number (or press any key to use default):\n\n"); - * int deviceNumber = getch() - '0'; - * - * // create recording device with the selected driver - * - * const char* deviceID = deviceList->getDeviceID(deviceNumber); - * irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice(); - * irrklang::IAudioRecorder* recorder = - * irrklang::createIrrKlangAudioRecorder(engine, irrklang::ESOD_AUTO_DETECT, deviceID); - * - * \endcode - * - *
- *
- *
- *
- * - * - * \section unicode Unicode support - * - * irrKlang supports unicode on all operating systems. Internally, it uses UTF8, and all functions accepting strings - * and file names take UTF8 strings. If you are running irrKlang on Windows, and are using the UNICODE define or using - * wchar_t* strings directly, you can do this as well. Use the irrKlang provided function makeUTF8fromUTF16string() to - * convert your wchar_t* string to a char* string. - * - * This example shows how: - * - * \code - * const wchar_t* yourFilename = L"SomeUnicodeFilename.wav"; // assuming this is the file name you get from some of your functions - * - * const int nBufferSize = 2048; // large enough, but best would be wcslen(yourFilename)*3. - * char strBuffer[nBufferSize]; - * irrklang::makeUTF8fromUTF16string(yourFilename, strBuffer, nBufferSize); - * - * // now the converted file name is in strBuffer. We can play it for example now: - * engine->play2D(strBuffer); - * \endcode - * - * Of course, you can use any other unicode converion function for this. makeUTF8fromUTF16string() is only provided - * for convenience. - *
- *
- *
- *
- * - * - * - * - * - * \section quickstartexample Quick Start Example - * - * To simply start the engine and play a mp3 file, use code like this: - * - * \code - * #include - * #include - * #pragma comment(lib, "irrKlang.lib") // link with irrKlang.dll - * - * int main(int argc, const char** argv) - * { - * irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice(); - * if (!engine) return 1; // could not start engine - * - * engine->play2D("someMusic.mp3", true); // play some mp3 file, looped - * - * std::cin.get(); // wait until user presses a key - * - * engine->drop(); // delete engine - * return 0; - * } - * \endcode - * - * A mp3 file is being played until the user presses enter in this example. - * As you can see, irrKlang uses namespaces, all of - * the classes are located in the namespace irrklang. If you don't want to write - * this in front of every class and function you are using, simply write - * - * \code - * using namespace irrklang; - * \endcode - * in front of your code, as also shown in the next example. - *
- *
- *
- *
- * - * - * - * \section quickstartexample2 Quick Start Example 2 - * - * The following is a simple interactive application, starting up the sound engine and - * playing some streaming .ogg music file and a .wav sound effect every time the user - * presses a key. - * - * \code - * #include - * #include - * using namespace irrklang; - * - * #pragma comment(lib, "irrKlang.lib") // link with irrKlang.dll - * - * - * int main(int argc, const char** argv) - * { - * // start the sound engine with default parameters - * ISoundEngine* engine = createIrrKlangDevice(); - * - * if (!engine) - * return 0; // error starting up the engine - * - * // play some sound stream, looped - * engine->play2D("../../media/helltroopers.ogg", true); - * - * std::cout << "\nHello World!\n"; - * - * char i = 0; - * - * while(i != 'q') - * { - * std::cout << "Press any key to play some sound, press 'q' to quit.\n"; - * - * // play a single sound - * engine->play2D("../../media/bell.wav"); - * - * std::cin >> i; // wait for user to press some key - * } - * - * engine->drop(); // delete engine - * return 0; - * } - * - * \endcode - */ - -#if defined(IRRKLANG_STATIC) - #define IRRKLANG_API -#else - #if (defined(WIN32) || defined(WIN64) || defined(_MSC_VER)) - #ifdef IRRKLANG_EXPORTS - #define IRRKLANG_API __declspec(dllexport) - #else - #define IRRKLANG_API __declspec(dllimport) - #endif // IRRKLANG_EXPORT - #else - #define IRRKLANG_API __attribute__((visibility("default"))) - #endif // defined(WIN32) || defined(WIN64) -#endif // IRRKLANG_STATIC - -#if defined(_STDCALL_SUPPORTED) -#define IRRKLANGCALLCONV __stdcall // Declare the calling convention. -#else -#define IRRKLANGCALLCONV -#endif // STDCALL_SUPPORTED - -//! Everything in the irrKlang Sound Engine can be found in this namespace. -namespace irrklang -{ - //! Creates an irrKlang device. The irrKlang device is the root object for using the sound engine. - /** \param driver The sound output driver to be used for sound output. Use irrklang::ESOD_AUTO_DETECT - to let irrKlang decide which driver will be best. - \param options A combination of irrklang::E_SOUND_ENGINE_OPTIONS literals. Default value is - irrklang::ESEO_DEFAULT_OPTIONS. - \param deviceID Some additional optional deviceID for the audio driver. If not needed, simple - set this to 0. - This can be used for example to set a specific ALSA output pcm device for output - ("default" or "hw", for example). For most driver types, available deviceIDs can be - enumerated using createSoundDeviceList(). - See @ref enumeratingDevices for an example or ISoundDeviceList or details. - \param sdk_version_do_not_use Don't use or change this parameter. Always set it to - IRRKLANG_SDK_VERSION, which is done by default. This is needed for sdk version checks. - \return Returns pointer to the created irrKlang device or null if the - device could not be created. If you don't need the device, use ISoundEngine::drop() to - delete it. See IRefCounted::drop() for details. - */ - IRRKLANG_API ISoundEngine* IRRKLANGCALLCONV createIrrKlangDevice( - E_SOUND_OUTPUT_DRIVER driver = ESOD_AUTO_DETECT, - int options = ESEO_DEFAULT_OPTIONS, - const char* deviceID = 0, - const char* sdk_version_do_not_use = IRR_KLANG_VERSION); - - - //! Creates a list of available sound devices for the driver type. - /** The device IDs in this list can be used as parameter to createIrrKlangDevice() to - make irrKlang use a special sound device. See @ref enumeratingDevices for an example on how - to use this. - \param driver The sound output driver of which the list is generated. Set it irrklang::ESOD_AUTO_DETECT - to let this function use the same device as createIrrKlangDevice() would choose. - \param sdk_version_do_not_use Don't use or change this parameter. Always set it to - IRRKLANG_SDK_VERSION, which is done by default. This is needed for sdk version checks. - \return Returns a pointer to the list of enumerated sound devices for the selected sound driver. - The device IDs in this list can be used as parameter to createIrrKlangDevice() to - make irrKlang use a special sound device. - After you don't need the list anymore, call ISoundDeviceList::drop() in order to free its memory. */ - IRRKLANG_API ISoundDeviceList* IRRKLANGCALLCONV createSoundDeviceList( - E_SOUND_OUTPUT_DRIVER driver = ESOD_AUTO_DETECT, - const char* sdk_version_do_not_use = IRR_KLANG_VERSION); - - - //! Creates an irrKlang audio recording device. The IAudioRecorder is the root object for recording audio. - /** If you want to play back recorded audio as well, create the ISoundEngine first using - createIrrKlangDevice() and then the IAudioRecorder using createIrrKlangAudioRecorder(), where - you set the ISoundEngine as first parameter. See @ref recordingAudio for an example on how to use this. - Note: audio recording is a very new feature a still beta in irrKlang. It currently only works in Windows - and with DirectSound (subject to change). - \param irrKlangDeviceForPlayback A pointer to the already existing sound device used for playback - of audio. Sound sources recorded with the IAudioRecorder will be added into that device so that - they can be played back there. - \param driver The sound output driver to be used for recording audio. Use irrklang::ESOD_AUTO_DETECT - to let irrKlang decide which driver will be best. - \param deviceID Some additional optional deviceID for the audio driver. If not needed, simple - set this to 0. Use createAudioRecorderDeviceList() to get a list of all deviceIDs. - \param sdk_version_do_not_use Don't use or change this parameter. Always set it to - IRRKLANG_SDK_VERSION, which is done by default. This is needed for sdk version checks. - \return Returns pointer to the created irrKlang device or null if the - device could not be created. If you don't need the device, use ISoundEngine::drop() to - delete it. See IRefCounted::drop() for details. - */ - IRRKLANG_API IAudioRecorder* IRRKLANGCALLCONV createIrrKlangAudioRecorder( - ISoundEngine* irrKlangDeviceForPlayback, - E_SOUND_OUTPUT_DRIVER driver = ESOD_AUTO_DETECT, - const char* deviceID = 0, - const char* sdk_version_do_not_use = IRR_KLANG_VERSION); - - //! Creates a list of available recording devices for the driver type. - /** The device IDs in this list can be used as parameter to createIrrKlangAudioRecorder() to - make irrKlang use a special recording device. - \param driver The sound output driver of which the list is generated. Set it irrklang::ESOD_AUTO_DETECT - to let this function use the same device as createIrrKlangDevice() would choose. - \param sdk_version_do_not_use Don't use or change this parameter. Always set it to - IRRKLANG_SDK_VERSION, which is done by default. This is needed for sdk version checks. - \return Returns a pointer to the list of enumerated recording devices for the selected sound driver. - The device IDs in this list can be used as parameter to createIrrKlangAudioRecorder() to - make irrKlang use a special sound device. - After you don't need the list anymore, call ISoundDeviceList::drop() in order to free its memory. */ - IRRKLANG_API ISoundDeviceList* IRRKLANGCALLCONV createAudioRecorderDeviceList( - E_SOUND_OUTPUT_DRIVER driver = ESOD_AUTO_DETECT, - const char* sdk_version_do_not_use = IRR_KLANG_VERSION); - - - //! Converts a wchar_t string to an utf8 string, useful when using Windows in unicode mode. - /** irrKlang works with unicode file names, and accepts char* strings as parameters for names and filenames. - If you are running irrKlang in Windows, and working with wchar_t* pointers instead of char* ones, - you can use this function to create a char* (UTF8) representation of your wchar_t* (UTF16) string. - Works for filenames and other strings. - \param pInputString zero terminated input string. - \param pOutputBuffer the buffer where the converted string is written to. Be sure that this buffer - has a big enough size. A good size would be three times the string length of your input buffer, like - wcslen(yourInputBuffer)*3. Because each wchar_t can be represented by up to 3 chars. - \param outputBufferSize size of your output buffer. - \return Returns true if successful, and false if not. If 'false' is returned, maybe your buffer was too small. */ - IRRKLANG_API bool IRRKLANGCALLCONV makeUTF8fromUTF16string( - const wchar_t* pInputString, char* pOutputBuffer, int outputBufferSize); - - -} // end namespace irrklang - - -/*! \file irrKlang.h - \brief Main header file of the irrKlang sound library, the only file needed to include. -*/ - -#endif - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.exp b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.exp deleted file mode 100644 index 1bc0d7974e452a4cea693373ea8d09eaef227024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2329 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

mhA6(GP?ER);?il&JQ4@tX&MUwz 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 z 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�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 S#TIJ7)efS9&!_(HKYsx}D)vYK literal 0 HcmV?d00001 diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll new file mode 100644 index 0000000000000000000000000000000000000000..b9134000c3d2185e5190823875644310d0e799ea GIT binary patch literal 183296 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

eA+7wR4{{b{OpgB!y%O2DsE6G9_ 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

m1-n1@3ICRYJ0`FG$tmq~-XPkBM9`sw|jZk_})a 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

rda}le_$g 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


-sU-rB{D;&;kcf8F5!!2j|+j3{?2>C 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±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

ZPk3tqA=Klr)sg~6|{ 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%0Df#*qT{ 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 PS8#TTsF82~Z+QJ5{nlDn literal 0 HcmV?d00001 diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.cpp b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.cpp deleted file mode 100644 index 448eac6..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2002-2007 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#include "CIrrKlangAudioStreamLoaderMP3.h" -#include "CIrrKlangAudioStreamMP3.h" -#include - - -namespace irrklang -{ - - -CIrrKlangAudioStreamLoaderMP3::CIrrKlangAudioStreamLoaderMP3() -{ -} - - -//! Returns true if the file maybe is able to be loaded by this class. -bool CIrrKlangAudioStreamLoaderMP3::isALoadableFileExtension(const ik_c8* fileName) -{ - return strstr(fileName, ".mp3") != 0; -} - - -//! Creates an audio file input stream from a file -IAudioStream* CIrrKlangAudioStreamLoaderMP3::createAudioStream(irrklang::IFileReader* file) -{ - CIrrKlangAudioStreamMP3* stream = new CIrrKlangAudioStreamMP3(file); - - if (stream && !stream->isOK()) - { - stream->drop(); - stream = 0; - } - - return stream; -} - - -} // end namespace irrklang - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.h deleted file mode 100644 index 6c9ac77..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamLoaderMP3.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2002-2007 Nikolaus Gebhardt -// This file is part of the "irrKlang" library. -// For conditions of distribution and use, see copyright notice in irrKlang.h - -#ifndef __C_IRRKLANG_AUDIO_STREAM_LOADER_MP3_H_INCLUDED__ -#define __C_IRRKLANG_AUDIO_STREAM_LOADER_MP3_H_INCLUDED__ - -#include - -namespace irrklang -{ - //! Class which is able to create an audio file stream from a file. - class CIrrKlangAudioStreamLoaderMP3 : public IAudioStreamLoader - { - public: - - CIrrKlangAudioStreamLoaderMP3(); - - //! Returns true if the file maybe is able to be loaded by this class. - /** This decision should be based only on the file extension (e.g. ".wav") */ - virtual bool isALoadableFileExtension(const ik_c8* fileName); - - //! Creates an audio file input stream from a file - /** \return Pointer to the created audio stream. Returns 0 if loading failed. - If you no longer need the stream, you should call IAudioFileStream::drop(). - See IRefCounted::drop() for more information. */ - virtual IAudioStream* createAudioStream(irrklang::IFileReader* file); - }; - -} // end namespace irrklang - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.cpp b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.cpp deleted file mode 100644 index 0deed57..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.cpp +++ /dev/null @@ -1,397 +0,0 @@ -// 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 , based on -// libavcodec from ffmpeg (http://ffmpeg.sourceforge.net/). -// See license.txt for license details of this plugin. - -#include "CIrrKlangAudioStreamMP3.h" -#include -#include // free, malloc and realloc -#include - -namespace irrklang -{ - -CIrrKlangAudioStreamMP3::CIrrKlangAudioStreamMP3(IFileReader* file) -: File(file), TheMPAuDecContext(0), InputPosition(0), InputLength(0), - DecodeBuffer(0), FirstFrameRead(false), EndOfFileReached(0), - FileBegin(0), Position(0) -{ - if (File) - { - File->grab(); - - TheMPAuDecContext = new MPAuDecContext(); - - if (!TheMPAuDecContext || mpaudec_init(TheMPAuDecContext) < 0) - { - File->drop(); - File = 0; - delete TheMPAuDecContext; - TheMPAuDecContext = 0; - return; - } - - // init, get format - - DecodeBuffer = new ik_u8[MPAUDEC_MAX_AUDIO_FRAME_SIZE]; - - if (File->getSize()>0) - { - // seekable file, now parse file to get size - // (needed to make it possible for the engine to loop a stream correctly) - - skipID3IfNecessary(); - - TheMPAuDecContext->parse_only = 1; - Format.FrameCount = 0; - - while(!EndOfFileReached) - { - if (!decodeFrame()) - break; - - Format.FrameCount += TheMPAuDecContext->frame_size; - - if (!EndOfFileReached /*&& File->isSeekable()*/ ) - { - // to be able to seek in the stream, store offsets and sizes - - SFramePositionData data; - data.size = TheMPAuDecContext->frame_size; - data.offset = File->getPos() - (InputLength - InputPosition) - TheMPAuDecContext->coded_frame_size; - - FramePositionData.push_back(data); - } - } - - TheMPAuDecContext->parse_only = 0; - setPosition(0); - } - else - decodeFrame(); // decode first frame to read audio format - - if (!TheMPAuDecContext->channels || - !TheMPAuDecContext->sample_rate ) - { - File->drop(); - File = 0; - delete TheMPAuDecContext; - TheMPAuDecContext = 0; - return; - } - } -} - -CIrrKlangAudioStreamMP3::~CIrrKlangAudioStreamMP3() -{ - if (File) - File->drop(); - - if (TheMPAuDecContext) - { - mpaudec_clear(TheMPAuDecContext); - delete TheMPAuDecContext; - } - - delete [] DecodeBuffer; -} - - - -//! returns format of the audio stream -SAudioStreamFormat CIrrKlangAudioStreamMP3::getFormat() -{ - return Format; -} - - -//! tells the audio stream to read n audio frames into the specified buffer -ik_s32 CIrrKlangAudioStreamMP3::readFrames(void* target, ik_s32 frameCountToRead) -{ - const int frameSize = Format.getFrameSize(); - - int framesRead = 0; - ik_u8* out = (ik_u8*)target; - - while (framesRead < frameCountToRead) - { - // no more samples? ask the MP3 for more - if (DecodedQueue.getSize() < frameSize) - { - if (!decodeFrame() || EndOfFileReached) - return framesRead; - - // if the buffer is still empty, we are done - if (DecodedQueue.getSize() < frameSize) - return framesRead; - } - - const int framesLeft = frameCountToRead - framesRead; - const int dequeSize = DecodedQueue.getSize() / frameSize; - const int framesToRead = framesLeft < dequeSize ? framesLeft : dequeSize; - - DecodedQueue.read(out, framesToRead * frameSize); - - out += framesToRead * frameSize; - framesRead += framesToRead; - Position += framesToRead; - } - - return framesRead; -} - - - -bool CIrrKlangAudioStreamMP3::decodeFrame() -{ - int outputSize = 0; - - while (!outputSize) - { - if (InputPosition == InputLength) - { - InputPosition = 0; - InputLength = File->read(InputBuffer, IKP_MP3_INPUT_BUFFER_SIZE); - - if (InputLength == 0) - { - EndOfFileReached = true; - return true; - } - } - - int rv = mpaudec_decode_frame( TheMPAuDecContext, (ik_s16*)DecodeBuffer, - &outputSize, - (ik_u8*)InputBuffer + InputPosition, - InputLength - InputPosition); - - if (rv < 0) - return false; - - InputPosition += rv; - } // end while - - if (!FirstFrameRead) - { - Format.ChannelCount = TheMPAuDecContext->channels; - Format.SampleRate = TheMPAuDecContext->sample_rate; - Format.SampleFormat = ESF_S16; - Format.FrameCount = -1; // unknown lenght - - FirstFrameRead = true; - } - else - if (TheMPAuDecContext->channels != Format.ChannelCount || - TheMPAuDecContext->sample_rate != Format.SampleRate) - { - // Can't handle format changes mid-stream. - return false; - } - - if (!TheMPAuDecContext->parse_only) - { - if (outputSize < 0) - { - // Couldn't decode this frame. Too bad, already lost it. - // This should only happen when seeking. - - outputSize = TheMPAuDecContext->frame_size; - memset(DecodeBuffer, 0, outputSize * Format.getFrameSize()); - } - - DecodedQueue.write(DecodeBuffer, outputSize); - } - - return true; -} - - - -//! 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. */ -bool CIrrKlangAudioStreamMP3::setPosition(ik_s32 pos) -{ - if (!File || !TheMPAuDecContext) - return false; - - if (pos == 0) - { - // usually done for looping, just reset to start - - File->seek(FileBegin); // skip possible ID3 header - - EndOfFileReached = false; - - DecodedQueue.clear(); - - MPAuDecContext oldContext = *TheMPAuDecContext; - - mpaudec_clear(TheMPAuDecContext); - mpaudec_init(TheMPAuDecContext); - - TheMPAuDecContext->bit_rate = oldContext.bit_rate; - TheMPAuDecContext->channels = oldContext.channels; - TheMPAuDecContext->frame_size = oldContext.frame_size; - TheMPAuDecContext->sample_rate = oldContext.sample_rate; - - InputPosition = 0; - InputLength = 0; - Position = 0; - CurrentFramePosition = 0; - - return true; - } - else - { - // user wants to seek in the stream, so do this here - - int scan_position = 0; - int target_frame = 0; - int frame_count = (int)FramePositionData.size(); - - while (target_frame < frame_count) - { - int frame_size = FramePositionData[target_frame].size; - - if (pos <= scan_position + frame_size) - break; - else - { - scan_position += frame_size; - target_frame++; - } - } - - - const int MAX_FRAME_DEPENDENCY = 10; - target_frame = std::max(0, target_frame - MAX_FRAME_DEPENDENCY); - setPosition(0); - - File->seek(FramePositionData[target_frame].offset, false); - - int i; - for (i = 0; i < target_frame; i++) - { - if (i>=(int)FramePositionData.size()) - { - // internal error - setPosition(0); - return false; - } - - Position += FramePositionData[i].size; - } - - if (!decodeFrame() || EndOfFileReached) - { - setPosition(0); - return false; - } - - int frames_to_consume = pos - Position; // PCM frames now - if (frames_to_consume > 0) - { - ik_u8 *buf = new ik_u8[frames_to_consume * Format.getFrameSize()]; - readFrames(buf, frames_to_consume); - delete[] buf; - } - - return true; - } - - return false; -} - - -CIrrKlangAudioStreamMP3::QueueBuffer::QueueBuffer() -{ - Capacity = 256; - Size = 0; - - Buffer = (ik_u8*)malloc(Capacity); -} - - -CIrrKlangAudioStreamMP3::QueueBuffer::~QueueBuffer() -{ - free(Buffer); -} - -int CIrrKlangAudioStreamMP3::QueueBuffer::getSize() -{ - return Size; -} - -void CIrrKlangAudioStreamMP3::QueueBuffer::write(const void* buffer, int size) -{ - bool needRealloc = false; - - while (size + Size > Capacity) - { - Capacity *= 2; - needRealloc = true; - } - - if (needRealloc) - { - Buffer = (ik_u8*)realloc(Buffer, Capacity); - } - - memcpy(Buffer + Size, buffer, size); - Size += size; -} - - -int CIrrKlangAudioStreamMP3::QueueBuffer::read(void* buffer, int size) -{ - int toRead = size < Size ? size : Size; - - memcpy(buffer, Buffer, toRead); - memmove(Buffer, Buffer + toRead, Size - toRead); - - Size -= toRead; - return toRead; -} - - -void CIrrKlangAudioStreamMP3::QueueBuffer::clear() -{ - Size = 0; -} - - -void CIrrKlangAudioStreamMP3::skipID3IfNecessary() -{ - char header[10]; - int read = File->read(&header, 10); - - if (read == 10 && - header[0] == 'I' && header[1] == 'D' && header[2] == '3') - { - int versionMajor = header[3]; - int versionMinor = header[4]; - int flags = header[5]; - - // IDv2 size looks like the following: ID3v2 size 4 * %0xxxxxxx. - // Sick, but that's how it works. - - int size = 0; - size = (header[6] & 0x7f) << (3*7); - size |= (header[7] & 0x7f) << (2*7); - size |= (header[8] & 0x7f) << (1*7); - size |= (header[9] & 0x7f) ; - - size += 10; // header size - - FileBegin = size; - File->seek(FileBegin); - } - else - File->seek(0); -} - - -} // end namespace irrklang diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h deleted file mode 100644 index c9b3aae..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/CIrrKlangAudioStreamMP3.h +++ /dev/null @@ -1,106 +0,0 @@ -// 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 , 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 -#include -#include -#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 FramePositionData; - QueueBuffer DecodedQueue; - }; - - -} // end namespace irrklang - -#endif diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/bits.c b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/bits.c deleted file mode 100644 index d7657e4..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/bits.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Common bit i/o utils - * Copyright (c) 2000, 2001 Fabrice Bellard. - * - * This library 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 2 of the License, or (at your option) any later version. - * - * This library 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 along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Modified by Matt Campbell for the stand-alone - * mpaudec library. Based on common.c from libavcodec. - */ - -#include "internal.h" - -/** - * init GetBitContext. - * @param buffer bitstream buffer - * @param bit_size the size of the buffer in bits - */ -void init_get_bits(GetBitContext *s, - const uint8_t *buffer, int bit_size) -{ - s->buffer= buffer; - s->size_in_bits= bit_size; - s->index=0; -} - -unsigned int show_bits(const GetBitContext *s, int n) -{ - int i; - unsigned int result = 0; - assert(s->size_in_bits - s->index >= n); - for (i = s->index; i < s->index + n; i++) { - int byte_index = i / 8; - unsigned int right_shift = 7 - (i % 8); - uint8_t byte = s->buffer[byte_index]; - uint8_t bit; - result <<= 1; - if (right_shift == 0) - bit = byte & 0x1; - else - bit = (byte >> right_shift) & 0x1; - result |= (unsigned int)bit; - } - return result; -} - -void skip_bits(GetBitContext *s, int n) -{ - s->index += n; -} - -unsigned int get_bits(GetBitContext *s, int n) -{ - unsigned int result = show_bits(s, n); - skip_bits(s, n); - return result; -} - -int get_bits_count(const GetBitContext *s) -{ - return s->index; -} - -/* VLC decoding */ - -/*#define DEBUG_VLC*/ - -#define GET_DATA(v, table, i, wrap, size) \ -{\ - const uint8_t *ptr = (const uint8_t *)table + i * wrap;\ - switch(size) {\ - case 1:\ - v = *(const uint8_t *)ptr;\ - break;\ - case 2:\ - v = *(const uint16_t *)ptr;\ - break;\ - default:\ - v = *(const uint32_t *)ptr;\ - break;\ - }\ -} - - -static int alloc_table(VLC *vlc, int size) -{ - int index; - index = vlc->table_size; - vlc->table_size += size; - if (vlc->table_size > vlc->table_allocated) { - vlc->table_allocated += (1 << vlc->bits); - vlc->table = realloc(vlc->table, - sizeof(VLC_TYPE) * 2 * vlc->table_allocated); - if (!vlc->table) - return -1; - } - return index; -} - -static int build_table(VLC *vlc, int table_nb_bits, - int nb_codes, - const void *bits, int bits_wrap, int bits_size, - const void *codes, int codes_wrap, int codes_size, - uint32_t code_prefix, int n_prefix) -{ - int i, j, k, n, table_size, table_index, nb, n1, index; - uint32_t code; - VLC_TYPE (*table)[2]; - - table_size = 1 << table_nb_bits; - table_index = alloc_table(vlc, table_size); -#ifdef DEBUG_VLC - printf("new table index=%d size=%d code_prefix=%x n=%d\n", - table_index, table_size, code_prefix, n_prefix); -#endif - if (table_index < 0) - return -1; - table = &vlc->table[table_index]; - - for(i=0;i 0 && (code >> n) == code_prefix) { - if (n <= table_nb_bits) { - /* no need to add another table */ - j = (code << (table_nb_bits - n)) & (table_size - 1); - nb = 1 << (table_nb_bits - n); - for(k=0;k> n) & ((1 << table_nb_bits) - 1); -#ifdef DEBUG_VLC - printf("%4x: n=%d (subtable)\n", - j, n); -#endif - /* compute table size */ - n1 = -table[j][1]; /*bits*/ - if (n > n1) - n1 = n; - table[j][1] = -n1; /*bits*/ - } - } - } - - /* second pass : fill auxillary tables recursively */ - for(i=0;i table_nb_bits) { - n = table_nb_bits; - table[i][1] = -n; /*bits*/ - } - index = build_table(vlc, n, nb_codes, - bits, bits_wrap, bits_size, - codes, codes_wrap, codes_size, - (code_prefix << table_nb_bits) | i, - n_prefix + table_nb_bits); - if (index < 0) - return -1; - /* note: realloc has been done, so reload tables */ - table = &vlc->table[table_index]; - table[i][0] = index; /*code*/ - } - } - return table_index; -} - - -/* Build VLC decoding tables suitable for use with get_vlc(). - - 'nb_bits' set thee decoding table size (2^nb_bits) entries. The - bigger it is, the faster is the decoding. But it should not be too - big to save memory and L1 cache. '9' is a good compromise. - - 'nb_codes' : number of vlcs codes - - 'bits' : table which gives the size (in bits) of each vlc code. - - 'codes' : table which gives the bit pattern of of each vlc code. - - 'xxx_wrap' : give the number of bytes between each entry of the - 'bits' or 'codes' tables. - - 'xxx_size' : gives the number of bytes of each entry of the 'bits' - or 'codes' tables. - - 'wrap' and 'size' allows to use any memory configuration and types - (byte/word/long) to store the 'bits' and 'codes' tables. -*/ -int init_vlc(VLC *vlc, int nb_bits, int nb_codes, - const void *bits, int bits_wrap, int bits_size, - const void *codes, int codes_wrap, int codes_size) -{ - vlc->bits = nb_bits; - vlc->table = NULL; - vlc->table_allocated = 0; - vlc->table_size = 0; -#ifdef DEBUG_VLC - printf("build table nb_codes=%d\n", nb_codes); -#endif - - if (build_table(vlc, nb_bits, nb_codes, - bits, bits_wrap, bits_size, - codes, codes_wrap, codes_size, - 0, 0) < 0) { - free(vlc->table); - return -1; - } - return 0; -} - - -void free_vlc(VLC *vlc) -{ - free(vlc->table); -} - -int get_vlc(GetBitContext *s, const VLC *vlc) -{ - int code = 0; - int depth = 0, max_depth = 3; - int n, index, bits = vlc->bits; - - do { - index = show_bits(s, bits) + code; - code = vlc->table[index][0]; - n = vlc->table[index][1]; - depth++; - - if (n < 0 && depth < max_depth) { - skip_bits(s, bits); - bits = -n; - } - } while (n < 0 && depth < max_depth); - - skip_bits(s, n); - return code; -} diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/internal.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/internal.h deleted file mode 100644 index 5588137..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/internal.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Based on common.h from libavcodec. Modified extensively by Matt Campbell - for the stand-alone mpaudec library. */ - -#ifndef INTERNAL_H -#define INTERNAL_H - -#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__) -# define CONFIG_WIN32 -#endif - -#include -#include -#include -#include -#include -#include -#include "mpaudec.h" - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifdef CONFIG_WIN32 - -/* windows */ - -typedef unsigned short uint16_t; -typedef signed short int16_t; -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; -typedef unsigned __int64 uint64_t; -typedef signed char int8_t; -typedef signed int int32_t; -typedef signed __int64 int64_t; - -# ifdef _DEBUG -# define DEBUG -# endif - -/* CONFIG_WIN32 end */ -#else - -/* unix */ - -#include - -#endif /* !CONFIG_WIN32 */ - -/* debug stuff */ - -#if !defined(DEBUG) && !defined(NDEBUG) -# define NDEBUG -#endif -#include - -/* bit input */ - -typedef struct GetBitContext { - const uint8_t *buffer; - int index; - int size_in_bits; -} GetBitContext; - -int get_bits_count(const GetBitContext *s); - -#define VLC_TYPE int16_t - -typedef struct VLC { - int bits; - VLC_TYPE (*table)[2]; - int table_size, table_allocated; -} VLC; - -unsigned int get_bits(GetBitContext *s, int n); -unsigned int show_bits(const GetBitContext *s, int n); -void skip_bits(GetBitContext *s, int n); -void init_get_bits(GetBitContext *s, - const uint8_t *buffer, int buffer_size); - -int init_vlc(VLC *vlc, int nb_bits, int nb_codes, - const void *bits, int bits_wrap, int bits_size, - const void *codes, int codes_wrap, int codes_size); -void free_vlc(VLC *vlc); -int get_vlc(GetBitContext *s, const VLC *vlc); - -#endif /* INTERNAL_H */ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.c b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.c deleted file mode 100644 index a07289d..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.c +++ /dev/null @@ -1,2477 +0,0 @@ -/* - * MPEG Audio decoder - * Copyright (c) 2001, 2002 Fabrice Bellard. - * - * This library 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 2 of the License, or (at your option) any later version. - * - * This library 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 along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Modified heavily by Matt Campbell for the - * stand-alone mpaudec library. Based on mpegaudiodec.c from libavcodec. - */ - -/*#define DEBUG*/ -#include "internal.h" -#include "mpegaudio.h" - -#ifdef _MSC_VER -#pragma warning(disable : 4244) -#endif - -/* - * TODO: - * - in low precision mode, use more 16 bit multiplies in synth filter - * - test lsf / mpeg25 extensively. - */ - -/* define USE_HIGHPRECISION to have a bit exact (but slower) mpeg - audio decoder */ -#define USE_HIGHPRECISION - -#ifdef USE_HIGHPRECISION -#define FRAC_BITS 23 /* fractional bits for sb_samples and dct */ -#define WFRAC_BITS 16 /* fractional bits for window */ -#else -#define FRAC_BITS 15 /* fractional bits for sb_samples and dct */ -#define WFRAC_BITS 14 /* fractional bits for window */ -#endif - -#define FRAC_ONE (1 << FRAC_BITS) - -#define MULL(a,b) (((int64_t)(a) * (int64_t)(b)) >> FRAC_BITS) -#define MUL64(a,b) ((int64_t)(a) * (int64_t)(b)) -#define FIX(a) ((int)((a) * FRAC_ONE)) -/* WARNING: only correct for posititive numbers */ -#define FIXR(a) ((int)((a) * FRAC_ONE + 0.5)) -#define FRAC_RND(a) (((a) + (FRAC_ONE/2)) >> FRAC_BITS) - -#if FRAC_BITS <= 15 -typedef int16_t MPA_INT; -#else -typedef int32_t MPA_INT; -#endif - -/****************/ - -#define HEADER_SIZE 4 -#define BACKSTEP_SIZE 512 - -typedef struct MPADecodeContext { - uint8_t inbuf1[2][MPA_MAX_CODED_FRAME_SIZE + BACKSTEP_SIZE]; /* input buffer */ - int inbuf_index; - uint8_t *inbuf_ptr, *inbuf; - int frame_size; - int free_format_frame_size; /* frame size in case of free format - (zero if currently unknown) */ - /* next header (used in free format parsing) */ - int error_protection; - int layer; - int sample_rate; - int sample_rate_index; /* between 0 and 8 */ - int bit_rate; - int old_frame_size; - GetBitContext gb; - int nb_channels; - int mode; - int mode_ext; - int lsf; - MPA_INT synth_buf[MPA_MAX_CHANNELS][512 * 2]; - int synth_buf_offset[MPA_MAX_CHANNELS]; - int32_t sb_samples[MPA_MAX_CHANNELS][36][SBLIMIT]; - int32_t mdct_buf[MPA_MAX_CHANNELS][SBLIMIT * 18]; /* previous samples, for layer 3 MDCT */ -#ifdef DEBUG - int frame_count; -#endif -} MPADecodeContext; - -/* layer 3 "granule" */ -typedef struct GranuleDef { - uint8_t scfsi; - int part2_3_length; - int big_values; - int global_gain; - int scalefac_compress; - uint8_t block_type; - uint8_t switch_point; - int table_select[3]; - int subblock_gain[3]; - uint8_t scalefac_scale; - uint8_t count1table_select; - int region_size[3]; /* number of huffman codes in each region */ - int preflag; - int short_start, long_end; /* long/short band indexes */ - uint8_t scale_factors[40]; - int32_t sb_hybrid[SBLIMIT * 18]; /* 576 samples */ -} GranuleDef; - -#define MODE_EXT_MS_STEREO 2 -#define MODE_EXT_I_STEREO 1 - -/* layer 3 huffman tables */ -typedef struct HuffTable { - int xsize; - const uint8_t *bits; - const uint16_t *codes; -} HuffTable; - -#include "mpaudectab.h" - -/* vlc structure for decoding layer 3 huffman tables */ -static VLC huff_vlc[16]; -static uint8_t *huff_code_table[16]; -static VLC huff_quad_vlc[2]; -/* computed from band_size_long */ -static uint16_t band_index_long[9][23]; -/* XXX: free when all decoders are closed */ -#define TABLE_4_3_SIZE (8191 + 16) -static int8_t table_4_3_exp[TABLE_4_3_SIZE]; -#if FRAC_BITS <= 15 -static uint16_t table_4_3_value[TABLE_4_3_SIZE]; -#else -static uint32_t table_4_3_value[TABLE_4_3_SIZE]; -#endif -/* intensity stereo coef table */ -static int32_t is_table[2][16]; -static int32_t is_table_lsf[2][2][16]; -static int32_t csa_table[8][2]; -static int32_t mdct_win[8][36]; - -/* lower 2 bits: modulo 3, higher bits: shift */ -static uint16_t scale_factor_modshift[64]; -/* [i][j]: 2^(-j/3) * FRAC_ONE * 2^(i+2) / (2^(i+2) - 1) */ -static int32_t scale_factor_mult[15][3]; -/* mult table for layer 2 group quantization */ - -#define SCALE_GEN(v) \ -{ FIXR(1.0 * (v)), FIXR(0.7937005259 * (v)), FIXR(0.6299605249 * (v)) } - -static int32_t scale_factor_mult2[3][3] = { - SCALE_GEN(4.0 / 3.0), /* 3 steps */ - SCALE_GEN(4.0 / 5.0), /* 5 steps */ - SCALE_GEN(4.0 / 9.0), /* 9 steps */ -}; - -/* 2^(n/4) */ -static uint32_t scale_factor_mult3[4] = { - FIXR(1.0), - FIXR(1.18920711500272106671), - FIXR(1.41421356237309504880), - FIXR(1.68179283050742908605), -}; - -static MPA_INT window[512]; - -/* layer 1 unscaling */ -/* n = number of bits of the mantissa minus 1 */ -static int l1_unscale(int n, int mant, int scale_factor) -{ - int shift, mod; - int64_t val; - - shift = scale_factor_modshift[scale_factor]; - mod = shift & 3; - shift >>= 2; - val = MUL64(mant + (-1 << n) + 1, scale_factor_mult[n-1][mod]); - shift += n; - /* NOTE: at this point, 1 <= shift >= 21 + 15 */ - return (int)((val + ((int64_t)(1) << (shift - 1))) >> shift); -} - -static int l2_unscale_group(int steps, int mant, int scale_factor) -{ - int shift, mod, val; - - shift = scale_factor_modshift[scale_factor]; - mod = shift & 3; - shift >>= 2; - - val = (mant - (steps >> 1)) * scale_factor_mult2[steps >> 2][mod]; - /* NOTE: at this point, 0 <= shift <= 21 */ - if (shift > 0) - val = (val + (1 << (shift - 1))) >> shift; - return val; -} - -/* compute value^(4/3) * 2^(exponent/4). It normalized to FRAC_BITS */ -static int l3_unscale(int value, int exponent) -{ -#if FRAC_BITS <= 15 - unsigned int m; -#else - uint64_t m; -#endif - int e; - - e = table_4_3_exp[value]; - e += (exponent >> 2); - e = FRAC_BITS - e; -#if FRAC_BITS <= 15 - if (e > 31) - e = 31; -#endif - m = table_4_3_value[value]; -#if FRAC_BITS <= 15 - m = (m * scale_factor_mult3[exponent & 3]); - m = (m + (1 << (e-1))) >> e; - return m; -#else - m = MUL64(m, scale_factor_mult3[exponent & 3]); - m = (m + ((uint64_t)(1) << (e-1))) >> e; - return (int)m; -#endif -} - -/* all integer n^(4/3) computation code */ -#define DEV_ORDER 13 - -#define POW_FRAC_BITS 24 -#define POW_FRAC_ONE (1 << POW_FRAC_BITS) -#define POW_FIX(a) ((int)((a) * POW_FRAC_ONE)) -#define POW_MULL(a,b) (((int64_t)(a) * (int64_t)(b)) >> POW_FRAC_BITS) - -static int dev_4_3_coefs[DEV_ORDER]; - -static int pow_mult3[3] = { - POW_FIX(1.0), - POW_FIX(1.25992104989487316476), - POW_FIX(1.58740105196819947474), -}; - -static void int_pow_init(void) -{ - int i, a; - - a = POW_FIX(1.0); - for(i=0;i= 0; j--) - a1 = POW_MULL(a, dev_4_3_coefs[j] + a1); - a = (1 << POW_FRAC_BITS) + a1; - /* exponent compute (exact) */ - e = e * 4; - er = e % 3; - eq = e / 3; - a = POW_MULL(a, pow_mult3[er]); - while (a >= 2 * POW_FRAC_ONE) { - a = a >> 1; - eq++; - } - /* convert to float */ - while (a < POW_FRAC_ONE) { - a = a << 1; - eq--; - } - /* now POW_FRAC_ONE <= a < 2 * POW_FRAC_ONE */ -#if POW_FRAC_BITS > FRAC_BITS - a = (a + (1 << (POW_FRAC_BITS - FRAC_BITS - 1))) >> (POW_FRAC_BITS - FRAC_BITS); - /* correct overflow */ - if (a >= 2 * (1 << FRAC_BITS)) { - a = a >> 1; - eq++; - } -#endif - *exp_ptr = eq; - return a; -} - -int mpaudec_init(MPAuDecContext * mpctx) -{ - MPADecodeContext *s; - static int init=0; - int i, j, k; - assert(mpctx != NULL); - memset(mpctx, 0, sizeof(MPAuDecContext)); - mpctx->priv_data = calloc(1, sizeof(MPADecodeContext)); - if (mpctx->priv_data == NULL) - return -1; - s = mpctx->priv_data; - - if (!init && !mpctx->parse_only) { - /* scale factors table for layer 1/2 */ - for(i=0;i<64;i++) { - int shift, mod; - /* 1.0 (i = 3) is normalized to 2 ^ FRAC_BITS */ - shift = (i / 3); - mod = i % 3; - scale_factor_modshift[i] = mod | (shift << 2); - } - - /* scale factor multiply for layer 1 */ - for(i=0;i<15;i++) { - int n, norm; - n = i + 2; - norm = (((int64_t)(1) << n) * FRAC_ONE) / ((1 << n) - 1); - scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm); - scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm); - scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm); -#ifdef DEBUG - printf("%d: norm=%x s=%x %x %x\n", - i, norm, - scale_factor_mult[i][0], - scale_factor_mult[i][1], - scale_factor_mult[i][2]); -#endif - } - - /* window */ - /* max = 18760, max sum over all 16 coefs : 44736 */ - for(i=0;i<257;i++) { - int v; - v = mpa_enwindow[i]; -#if WFRAC_BITS < 16 - v = (v + (1 << (16 - WFRAC_BITS - 1))) >> (16 - WFRAC_BITS); -#endif - window[i] = v; - if ((i & 63) != 0) - v = -v; - if (i != 0) - window[512 - i] = v; - } - - /* huffman decode tables */ - huff_code_table[0] = NULL; - for(i=1;i<16;i++) { - const HuffTable *h = &mpa_huff_tables[i]; - int xsize, x, y; - unsigned int n; - uint8_t *code_table; - - xsize = h->xsize; - n = xsize * xsize; - /* XXX: fail test */ - init_vlc(&huff_vlc[i], 8, n, - h->bits, 1, 1, h->codes, 2, 2); - - code_table = calloc(n, 1); - j = 0; - for(x=0;x> 1); - f = pow(2.0, e / 4.0); - k = i & 1; - is_table_lsf[j][k ^ 1][i] = FIXR(f); - is_table_lsf[j][k][i] = FIXR(1.0); -#ifdef DEBUG - printf("is_table_lsf %d %d: %x %x\n", - i, j, is_table_lsf[j][0][i], is_table_lsf[j][1][i]); -#endif - } - } - - for(i=0;i<8;i++) { - float ci, cs, ca; - ci = ci_table[i]; - cs = 1.0 / sqrt(1.0 + ci * ci); - ca = cs * ci; - csa_table[i][0] = FIX(cs); - csa_table[i][1] = FIX(ca); - } - - /* compute mdct windows */ - for(i=0;i<36;i++) { - int v; - v = FIXR(sin(M_PI * (i + 0.5) / 36.0)); - mdct_win[0][i] = v; - mdct_win[1][i] = v; - mdct_win[3][i] = v; - } - for(i=0;i<6;i++) { - mdct_win[1][18 + i] = FIXR(1.0); - mdct_win[1][24 + i] = FIXR(sin(M_PI * ((i + 6) + 0.5) / 12.0)); - mdct_win[1][30 + i] = FIXR(0.0); - - mdct_win[3][i] = FIXR(0.0); - mdct_win[3][6 + i] = FIXR(sin(M_PI * (i + 0.5) / 12.0)); - mdct_win[3][12 + i] = FIXR(1.0); - } - - for(i=0;i<12;i++) - mdct_win[2][i] = FIXR(sin(M_PI * (i + 0.5) / 12.0)); - - /* NOTE: we do frequency inversion adter the MDCT by changing - the sign of the right window coefs */ - for(j=0;j<4;j++) { - for(i=0;i<36;i+=2) { - mdct_win[j + 4][i] = mdct_win[j][i]; - mdct_win[j + 4][i + 1] = -mdct_win[j][i + 1]; - } - } - -#if defined(DEBUG) - for(j=0;j<8;j++) { - printf("win%d=\n", j); - for(i=0;i<36;i++) - printf("%f, ", (double)mdct_win[j][i] / FRAC_ONE); - printf("\n"); - } -#endif - init = 1; - } - - s->inbuf_index = 0; - s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE]; - s->inbuf_ptr = s->inbuf; -#ifdef DEBUG - s->frame_count = 0; -#endif - return 0; -} - -/* tab[i][j] = 1.0 / (2.0 * cos(pi*(2*k+1) / 2^(6 - j))) */ - -/* cos(i*pi/64) */ - -#define COS0_0 FIXR(0.50060299823519630134) -#define COS0_1 FIXR(0.50547095989754365998) -#define COS0_2 FIXR(0.51544730992262454697) -#define COS0_3 FIXR(0.53104259108978417447) -#define COS0_4 FIXR(0.55310389603444452782) -#define COS0_5 FIXR(0.58293496820613387367) -#define COS0_6 FIXR(0.62250412303566481615) -#define COS0_7 FIXR(0.67480834145500574602) -#define COS0_8 FIXR(0.74453627100229844977) -#define COS0_9 FIXR(0.83934964541552703873) -#define COS0_10 FIXR(0.97256823786196069369) -#define COS0_11 FIXR(1.16943993343288495515) -#define COS0_12 FIXR(1.48416461631416627724) -#define COS0_13 FIXR(2.05778100995341155085) -#define COS0_14 FIXR(3.40760841846871878570) -#define COS0_15 FIXR(10.19000812354805681150) - -#define COS1_0 FIXR(0.50241928618815570551) -#define COS1_1 FIXR(0.52249861493968888062) -#define COS1_2 FIXR(0.56694403481635770368) -#define COS1_3 FIXR(0.64682178335999012954) -#define COS1_4 FIXR(0.78815462345125022473) -#define COS1_5 FIXR(1.06067768599034747134) -#define COS1_6 FIXR(1.72244709823833392782) -#define COS1_7 FIXR(5.10114861868916385802) - -#define COS2_0 FIXR(0.50979557910415916894) -#define COS2_1 FIXR(0.60134488693504528054) -#define COS2_2 FIXR(0.89997622313641570463) -#define COS2_3 FIXR(2.56291544774150617881) - -#define COS3_0 FIXR(0.54119610014619698439) -#define COS3_1 FIXR(1.30656296487637652785) - -#define COS4_0 FIXR(0.70710678118654752439) - -/* butterfly operator */ -#define BF(a, b, c)\ -{\ - tmp0 = tab[a] + tab[b];\ - tmp1 = tab[a] - tab[b];\ - tab[a] = tmp0;\ - tab[b] = MULL(tmp1, c);\ -} - -#define BF1(a, b, c, d)\ -{\ - BF(a, b, COS4_0);\ - BF(c, d, -COS4_0);\ - tab[c] += tab[d];\ -} - -#define BF2(a, b, c, d)\ -{\ - BF(a, b, COS4_0);\ - BF(c, d, -COS4_0);\ - tab[c] += tab[d];\ - tab[a] += tab[c];\ - tab[c] += tab[b];\ - tab[b] += tab[d];\ -} - -#define ADD(a, b) tab[a] += tab[b] - -/* DCT32 without 1/sqrt(2) coef zero scaling. */ -static void dct32(int32_t *out, int32_t *tab) -{ - int tmp0, tmp1; - - /* pass 1 */ - BF(0, 31, COS0_0); - BF(1, 30, COS0_1); - BF(2, 29, COS0_2); - BF(3, 28, COS0_3); - BF(4, 27, COS0_4); - BF(5, 26, COS0_5); - BF(6, 25, COS0_6); - BF(7, 24, COS0_7); - BF(8, 23, COS0_8); - BF(9, 22, COS0_9); - BF(10, 21, COS0_10); - BF(11, 20, COS0_11); - BF(12, 19, COS0_12); - BF(13, 18, COS0_13); - BF(14, 17, COS0_14); - BF(15, 16, COS0_15); - - /* pass 2 */ - BF(0, 15, COS1_0); - BF(1, 14, COS1_1); - BF(2, 13, COS1_2); - BF(3, 12, COS1_3); - BF(4, 11, COS1_4); - BF(5, 10, COS1_5); - BF(6, 9, COS1_6); - BF(7, 8, COS1_7); - - BF(16, 31, -COS1_0); - BF(17, 30, -COS1_1); - BF(18, 29, -COS1_2); - BF(19, 28, -COS1_3); - BF(20, 27, -COS1_4); - BF(21, 26, -COS1_5); - BF(22, 25, -COS1_6); - BF(23, 24, -COS1_7); - - /* pass 3 */ - BF(0, 7, COS2_0); - BF(1, 6, COS2_1); - BF(2, 5, COS2_2); - BF(3, 4, COS2_3); - - BF(8, 15, -COS2_0); - BF(9, 14, -COS2_1); - BF(10, 13, -COS2_2); - BF(11, 12, -COS2_3); - - BF(16, 23, COS2_0); - BF(17, 22, COS2_1); - BF(18, 21, COS2_2); - BF(19, 20, COS2_3); - - BF(24, 31, -COS2_0); - BF(25, 30, -COS2_1); - BF(26, 29, -COS2_2); - BF(27, 28, -COS2_3); - - /* pass 4 */ - BF(0, 3, COS3_0); - BF(1, 2, COS3_1); - - BF(4, 7, -COS3_0); - BF(5, 6, -COS3_1); - - BF(8, 11, COS3_0); - BF(9, 10, COS3_1); - - BF(12, 15, -COS3_0); - BF(13, 14, -COS3_1); - - BF(16, 19, COS3_0); - BF(17, 18, COS3_1); - - BF(20, 23, -COS3_0); - BF(21, 22, -COS3_1); - - BF(24, 27, COS3_0); - BF(25, 26, COS3_1); - - BF(28, 31, -COS3_0); - BF(29, 30, -COS3_1); - - /* pass 5 */ - BF1(0, 1, 2, 3); - BF2(4, 5, 6, 7); - BF1(8, 9, 10, 11); - BF2(12, 13, 14, 15); - BF1(16, 17, 18, 19); - BF2(20, 21, 22, 23); - BF1(24, 25, 26, 27); - BF2(28, 29, 30, 31); - - /* pass 6 */ - - ADD( 8, 12); - ADD(12, 10); - ADD(10, 14); - ADD(14, 9); - ADD( 9, 13); - ADD(13, 11); - ADD(11, 15); - - out[ 0] = tab[0]; - out[16] = tab[1]; - out[ 8] = tab[2]; - out[24] = tab[3]; - out[ 4] = tab[4]; - out[20] = tab[5]; - out[12] = tab[6]; - out[28] = tab[7]; - out[ 2] = tab[8]; - out[18] = tab[9]; - out[10] = tab[10]; - out[26] = tab[11]; - out[ 6] = tab[12]; - out[22] = tab[13]; - out[14] = tab[14]; - out[30] = tab[15]; - - ADD(24, 28); - ADD(28, 26); - ADD(26, 30); - ADD(30, 25); - ADD(25, 29); - ADD(29, 27); - ADD(27, 31); - - out[ 1] = tab[16] + tab[24]; - out[17] = tab[17] + tab[25]; - out[ 9] = tab[18] + tab[26]; - out[25] = tab[19] + tab[27]; - out[ 5] = tab[20] + tab[28]; - out[21] = tab[21] + tab[29]; - out[13] = tab[22] + tab[30]; - out[29] = tab[23] + tab[31]; - out[ 3] = tab[24] + tab[20]; - out[19] = tab[25] + tab[21]; - out[11] = tab[26] + tab[22]; - out[27] = tab[27] + tab[23]; - out[ 7] = tab[28] + tab[18]; - out[23] = tab[29] + tab[19]; - out[15] = tab[30] + tab[17]; - out[31] = tab[31]; -} - -#define OUT_SHIFT (WFRAC_BITS + FRAC_BITS - 15) - -#if FRAC_BITS <= 15 - -static int round_sample(int sum) -{ - int sum1; - sum1 = (sum + (1 << (OUT_SHIFT - 1))) >> OUT_SHIFT; - if (sum1 < -32768) - sum1 = -32768; - else if (sum1 > 32767) - sum1 = 32767; - return sum1; -} - -/* signed 16x16 -> 32 multiply add accumulate */ -#define MACS(rt, ra, rb) rt += (ra) * (rb) - -/* signed 16x16 -> 32 multiply */ -#define MULS(ra, rb) ((ra) * (rb)) - -#else - -static int round_sample(int64_t sum) -{ - int sum1; - sum1 = (int)((sum + ((int64_t)(1) << (OUT_SHIFT - 1))) >> OUT_SHIFT); - if (sum1 < -32768) - sum1 = -32768; - else if (sum1 > 32767) - sum1 = 32767; - return sum1; -} - -#define MULS(ra, rb) MUL64(ra, rb) - -#endif - -#define SUM8(sum, op, w, p) \ -{ \ - sum op MULS((w)[0 * 64], p[0 * 64]);\ - sum op MULS((w)[1 * 64], p[1 * 64]);\ - sum op MULS((w)[2 * 64], p[2 * 64]);\ - sum op MULS((w)[3 * 64], p[3 * 64]);\ - sum op MULS((w)[4 * 64], p[4 * 64]);\ - sum op MULS((w)[5 * 64], p[5 * 64]);\ - sum op MULS((w)[6 * 64], p[6 * 64]);\ - sum op MULS((w)[7 * 64], p[7 * 64]);\ -} - -#define SUM8P2(sum1, op1, sum2, op2, w1, w2, p) \ -{ \ - int tmp;\ - tmp = p[0 * 64];\ - sum1 op1 MULS((w1)[0 * 64], tmp);\ - sum2 op2 MULS((w2)[0 * 64], tmp);\ - tmp = p[1 * 64];\ - sum1 op1 MULS((w1)[1 * 64], tmp);\ - sum2 op2 MULS((w2)[1 * 64], tmp);\ - tmp = p[2 * 64];\ - sum1 op1 MULS((w1)[2 * 64], tmp);\ - sum2 op2 MULS((w2)[2 * 64], tmp);\ - tmp = p[3 * 64];\ - sum1 op1 MULS((w1)[3 * 64], tmp);\ - sum2 op2 MULS((w2)[3 * 64], tmp);\ - tmp = p[4 * 64];\ - sum1 op1 MULS((w1)[4 * 64], tmp);\ - sum2 op2 MULS((w2)[4 * 64], tmp);\ - tmp = p[5 * 64];\ - sum1 op1 MULS((w1)[5 * 64], tmp);\ - sum2 op2 MULS((w2)[5 * 64], tmp);\ - tmp = p[6 * 64];\ - sum1 op1 MULS((w1)[6 * 64], tmp);\ - sum2 op2 MULS((w2)[6 * 64], tmp);\ - tmp = p[7 * 64];\ - sum1 op1 MULS((w1)[7 * 64], tmp);\ - sum2 op2 MULS((w2)[7 * 64], tmp);\ -} - - -/* 32 sub band synthesis filter. Input: 32 sub band samples, Output: - 32 samples. */ -/* XXX: optimize by avoiding ring buffer usage */ -static void synth_filter(MPADecodeContext *s1, - int ch, int16_t *samples, int incr, - int32_t sb_samples[SBLIMIT]) -{ - int32_t tmp[32]; - MPA_INT *synth_buf; - const MPA_INT *w, *w2, *p; - int j, offset, v; - int16_t *samples2; -#if FRAC_BITS <= 15 - int32_t sum, sum2; -#else - int64_t sum, sum2; -#endif - - dct32(tmp, sb_samples); - - offset = s1->synth_buf_offset[ch]; - synth_buf = s1->synth_buf[ch] + offset; - - for(j=0;j<32;j++) { - v = tmp[j]; -#if FRAC_BITS <= 15 - /* NOTE: can cause a loss in precision if very high amplitude - sound */ - if (v > 32767) - v = 32767; - else if (v < -32768) - v = -32768; -#endif - synth_buf[j] = v; - } - /* copy to avoid wrap */ - memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT)); - - samples2 = samples + 31 * incr; - w = window; - w2 = window + 31; - - sum = 0; - p = synth_buf + 16; - SUM8(sum, +=, w, p); - p = synth_buf + 48; - SUM8(sum, -=, w + 32, p); - *samples = round_sample(sum); - samples += incr; - w++; - - /* we calculate two samples at the same time to avoid one memory - access per two sample */ - for(j=1;j<16;j++) { - sum = 0; - sum2 = 0; - p = synth_buf + 16 + j; - SUM8P2(sum, +=, sum2, -=, w, w2, p); - p = synth_buf + 48 - j; - SUM8P2(sum, -=, sum2, -=, w + 32, w2 + 32, p); - - *samples = round_sample(sum); - samples += incr; - *samples2 = round_sample(sum2); - samples2 -= incr; - w++; - w2--; - } - - p = synth_buf + 32; - sum = 0; - SUM8(sum, -=, w + 32, p); - *samples = round_sample(sum); - - offset = (offset - 32) & 511; - s1->synth_buf_offset[ch] = offset; -} - -/* cos(pi*i/24) */ -#define C1 FIXR(0.99144486137381041114) -#define C3 FIXR(0.92387953251128675612) -#define C5 FIXR(0.79335334029123516458) -#define C7 FIXR(0.60876142900872063941) -#define C9 FIXR(0.38268343236508977173) -#define C11 FIXR(0.13052619222005159154) - -/* 12 points IMDCT. We compute it "by hand" by factorizing obvious - cases. */ -static void imdct12(int *out, int *in) -{ - int tmp; - int64_t in1_3, in1_9, in4_3, in4_9; - - in1_3 = MUL64(in[1], C3); - in1_9 = MUL64(in[1], C9); - in4_3 = MUL64(in[4], C3); - in4_9 = MUL64(in[4], C9); - - tmp = FRAC_RND(MUL64(in[0], C7) - in1_3 - MUL64(in[2], C11) + - MUL64(in[3], C1) - in4_9 - MUL64(in[5], C5)); - out[0] = tmp; - out[5] = -tmp; - tmp = FRAC_RND(MUL64(in[0] - in[3], C9) - in1_3 + - MUL64(in[2] + in[5], C3) - in4_9); - out[1] = tmp; - out[4] = -tmp; - tmp = FRAC_RND(MUL64(in[0], C11) - in1_9 + MUL64(in[2], C7) - - MUL64(in[3], C5) + in4_3 - MUL64(in[5], C1)); - out[2] = tmp; - out[3] = -tmp; - tmp = FRAC_RND(MUL64(-in[0], C5) + in1_9 + MUL64(in[2], C1) + - MUL64(in[3], C11) - in4_3 - MUL64(in[5], C7)); - out[6] = tmp; - out[11] = tmp; - tmp = FRAC_RND(MUL64(-in[0] + in[3], C3) - in1_9 + - MUL64(in[2] + in[5], C9) + in4_3); - out[7] = tmp; - out[10] = tmp; - tmp = FRAC_RND(-MUL64(in[0], C1) - in1_3 - MUL64(in[2], C5) - - MUL64(in[3], C7) - in4_9 - MUL64(in[5], C11)); - out[8] = tmp; - out[9] = tmp; -} - -#undef C1 -#undef C3 -#undef C5 -#undef C7 -#undef C9 -#undef C11 - -/* cos(pi*i/18) */ -#define C1 FIXR(0.98480775301220805936) -#define C2 FIXR(0.93969262078590838405) -#define C3 FIXR(0.86602540378443864676) -#define C4 FIXR(0.76604444311897803520) -#define C5 FIXR(0.64278760968653932632) -#define C6 FIXR(0.5) -#define C7 FIXR(0.34202014332566873304) -#define C8 FIXR(0.17364817766693034885) - -/* 0.5 / cos(pi*(2*i+1)/36) */ -static const int icos36[9] = { - FIXR(0.50190991877167369479), - FIXR(0.51763809020504152469), - FIXR(0.55168895948124587824), - FIXR(0.61038729438072803416), - FIXR(0.70710678118654752439), - FIXR(0.87172339781054900991), - FIXR(1.18310079157624925896), - FIXR(1.93185165257813657349), - FIXR(5.73685662283492756461), -}; - -static const int icos72[18] = { - /* 0.5 / cos(pi*(2*i+19)/72) */ - FIXR(0.74009361646113053152), - FIXR(0.82133981585229078570), - FIXR(0.93057949835178895673), - FIXR(1.08284028510010010928), - FIXR(1.30656296487637652785), - FIXR(1.66275476171152078719), - FIXR(2.31011315767264929558), - FIXR(3.83064878777019433457), - FIXR(11.46279281302667383546), - - /* 0.5 / cos(pi*(2*(i + 18) +19)/72) */ - FIXR(-0.67817085245462840086), - FIXR(-0.63023620700513223342), - FIXR(-0.59284452371708034528), - FIXR(-0.56369097343317117734), - FIXR(-0.54119610014619698439), - FIXR(-0.52426456257040533932), - FIXR(-0.51213975715725461845), - FIXR(-0.50431448029007636036), - FIXR(-0.50047634258165998492), -}; - -/* using Lee like decomposition followed by hand coded 9 points DCT */ -static void imdct36(int *out, int *in) -{ - int i, j, t0, t1, t2, t3, s0, s1, s2, s3; - int tmp[18], *tmp1, *in1; - int64_t in3_3, in6_6; - - for(i=17;i>=1;i--) - in[i] += in[i-1]; - for(i=17;i>=3;i-=2) - in[i] += in[i-2]; - - for(j=0;j<2;j++) { - tmp1 = tmp + j; - in1 = in + j; - - in3_3 = MUL64(in1[2*3], C3); - in6_6 = MUL64(in1[2*6], C6); - - tmp1[0] = FRAC_RND(MUL64(in1[2*1], C1) + in3_3 + - MUL64(in1[2*5], C5) + MUL64(in1[2*7], C7)); - tmp1[2] = in1[2*0] + FRAC_RND(MUL64(in1[2*2], C2) + - MUL64(in1[2*4], C4) + in6_6 + - MUL64(in1[2*8], C8)); - tmp1[4] = FRAC_RND(MUL64(in1[2*1] - in1[2*5] - in1[2*7], C3)); - tmp1[6] = FRAC_RND(MUL64(in1[2*2] - in1[2*4] - in1[2*8], C6)) - - in1[2*6] + in1[2*0]; - tmp1[8] = FRAC_RND(MUL64(in1[2*1], C5) - in3_3 - - MUL64(in1[2*5], C7) + MUL64(in1[2*7], C1)); - tmp1[10] = in1[2*0] + FRAC_RND(MUL64(-in1[2*2], C8) - - MUL64(in1[2*4], C2) + in6_6 + - MUL64(in1[2*8], C4)); - tmp1[12] = FRAC_RND(MUL64(in1[2*1], C7) - in3_3 + - MUL64(in1[2*5], C1) - - MUL64(in1[2*7], C5)); - tmp1[14] = in1[2*0] + FRAC_RND(MUL64(-in1[2*2], C4) + - MUL64(in1[2*4], C8) + in6_6 - - MUL64(in1[2*8], C2)); - tmp1[16] = in1[2*0] - in1[2*2] + in1[2*4] - in1[2*6] + in1[2*8]; - } - - i = 0; - for(j=0;j<4;j++) { - t0 = tmp[i]; - t1 = tmp[i + 2]; - s0 = t1 + t0; - s2 = t1 - t0; - - t2 = tmp[i + 1]; - t3 = tmp[i + 3]; - s1 = MULL(t3 + t2, icos36[j]); - s3 = MULL(t3 - t2, icos36[8 - j]); - - t0 = MULL(s0 + s1, icos72[9 + 8 - j]); - t1 = MULL(s0 - s1, icos72[8 - j]); - out[18 + 9 + j] = t0; - out[18 + 8 - j] = t0; - out[9 + j] = -t1; - out[8 - j] = t1; - - t0 = MULL(s2 + s3, icos72[9+j]); - t1 = MULL(s2 - s3, icos72[j]); - out[18 + 9 + (8 - j)] = t0; - out[18 + j] = t0; - out[9 + (8 - j)] = -t1; - out[j] = t1; - i += 4; - } - - s0 = tmp[16]; - s1 = MULL(tmp[17], icos36[4]); - t0 = MULL(s0 + s1, icos72[9 + 4]); - t1 = MULL(s0 - s1, icos72[4]); - out[18 + 9 + 4] = t0; - out[18 + 8 - 4] = t0; - out[9 + 4] = -t1; - out[8 - 4] = t1; -} - -/* fast header check for resync */ -static int check_header(uint32_t header) -{ - /* header */ - if ((header & 0xffe00000) != 0xffe00000) - return -1; - /* layer check */ - if (((header >> 17) & 3) == 0) - return -1; - /* bit rate */ - if (((header >> 12) & 0xf) == 0xf) - return -1; - /* frequency */ - if (((header >> 10) & 3) == 3) - return -1; - return 0; -} - -/* header + layer + bitrate + freq + lsf/mpeg25 */ -#define SAME_HEADER_MASK \ - (0xffe00000 | (3 << 17) | (0xf << 12) | (3 << 10) | (3 << 19)) - -/* header decoding. MUST check the header before because no - consistency check is done there. Return 1 if free format found and - that the frame size must be computed externally */ -static int decode_header(MPADecodeContext *s, uint32_t header) -{ - int sample_rate, frame_size, mpeg25, padding; - int sample_rate_index, bitrate_index; - if (header & (1<<20)) { - s->lsf = (header & (1<<19)) ? 0 : 1; - mpeg25 = 0; - } else { - s->lsf = 1; - mpeg25 = 1; - } - - s->layer = 4 - ((header >> 17) & 3); - /* extract frequency */ - sample_rate_index = (header >> 10) & 3; - sample_rate = mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25); - sample_rate_index += 3 * (s->lsf + mpeg25); - s->sample_rate_index = sample_rate_index; - s->error_protection = ((header >> 16) & 1) ^ 1; - s->sample_rate = sample_rate; - - bitrate_index = (header >> 12) & 0xf; - padding = (header >> 9) & 1; - s->mode = (header >> 6) & 3; - s->mode_ext = (header >> 4) & 3; - - if (s->mode == MPA_MONO) - s->nb_channels = 1; - else - s->nb_channels = 2; - - if (bitrate_index != 0) { - frame_size = mpa_bitrate_tab[s->lsf][s->layer - 1][bitrate_index]; - s->bit_rate = frame_size * 1000; - switch(s->layer) { - case 1: - frame_size = (frame_size * 12000) / sample_rate; - frame_size = (frame_size + padding) * 4; - break; - case 2: - frame_size = (frame_size * 144000) / sample_rate; - frame_size += padding; - break; - default: - case 3: - frame_size = (frame_size * 144000) / (sample_rate << s->lsf); - frame_size += padding; - break; - } - s->frame_size = frame_size; - } else { - /* if no frame size computed, signal it */ - if (!s->free_format_frame_size) - return 1; - /* free format: compute bitrate and real frame size from the - frame size we extracted by reading the bitstream */ - s->frame_size = s->free_format_frame_size; - switch(s->layer) { - case 1: - s->frame_size += padding * 4; - s->bit_rate = (s->frame_size * sample_rate) / 48000; - break; - case 2: - s->frame_size += padding; - s->bit_rate = (s->frame_size * sample_rate) / 144000; - break; - default: - case 3: - s->frame_size += padding; - s->bit_rate = (s->frame_size * (sample_rate << s->lsf)) / 144000; - break; - } - } - -#if defined(DEBUG) - printf("layer%d, %d Hz, %d kbits/s, ", - s->layer, s->sample_rate, s->bit_rate); - if (s->nb_channels == 2) { - if (s->layer == 3) { - if (s->mode_ext & MODE_EXT_MS_STEREO) - printf("ms-"); - if (s->mode_ext & MODE_EXT_I_STEREO) - printf("i-"); - } - printf("stereo"); - } else { - printf("mono"); - } - printf("\n"); -#endif - return 0; -} - -/* return the number of decoded frames */ -static int mp_decode_layer1(MPADecodeContext *s) -{ - int bound, i, v, n, ch, j, mant; - uint8_t allocation[MPA_MAX_CHANNELS][SBLIMIT]; - uint8_t scale_factors[MPA_MAX_CHANNELS][SBLIMIT]; - - if (s->mode == MPA_JSTEREO) - bound = (s->mode_ext + 1) * 4; - else - bound = SBLIMIT; - - /* allocation bits */ - for(i=0;inb_channels;ch++) { - allocation[ch][i] = get_bits(&s->gb, 4); - } - } - for(i=bound;igb, 4); - } - - /* scale factors */ - for(i=0;inb_channels;ch++) { - if (allocation[ch][i]) - scale_factors[ch][i] = get_bits(&s->gb, 6); - } - } - for(i=bound;igb, 6); - scale_factors[1][i] = get_bits(&s->gb, 6); - } - } - - /* compute samples */ - for(j=0;j<12;j++) { - for(i=0;inb_channels;ch++) { - n = allocation[ch][i]; - if (n) { - mant = get_bits(&s->gb, n + 1); - v = l1_unscale(n, mant, scale_factors[ch][i]); - } else { - v = 0; - } - s->sb_samples[ch][j][i] = v; - } - } - for(i=bound;igb, n + 1); - v = l1_unscale(n, mant, scale_factors[0][i]); - s->sb_samples[0][j][i] = v; - v = l1_unscale(n, mant, scale_factors[1][i]); - s->sb_samples[1][j][i] = v; - } else { - s->sb_samples[0][j][i] = 0; - s->sb_samples[1][j][i] = 0; - } - } - } - return 12; -} - -/* bitrate is in kb/s */ -static int l2_select_table(int bitrate, int nb_channels, int freq, int lsf) -{ - int ch_bitrate, table; - - ch_bitrate = bitrate / nb_channels; - if (!lsf) { - if ((freq == 48000 && ch_bitrate >= 56) || - (ch_bitrate >= 56 && ch_bitrate <= 80)) - table = 0; - else if (freq != 48000 && ch_bitrate >= 96) - table = 1; - else if (freq != 32000 && ch_bitrate <= 48) - table = 2; - else - table = 3; - } else { - table = 4; - } - return table; -} - -static int mp_decode_layer2(MPADecodeContext *s) -{ - int sblimit; /* number of used subbands */ - const unsigned char *alloc_table; - int table, bit_alloc_bits, i, j, ch, bound, v; - unsigned char bit_alloc[MPA_MAX_CHANNELS][SBLIMIT]; - unsigned char scale_code[MPA_MAX_CHANNELS][SBLIMIT]; - unsigned char scale_factors[MPA_MAX_CHANNELS][SBLIMIT][3], *sf; - int scale, qindex, bits, steps, k, l, m, b; - - /* select decoding table */ - table = l2_select_table(s->bit_rate / 1000, s->nb_channels, - s->sample_rate, s->lsf); - sblimit = sblimit_table[table]; - alloc_table = alloc_tables[table]; - - if (s->mode == MPA_JSTEREO) - bound = (s->mode_ext + 1) * 4; - else - bound = sblimit; - -#ifdef DEBUG - printf("bound=%d sblimit=%d\n", bound, sblimit); -#endif - /* parse bit allocation */ - j = 0; - for(i=0;inb_channels;ch++) { - bit_alloc[ch][i] = get_bits(&s->gb, bit_alloc_bits); - } - j += 1 << bit_alloc_bits; - } - for(i=bound;igb, bit_alloc_bits); - bit_alloc[0][i] = v; - bit_alloc[1][i] = v; - j += 1 << bit_alloc_bits; - } - -#ifdef DEBUG - { - for(ch=0;chnb_channels;ch++) { - for(i=0;inb_channels;ch++) { - if (bit_alloc[ch][i]) - scale_code[ch][i] = get_bits(&s->gb, 2); - } - } - - /* scale factors */ - for(i=0;inb_channels;ch++) { - if (bit_alloc[ch][i]) { - sf = scale_factors[ch][i]; - switch(scale_code[ch][i]) { - default: - case 0: - sf[0] = get_bits(&s->gb, 6); - sf[1] = get_bits(&s->gb, 6); - sf[2] = get_bits(&s->gb, 6); - break; - case 2: - sf[0] = get_bits(&s->gb, 6); - sf[1] = sf[0]; - sf[2] = sf[0]; - break; - case 1: - sf[0] = get_bits(&s->gb, 6); - sf[2] = get_bits(&s->gb, 6); - sf[1] = sf[0]; - break; - case 3: - sf[0] = get_bits(&s->gb, 6); - sf[2] = get_bits(&s->gb, 6); - sf[1] = sf[2]; - break; - } - } - } - } - -#ifdef DEBUG - for(ch=0;chnb_channels;ch++) { - for(i=0;inb_channels;ch++) { - b = bit_alloc[ch][i]; - if (b) { - scale = scale_factors[ch][i][k]; - qindex = alloc_table[j+b]; - bits = quant_bits[qindex]; - if (bits < 0) { - /* 3 values at the same time */ - v = get_bits(&s->gb, -bits); - steps = quant_steps[qindex]; - s->sb_samples[ch][k * 12 + l + 0][i] = - l2_unscale_group(steps, v % steps, scale); - v = v / steps; - s->sb_samples[ch][k * 12 + l + 1][i] = - l2_unscale_group(steps, v % steps, scale); - v = v / steps; - s->sb_samples[ch][k * 12 + l + 2][i] = - l2_unscale_group(steps, v, scale); - } else { - for(m=0;m<3;m++) { - v = get_bits(&s->gb, bits); - v = l1_unscale(bits - 1, v, scale); - s->sb_samples[ch][k * 12 + l + m][i] = v; - } - } - } else { - s->sb_samples[ch][k * 12 + l + 0][i] = 0; - s->sb_samples[ch][k * 12 + l + 1][i] = 0; - s->sb_samples[ch][k * 12 + l + 2][i] = 0; - } - } - /* next subband in alloc table */ - j += 1 << bit_alloc_bits; - } - /* XXX: find a way to avoid this duplication of code */ - for(i=bound;igb, -bits); - steps = quant_steps[qindex]; - mant = v % steps; - v = v / steps; - s->sb_samples[0][k * 12 + l + 0][i] = - l2_unscale_group(steps, mant, scale0); - s->sb_samples[1][k * 12 + l + 0][i] = - l2_unscale_group(steps, mant, scale1); - mant = v % steps; - v = v / steps; - s->sb_samples[0][k * 12 + l + 1][i] = - l2_unscale_group(steps, mant, scale0); - s->sb_samples[1][k * 12 + l + 1][i] = - l2_unscale_group(steps, mant, scale1); - s->sb_samples[0][k * 12 + l + 2][i] = - l2_unscale_group(steps, v, scale0); - s->sb_samples[1][k * 12 + l + 2][i] = - l2_unscale_group(steps, v, scale1); - } else { - for(m=0;m<3;m++) { - mant = get_bits(&s->gb, bits); - s->sb_samples[0][k * 12 + l + m][i] = - l1_unscale(bits - 1, mant, scale0); - s->sb_samples[1][k * 12 + l + m][i] = - l1_unscale(bits - 1, mant, scale1); - } - } - } else { - s->sb_samples[0][k * 12 + l + 0][i] = 0; - s->sb_samples[0][k * 12 + l + 1][i] = 0; - s->sb_samples[0][k * 12 + l + 2][i] = 0; - s->sb_samples[1][k * 12 + l + 0][i] = 0; - s->sb_samples[1][k * 12 + l + 1][i] = 0; - s->sb_samples[1][k * 12 + l + 2][i] = 0; - } - /* next subband in alloc table */ - j += 1 << bit_alloc_bits; - } - /* fill remaining samples to zero */ - for(i=sblimit;inb_channels;ch++) { - s->sb_samples[ch][k * 12 + l + 0][i] = 0; - s->sb_samples[ch][k * 12 + l + 1][i] = 0; - s->sb_samples[ch][k * 12 + l + 2][i] = 0; - } - } - } - } - return 3 * 12; -} - -/* - * Seek back in the stream for backstep bytes (at most 511 bytes) - */ -static void seek_to_maindata(MPADecodeContext *s, unsigned int backstep) -{ - uint8_t *ptr; - - /* compute current position in stream */ - ptr = (uint8_t *)(s->gb.buffer + (get_bits_count(&s->gb)>>3)); - - /* copy old data before current one */ - ptr -= backstep; - memcpy(ptr, s->inbuf1[s->inbuf_index ^ 1] + - BACKSTEP_SIZE + s->old_frame_size - backstep, backstep); - /* init get bits again */ - init_get_bits(&s->gb, ptr, (s->frame_size + backstep)*8); - - /* prepare next buffer */ - s->inbuf_index ^= 1; - s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE]; - s->old_frame_size = s->frame_size; -} - -static void lsf_sf_expand(int *slen, - int sf, int n1, int n2, int n3) -{ - if (n3) { - slen[3] = sf % n3; - sf /= n3; - } else { - slen[3] = 0; - } - if (n2) { - slen[2] = sf % n2; - sf /= n2; - } else { - slen[2] = 0; - } - slen[1] = sf % n1; - sf /= n1; - slen[0] = sf; -} - -static void exponents_from_scale_factors(MPADecodeContext *s, - GranuleDef *g, - int16_t *exponents) -{ - const uint8_t *bstab, *pretab; - int len, i, j, k, l, v0, shift, gain, gains[3]; - int16_t *exp_ptr; - - exp_ptr = exponents; - gain = g->global_gain - 210; - shift = g->scalefac_scale + 1; - - bstab = band_size_long[s->sample_rate_index]; - pretab = mpa_pretab[g->preflag]; - for(i=0;ilong_end;i++) { - v0 = gain - ((g->scale_factors[i] + pretab[i]) << shift); - len = bstab[i]; - for(j=len;j>0;j--) - *exp_ptr++ = v0; - } - - if (g->short_start < 13) { - bstab = band_size_short[s->sample_rate_index]; - gains[0] = gain - (g->subblock_gain[0] << 3); - gains[1] = gain - (g->subblock_gain[1] << 3); - gains[2] = gain - (g->subblock_gain[2] << 3); - k = g->long_end; - for(i=g->short_start;i<13;i++) { - len = bstab[i]; - for(l=0;l<3;l++) { - v0 = gains[l] - (g->scale_factors[k++] << shift); - for(j=len;j>0;j--) - *exp_ptr++ = v0; - } - } - } -} - -/* handle n = 0 too */ -static int get_bitsz(GetBitContext *s, int n) -{ - if (n == 0) - return 0; - else - return get_bits(s, n); -} - -static int huffman_decode(MPADecodeContext *s, GranuleDef *g, - int16_t *exponents, int end_pos) -{ - int s_index; - int linbits, code, x, y, l, v, i, j, k, pos; - GetBitContext last_gb; - VLC *vlc; - uint8_t *code_table; - - /* low frequencies (called big values) */ - s_index = 0; - for(i=0;i<3;i++) { - j = g->region_size[i]; - if (j == 0) - continue; - /* select vlc table */ - k = g->table_select[i]; - l = mpa_huff_data[k][0]; - linbits = mpa_huff_data[k][1]; - vlc = &huff_vlc[l]; - code_table = huff_code_table[l]; - - /* read huffcode and compute each couple */ - for(;j>0;j--) { - if (get_bits_count(&s->gb) >= end_pos) - break; - if (code_table) { - code = get_vlc(&s->gb, vlc); - if (code < 0) - return -1; - y = code_table[code]; - x = y >> 4; - y = y & 0x0f; - } else { - x = 0; - y = 0; - } -#ifdef DEBUG - printf("region=%d n=%d x=%d y=%d exp=%d\n", - i, g->region_size[i] - j, x, y, exponents[s_index]); -#endif - if (x) { - if (x == 15) - x += get_bitsz(&s->gb, linbits); - v = l3_unscale(x, exponents[s_index]); - if (get_bits(&s->gb, 1)) - v = -v; - } else { - v = 0; - } - g->sb_hybrid[s_index++] = v; - if (y) { - if (y == 15) - y += get_bitsz(&s->gb, linbits); - v = l3_unscale(y, exponents[s_index]); - if (get_bits(&s->gb, 1)) - v = -v; - } else { - v = 0; - } - g->sb_hybrid[s_index++] = v; - } - } - - /* high frequencies */ - vlc = &huff_quad_vlc[g->count1table_select]; - last_gb.buffer = NULL; - while (s_index <= 572) { - pos = get_bits_count(&s->gb); - if (pos >= end_pos) { - if (pos > end_pos && last_gb.buffer != NULL) { - /* some encoders generate an incorrect size for this - part. We must go back into the data */ - s_index -= 4; - s->gb = last_gb; - } - break; - } - last_gb= s->gb; - - code = get_vlc(&s->gb, vlc); -#ifdef DEBUG - printf("t=%d code=%d\n", g->count1table_select, code); -#endif - if (code < 0) - return -1; - for(i=0;i<4;i++) { - if (code & (8 >> i)) { - /* non zero value. Could use a hand coded function for - 'one' value */ - v = l3_unscale(1, exponents[s_index]); - if(get_bits(&s->gb, 1)) - v = -v; - } else { - v = 0; - } - g->sb_hybrid[s_index++] = v; - } - } - while (s_index < 576) - g->sb_hybrid[s_index++] = 0; - return 0; -} - -/* Reorder short blocks from bitstream order to interleaved order. It - would be faster to do it in parsing, but the code would be far more - complicated */ -static void reorder_block(MPADecodeContext *s, GranuleDef *g) -{ - int i, j, k, len; - int32_t *ptr, *dst, *ptr1; - int32_t tmp[576]; - - if (g->block_type != 2) - return; - - if (g->switch_point) { - if (s->sample_rate_index != 8) { - ptr = g->sb_hybrid + 36; - } else { - ptr = g->sb_hybrid + 48; - } - } else { - ptr = g->sb_hybrid; - } - - for(i=g->short_start;i<13;i++) { - len = band_size_short[s->sample_rate_index][i]; - ptr1 = ptr; - for(k=0;k<3;k++) { - dst = tmp + k; - for(j=len;j>0;j--) { - *dst = *ptr++; - dst += 3; - } - } - memcpy(ptr1, tmp, len * 3 * sizeof(int32_t)); - } -} - -#define ISQRT2 FIXR(0.70710678118654752440) - -static void compute_stereo(MPADecodeContext *s, - GranuleDef *g0, GranuleDef *g1) -{ - int i, j, k, l; - int32_t v1, v2; - int sf_max, tmp0, tmp1, sf, len, non_zero_found; - int32_t (*is_tab)[16]; - int32_t *tab0, *tab1; - int non_zero_found_short[3]; - - /* intensity stereo */ - if (s->mode_ext & MODE_EXT_I_STEREO) { - if (!s->lsf) { - is_tab = is_table; - sf_max = 7; - } else { - is_tab = is_table_lsf[g1->scalefac_compress & 1]; - sf_max = 16; - } - - tab0 = g0->sb_hybrid + 576; - tab1 = g1->sb_hybrid + 576; - - non_zero_found_short[0] = 0; - non_zero_found_short[1] = 0; - non_zero_found_short[2] = 0; - k = (13 - g1->short_start) * 3 + g1->long_end - 3; - for(i = 12;i >= g1->short_start;i--) { - /* for last band, use previous scale factor */ - if (i != 11) - k -= 3; - len = band_size_short[s->sample_rate_index][i]; - for(l=2;l>=0;l--) { - tab0 -= len; - tab1 -= len; - if (!non_zero_found_short[l]) { - /* test if non zero band. if so, stop doing i-stereo */ - for(j=0;jscale_factors[k + l]; - if (sf >= sf_max) - goto found1; - - v1 = is_tab[0][sf]; - v2 = is_tab[1][sf]; - for(j=0;jmode_ext & MODE_EXT_MS_STEREO) { - /* lower part of the spectrum : do ms stereo - if enabled */ - for(j=0;jlong_end - 1;i >= 0;i--) { - len = band_size_long[s->sample_rate_index][i]; - tab0 -= len; - tab1 -= len; - /* test if non zero band. if so, stop doing i-stereo */ - if (!non_zero_found) { - for(j=0;jscale_factors[k]; - if (sf >= sf_max) - goto found2; - v1 = is_tab[0][sf]; - v2 = is_tab[1][sf]; - for(j=0;jmode_ext & MODE_EXT_MS_STEREO) { - /* lower part of the spectrum : do ms stereo - if enabled */ - for(j=0;jmode_ext & MODE_EXT_MS_STEREO) { - /* ms stereo ONLY */ - /* NOTE: the 1/sqrt(2) normalization factor is included in the - global gain */ - tab0 = g0->sb_hybrid; - tab1 = g1->sb_hybrid; - for(i=0;i<576;i++) { - tmp0 = tab0[i]; - tmp1 = tab1[i]; - tab0[i] = tmp0 + tmp1; - tab1[i] = tmp0 - tmp1; - } - } -} - -static void compute_antialias(MPADecodeContext *s, - GranuleDef *g) -{ - int32_t *ptr, *p0, *p1, *csa; - int n, tmp0, tmp1, i, j; - - /* we antialias only "long" bands */ - if (g->block_type == 2) { - if (!g->switch_point) - return; - /* XXX: check this for 8000Hz case */ - n = 1; - } else { - n = SBLIMIT - 1; - } - - ptr = g->sb_hybrid + 18; - for(i = n;i > 0;i--) { - p0 = ptr - 1; - p1 = ptr; - csa = &csa_table[0][0]; - for(j=0;j<8;j++) { - tmp0 = *p0; - tmp1 = *p1; - *p0 = FRAC_RND(MUL64(tmp0, csa[0]) - MUL64(tmp1, csa[1])); - *p1 = FRAC_RND(MUL64(tmp0, csa[1]) + MUL64(tmp1, csa[0])); - p0--; - p1++; - csa += 2; - } - ptr += 18; - } -} - -static void compute_imdct(MPADecodeContext *s, - GranuleDef *g, - int32_t *sb_samples, - int32_t *mdct_buf) -{ - int32_t *ptr, *win, *win1, *buf, *buf2, *out_ptr, *ptr1; - int32_t in[6]; - int32_t out[36]; - int32_t out2[12]; - int i, j, k, mdct_long_end, v, sblimit; - - /* find last non zero block */ - ptr = g->sb_hybrid + 576; - ptr1 = g->sb_hybrid + 2 * 18; - while (ptr >= ptr1) { - ptr -= 6; - v = ptr[0] | ptr[1] | ptr[2] | ptr[3] | ptr[4] | ptr[5]; - if (v != 0) - break; - } - sblimit = ((ptr - g->sb_hybrid) / 18) + 1; - - if (g->block_type == 2) { - /* XXX: check for 8000 Hz */ - if (g->switch_point) - mdct_long_end = 2; - else - mdct_long_end = 0; - } else { - mdct_long_end = sblimit; - } - - buf = mdct_buf; - ptr = g->sb_hybrid; - for(j=0;jswitch_point && j < 2) - win1 = mdct_win[0]; - else - win1 = mdct_win[g->block_type]; - /* select frequency inversion */ - win = win1 + ((4 * 36) & -(j & 1)); - for(i=0;i<18;i++) { - *out_ptr = MULL(out[i], win[i]) + buf[i]; - buf[i] = MULL(out[i + 18], win[i + 18]); - out_ptr += SBLIMIT; - } - ptr += 18; - buf += 18; - } - for(j=mdct_long_end;jlsf) { - main_data_begin = get_bits(&s->gb, 8); - if (s->nb_channels == 2) - private_bits = get_bits(&s->gb, 2); - else - private_bits = get_bits(&s->gb, 1); - nb_granules = 1; - } else { - main_data_begin = get_bits(&s->gb, 9); - if (s->nb_channels == 2) - private_bits = get_bits(&s->gb, 3); - else - private_bits = get_bits(&s->gb, 5); - nb_granules = 2; - for(ch=0;chnb_channels;ch++) { - granules[ch][0].scfsi = 0; /* all scale factors are transmitted */ - granules[ch][1].scfsi = get_bits(&s->gb, 4); - } - } - - for(gr=0;grnb_channels;ch++) { -#ifdef DEBUG - printf("gr=%d ch=%d: side_info\n", gr, ch); -#endif - g = &granules[ch][gr]; - g->part2_3_length = get_bits(&s->gb, 12); - g->big_values = get_bits(&s->gb, 9); - g->global_gain = get_bits(&s->gb, 8); - /* if MS stereo only is selected, we precompute the - 1/sqrt(2) renormalization factor */ - if ((s->mode_ext & (MODE_EXT_MS_STEREO | MODE_EXT_I_STEREO)) == - MODE_EXT_MS_STEREO) - g->global_gain -= 2; - if (s->lsf) - g->scalefac_compress = get_bits(&s->gb, 9); - else - g->scalefac_compress = get_bits(&s->gb, 4); - blocksplit_flag = get_bits(&s->gb, 1); - if (blocksplit_flag) { - g->block_type = get_bits(&s->gb, 2); - if (g->block_type == 0) - return -1; - g->switch_point = get_bits(&s->gb, 1); - for(i=0;i<2;i++) - g->table_select[i] = get_bits(&s->gb, 5); - for(i=0;i<3;i++) - g->subblock_gain[i] = get_bits(&s->gb, 3); - /* compute huffman coded region sizes */ - if (g->block_type == 2) - g->region_size[0] = (36 / 2); - else { - if (s->sample_rate_index <= 2) - g->region_size[0] = (36 / 2); - else if (s->sample_rate_index != 8) - g->region_size[0] = (54 / 2); - else - g->region_size[0] = (108 / 2); - } - g->region_size[1] = (576 / 2); - } else { - int region_address1, region_address2, l; - g->block_type = 0; - g->switch_point = 0; - for(i=0;i<3;i++) - g->table_select[i] = get_bits(&s->gb, 5); - /* compute huffman coded region sizes */ - region_address1 = get_bits(&s->gb, 4); - region_address2 = get_bits(&s->gb, 3); -#ifdef DEBUG - printf("region1=%d region2=%d\n", - region_address1, region_address2); -#endif - g->region_size[0] = - band_index_long[s->sample_rate_index][region_address1 + 1] >> 1; - l = region_address1 + region_address2 + 2; - /* should not overflow */ - if (l > 22) - l = 22; - g->region_size[1] = - band_index_long[s->sample_rate_index][l] >> 1; - } - /* convert region offsets to region sizes and truncate - size to big_values */ - g->region_size[2] = (576 / 2); - j = 0; - for(i=0;i<3;i++) { - k = g->region_size[i]; - if (k > g->big_values) - k = g->big_values; - g->region_size[i] = k - j; - j = k; - } - - /* compute band indexes */ - if (g->block_type == 2) { - if (g->switch_point) { - /* if switched mode, we handle the 36 first samples as - long blocks. For 8000Hz, we handle the 48 first - exponents as long blocks (XXX: check this!) */ - if (s->sample_rate_index <= 2) - g->long_end = 8; - else if (s->sample_rate_index != 8) - g->long_end = 6; - else - g->long_end = 4; /* 8000 Hz */ - - if (s->sample_rate_index != 8) - g->short_start = 3; - else - g->short_start = 2; - } else { - g->long_end = 0; - g->short_start = 0; - } - } else { - g->short_start = 13; - g->long_end = 22; - } - - g->preflag = 0; - if (!s->lsf) - g->preflag = get_bits(&s->gb, 1); - g->scalefac_scale = get_bits(&s->gb, 1); - g->count1table_select = get_bits(&s->gb, 1); -#ifdef DEBUG - printf("block_type=%d switch_point=%d\n", - g->block_type, g->switch_point); -#endif - } - } - - /* now we get bits from the main_data_begin offset */ -#ifdef DEBUG - printf("seekback: %d\n", main_data_begin); -#endif - seek_to_maindata(s, main_data_begin); - - for(gr=0;grnb_channels;ch++) { - g = &granules[ch][gr]; - - bits_pos = get_bits_count(&s->gb); - - if (!s->lsf) { - uint8_t *sc; - int slen, slen1, slen2; - - /* MPEG1 scale factors */ - slen1 = slen_table[0][g->scalefac_compress]; - slen2 = slen_table[1][g->scalefac_compress]; -#ifdef DEBUG - printf("slen1=%d slen2=%d\n", slen1, slen2); -#endif - if (g->block_type == 2) { - n = g->switch_point ? 17 : 18; - j = 0; - for(i=0;iscale_factors[j++] = get_bitsz(&s->gb, slen1); - for(i=0;i<18;i++) - g->scale_factors[j++] = get_bitsz(&s->gb, slen2); - for(i=0;i<3;i++) - g->scale_factors[j++] = 0; - } else { - sc = granules[ch][0].scale_factors; - j = 0; - for(k=0;k<4;k++) { - n = (k == 0 ? 6 : 5); - if ((g->scfsi & (0x8 >> k)) == 0) { - slen = (k < 2) ? slen1 : slen2; - for(i=0;iscale_factors[j++] = get_bitsz(&s->gb, slen); - } else { - /* simply copy from last granule */ - for(i=0;iscale_factors[j] = sc[j]; - j++; - } - } - } - g->scale_factors[j++] = 0; - } -#if defined(DEBUG) - { - printf("scfsi=%x gr=%d ch=%d scale_factors:\n", - g->scfsi, gr, ch); - for(i=0;iscale_factors[i]); - printf("\n"); - } -#endif - } else { - int tindex, tindex2, slen[4], sl, sf; - - /* LSF scale factors */ - if (g->block_type == 2) { - tindex = g->switch_point ? 2 : 1; - } else { - tindex = 0; - } - sf = g->scalefac_compress; - if ((s->mode_ext & MODE_EXT_I_STEREO) && ch == 1) { - /* intensity stereo case */ - sf >>= 1; - if (sf < 180) { - lsf_sf_expand(slen, sf, 6, 6, 0); - tindex2 = 3; - } else if (sf < 244) { - lsf_sf_expand(slen, sf - 180, 4, 4, 0); - tindex2 = 4; - } else { - lsf_sf_expand(slen, sf - 244, 3, 0, 0); - tindex2 = 5; - } - } else { - /* normal case */ - if (sf < 400) { - lsf_sf_expand(slen, sf, 5, 4, 4); - tindex2 = 0; - } else if (sf < 500) { - lsf_sf_expand(slen, sf - 400, 5, 4, 0); - tindex2 = 1; - } else { - lsf_sf_expand(slen, sf - 500, 3, 0, 0); - tindex2 = 2; - g->preflag = 1; - } - } - - j = 0; - for(k=0;k<4;k++) { - n = lsf_nsf_table[tindex2][tindex][k]; - sl = slen[k]; - for(i=0;iscale_factors[j++] = get_bitsz(&s->gb, sl); - } - /* XXX: should compute exact size */ - for(;j<40;j++) - g->scale_factors[j] = 0; -#if defined(DEBUG) - { - printf("gr=%d ch=%d scale_factors:\n", - gr, ch); - for(i=0;i<40;i++) - printf(" %d", g->scale_factors[i]); - printf("\n"); - } -#endif - } - - exponents_from_scale_factors(s, g, exponents); - - /* read Huffman coded residue */ - if (huffman_decode(s, g, exponents, - bits_pos + g->part2_3_length) < 0) - return -1; - - /* skip extension bits */ - bits_left = g->part2_3_length - (get_bits_count(&s->gb) - bits_pos); - if (bits_left < 0) { -#ifdef DEBUG - printf("bits_left=%d\n", bits_left); -#endif - return -1; - } - while (bits_left >= 16) { - skip_bits(&s->gb, 16); - bits_left -= 16; - } - if (bits_left > 0) - skip_bits(&s->gb, bits_left); - } /* ch */ - - if (s->nb_channels == 2) - compute_stereo(s, &granules[0][gr], &granules[1][gr]); - - for(ch=0;chnb_channels;ch++) { - g = &granules[ch][gr]; - - reorder_block(s, g); - compute_antialias(s, g); - compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]); - } - } /* gr */ - return nb_granules * 18; -} - -static int mp_decode_frame(MPADecodeContext *s, - int16_t *samples) -{ - int i, nb_frames, ch; - int16_t *samples_ptr; - - init_get_bits(&s->gb, s->inbuf + HEADER_SIZE, - (s->inbuf_ptr - s->inbuf - HEADER_SIZE)*8); - - /* skip error protection field */ - if (s->error_protection) - get_bits(&s->gb, 16); - -#ifdef DEBUG - printf("frame %d:\n", s->frame_count); -#endif - switch(s->layer) { - case 1: - nb_frames = mp_decode_layer1(s); - break; - case 2: - nb_frames = mp_decode_layer2(s); - break; - case 3: - default: - nb_frames = mp_decode_layer3(s); - break; - } -#if defined(DEBUG) - for(i=0;inb_channels;ch++) { - int j; - printf("%d-%d:", i, ch); - for(j=0;jsb_samples[ch][i][j] / FRAC_ONE); - printf("\n"); - } - } -#endif - /* apply the synthesis filter */ - for(ch=0;chnb_channels;ch++) { - samples_ptr = samples + ch; - for(i=0;inb_channels, - s->sb_samples[ch][i]); - samples_ptr += 32 * s->nb_channels; - } - } -#ifdef DEBUG - s->frame_count++; -#endif - return nb_frames * 32 * sizeof(short) * s->nb_channels; -} - -int mpaudec_decode_frame(MPAuDecContext * mpctx, - void *data, int *data_size, - const uint8_t * buf, int buf_size) -{ - MPADecodeContext *s; - const uint8_t *buf_ptr = buf; - int out_size = 0; - int16_t *out_samples = data; - assert(mpctx != NULL); - assert(mpctx->priv_data != NULL); - s = mpctx->priv_data; - - while (buf_size > 0 && out_size == 0) { - uint32_t header; - uint32_t free_format_next_header = 0; - int len = s->inbuf_ptr - s->inbuf; - if (s->frame_size == 0) { - /* no header seen : find one. We need at least HEADER_SIZE - bytes to parse it */ - len = HEADER_SIZE - len; - if (len > buf_size) - len = buf_size; - if (len > 0) { - memcpy(s->inbuf_ptr, buf_ptr, len); - buf_ptr += len; - buf_size -= len; - s->inbuf_ptr += len; - } - if ((s->inbuf_ptr - s->inbuf) >= HEADER_SIZE) { - header = (s->inbuf[0] << 24) | (s->inbuf[1] << 16) | - (s->inbuf[2] << 8) | s->inbuf[3]; - - if (check_header(header) < 0) { - /* no sync found : move by one byte (inefficient, but simple!) */ - memmove(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); - s->inbuf_ptr--; -#ifdef DEBUG - printf("skip %x\n", header); -#endif - /* reset free format frame size to give a chance - to get a new bitrate */ - s->free_format_frame_size = 0; - } else { - if (decode_header(s, header) == 1) { - /* free format: prepare to compute frame size */ - s->frame_size = -1; - } - /* update codec info */ - mpctx->sample_rate = s->sample_rate; - mpctx->channels = s->nb_channels; - mpctx->bit_rate = s->bit_rate; - mpctx->layer = s->layer; - switch(s->layer) { - case 1: - mpctx->frame_size = 384; - break; - case 2: - mpctx->frame_size = 1152; - break; - case 3: - if (s->lsf) - mpctx->frame_size = 576; - else - mpctx->frame_size = 1152; - break; - } - } - } - } else if (s->frame_size == -1) { - /* free format : find next sync to compute frame size */ - len = MPA_MAX_CODED_FRAME_SIZE - len; - if (len > buf_size) - len = buf_size; - if (len == 0) { - /* frame too long: resync */ - s->frame_size = 0; - memmove(s->inbuf, s->inbuf + 1, s->inbuf_ptr - s->inbuf - 1); - s->inbuf_ptr--; - } else { - uint8_t *p, *pend; - uint32_t header1; - int padding; - - memcpy(s->inbuf_ptr, buf_ptr, len); - /* check for header */ - p = s->inbuf_ptr - 3; - pend = s->inbuf_ptr + len - 4; - while (p <= pend && free_format_next_header == 0) { - header = (p[0] << 24) | (p[1] << 16) | - (p[2] << 8) | p[3]; - header1 = (s->inbuf[0] << 24) | (s->inbuf[1] << 16) | - (s->inbuf[2] << 8) | s->inbuf[3]; - /* check with high probability that we have a - valid header */ - if ((header & SAME_HEADER_MASK) == - (header1 & SAME_HEADER_MASK)) { - /* header found: update pointers */ - len = (p + 4) - s->inbuf_ptr; - buf_ptr += len; - buf_size -= len; - s->inbuf_ptr = p; - free_format_next_header = header; - /* compute frame size */ - s->free_format_frame_size = s->inbuf_ptr - s->inbuf; - padding = (header1 >> 9) & 1; - if (s->layer == 1) - s->free_format_frame_size -= padding * 4; - else - s->free_format_frame_size -= padding; -#ifdef DEBUG - printf("free frame size=%d padding=%d\n", - s->free_format_frame_size, padding); -#endif - decode_header(s, header1); - } else - p++; - } - if (free_format_next_header == 0) { - /* not found: simply increase pointers */ - buf_ptr += len; - s->inbuf_ptr += len; - buf_size -= len; - } - } - } else if (len < s->frame_size) { - if (s->frame_size > MPA_MAX_CODED_FRAME_SIZE) - s->frame_size = MPA_MAX_CODED_FRAME_SIZE; - len = s->frame_size - len; - if (len > buf_size) - len = buf_size; - memcpy(s->inbuf_ptr, buf_ptr, len); - buf_ptr += len; - s->inbuf_ptr += len; - buf_size -= len; - } - if (s->frame_size > 0 && - (s->inbuf_ptr - s->inbuf) >= s->frame_size) { - mpctx->coded_frame_size = s->frame_size; - if (mpctx->parse_only) { - /* simply return the frame data */ - *(uint8_t **)data = s->inbuf; - out_size = s->inbuf_ptr - s->inbuf; - } else { - out_size = mp_decode_frame(s, out_samples); - } - if (free_format_next_header != 0) { - s->inbuf[0] = free_format_next_header >> 24; - s->inbuf[1] = free_format_next_header >> 16; - s->inbuf[2] = free_format_next_header >> 8; - s->inbuf[3] = free_format_next_header; - s->inbuf_ptr = s->inbuf + 4; - } else - s->inbuf_ptr = s->inbuf; - s->frame_size = 0; - } - } - *data_size = out_size; - return buf_ptr - buf; -} - -void mpaudec_clear(MPAuDecContext *mpctx) -{ - assert(mpctx != NULL); - free(mpctx->priv_data); - memset(mpctx, 0, sizeof(MPAuDecContext)); -} diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.h deleted file mode 100644 index 06205ba..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudec.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Portions based on avcodec.h from libavcodec. */ - -#ifndef MPAUDEC_H -#define MPAUDEC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* in bytes */ -#define MPAUDEC_MAX_AUDIO_FRAME_SIZE 4608 - -typedef struct MPAuDecContext { - int bit_rate; - int layer; - int sample_rate; - int channels; - int frame_size; - void *priv_data; - int parse_only; - int coded_frame_size; -} MPAuDecContext; - -int mpaudec_init(MPAuDecContext *mpctx); -int mpaudec_decode_frame(MPAuDecContext * mpctx, - void *data, int *data_size, - const unsigned char * buf, int buf_size); -void mpaudec_clear(MPAuDecContext *mpctx); - -#ifdef __cplusplus -} -#endif - -#endif /* MPAUDEC_H */ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudectab.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudectab.h deleted file mode 100644 index 7db90e1..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpaudectab.h +++ /dev/null @@ -1,772 +0,0 @@ -/* Modified slightly by Matt Campbell for the - stand-alone mpaudec library. Based on mpegaudiodectab.h from libavcodec. */ - -static const uint16_t mpa_bitrate_tab[2][3][15] = { - { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 }, - {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 }, - {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } }, - { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160} - } -}; - -static const uint16_t mpa_freq_tab[3] = { 44100, 48000, 32000 }; - -/*******************************************************/ -/* half mpeg encoding window (full precision) */ -static const int32_t mpa_enwindow[257] = { - 0, -1, -1, -1, -1, -1, -1, -2, - -2, -2, -2, -3, -3, -4, -4, -5, - -5, -6, -7, -7, -8, -9, -10, -11, - -13, -14, -16, -17, -19, -21, -24, -26, - -29, -31, -35, -38, -41, -45, -49, -53, - -58, -63, -68, -73, -79, -85, -91, -97, - -104, -111, -117, -125, -132, -139, -147, -154, - -161, -169, -176, -183, -190, -196, -202, -208, - 213, 218, 222, 225, 227, 228, 228, 227, - 224, 221, 215, 208, 200, 189, 177, 163, - 146, 127, 106, 83, 57, 29, -2, -36, - -72, -111, -153, -197, -244, -294, -347, -401, - -459, -519, -581, -645, -711, -779, -848, -919, - -991, -1064, -1137, -1210, -1283, -1356, -1428, -1498, - -1567, -1634, -1698, -1759, -1817, -1870, -1919, -1962, - -2001, -2032, -2057, -2075, -2085, -2087, -2080, -2063, - 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535, - 1414, 1280, 1131, 970, 794, 605, 402, 185, - -45, -288, -545, -814, -1095, -1388, -1692, -2006, - -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788, - -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, - -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585, - -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750, - -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134, - 6574, 5959, 5288, 4561, 3776, 2935, 2037, 1082, - 70, -998, -2122, -3300, -4533, -5818, -7154, -8540, - -9975,-11455,-12980,-14548,-16155,-17799,-19478,-21189, --22929,-24694,-26482,-28289,-30112,-31947,-33791,-35640, --37489,-39336,-41176,-43006,-44821,-46617,-48390,-50137, --51853,-53534,-55178,-56778,-58333,-59838,-61289,-62684, --64019,-65290,-66494,-67629,-68692,-69679,-70590,-71420, --72169,-72835,-73415,-73908,-74313,-74630,-74856,-74992, - 75038, -}; - -/*******************************************************/ -/* layer 2 tables */ - -static const int sblimit_table[5] = { 27 , 30 , 8, 12 , 30 }; - -static const int quant_steps[17] = { - 3, 5, 7, 9, 15, - 31, 63, 127, 255, 511, - 1023, 2047, 4095, 8191, 16383, - 32767, 65535 -}; - -/* we use a negative value if grouped */ -static const int quant_bits[17] = { - -5, -7, 3, -10, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16 -}; - -/* encoding tables which give the quantization index. Note how it is - possible to store them efficiently ! */ -static const unsigned char alloc_table_0[] = { - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, -}; - -static const unsigned char alloc_table_1[] = { - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 3, 0, 1, 2, 3, 4, 5, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, - 2, 0, 1, 16, -}; - -static const unsigned char alloc_table_2[] = { - 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, -}; - -static const unsigned char alloc_table_3[] = { - 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 4, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, -}; - -static const unsigned char alloc_table_4[] = { - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 3, 0, 1, 3, 4, 5, 6, 7, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, - 2, 0, 1, 3, -}; - -static const unsigned char *alloc_tables[5] = -{ alloc_table_0, alloc_table_1, alloc_table_2, alloc_table_3, alloc_table_4, }; - -/*******************************************************/ -/* layer 3 tables */ - -/* layer3 scale factor size */ -static const uint8_t slen_table[2][16] = { - { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }, - { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }, -}; - -/* number of lsf scale factors for a given size */ -static const uint8_t lsf_nsf_table[6][3][4] = { - { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } }, - { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } }, - { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } }, - { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } }, - { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } }, - { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } }, -}; - -/* mpegaudio layer 3 huffman tables */ - -static const uint16_t mpa_huffcodes_1[4] = { - 0x0001, 0x0001, 0x0001, 0x0000, -}; - -static const uint8_t mpa_huffbits_1[4] = { - 1, 3, 2, 3, -}; - -static const uint16_t mpa_huffcodes_2[9] = { - 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002, - 0x0000, -}; - -static const uint8_t mpa_huffbits_2[9] = { - 1, 3, 6, 3, 3, 5, 5, 5, - 6, -}; - -static const uint16_t mpa_huffcodes_3[9] = { - 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002, - 0x0000, -}; - -static const uint8_t mpa_huffbits_3[9] = { - 2, 2, 6, 3, 2, 5, 5, 5, - 6, -}; - -static const uint16_t mpa_huffcodes_5[16] = { - 0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004, - 0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000, -}; - -static const uint8_t mpa_huffbits_5[16] = { - 1, 3, 6, 7, 3, 3, 6, 7, - 6, 6, 7, 8, 7, 6, 7, 8, -}; - -static const uint16_t mpa_huffcodes_6[16] = { - 0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002, - 0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000, -}; - -static const uint8_t mpa_huffbits_6[16] = { - 3, 3, 5, 7, 3, 2, 4, 5, - 4, 4, 5, 6, 6, 5, 6, 7, -}; - -static const uint16_t mpa_huffcodes_7[36] = { - 0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003, - 0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011, - 0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002, - 0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004, - 0x0005, 0x0003, 0x0002, 0x0000, -}; - -static const uint8_t mpa_huffbits_7[36] = { - 1, 3, 6, 8, 8, 9, 3, 4, - 6, 7, 7, 8, 6, 5, 7, 8, - 8, 9, 7, 7, 8, 9, 9, 9, - 7, 7, 8, 9, 9, 10, 8, 8, - 9, 10, 10, 10, -}; - -static const uint16_t mpa_huffcodes_8[36] = { - 0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001, - 0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e, - 0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004, - 0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004, - 0x0004, 0x0001, 0x0001, 0x0000, -}; - -static const uint8_t mpa_huffbits_8[36] = { - 2, 3, 6, 8, 8, 9, 3, 2, - 4, 8, 8, 8, 6, 4, 6, 8, - 8, 9, 8, 8, 8, 9, 9, 10, - 8, 7, 8, 9, 10, 10, 9, 8, - 9, 9, 11, 11, -}; - -static const uint16_t mpa_huffcodes_9[36] = { - 0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004, - 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008, - 0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001, - 0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004, - 0x0006, 0x0002, 0x0006, 0x0000, -}; - -static const uint8_t mpa_huffbits_9[36] = { - 3, 3, 5, 6, 8, 9, 3, 3, - 4, 5, 6, 8, 4, 4, 5, 6, - 7, 8, 6, 5, 6, 7, 7, 8, - 7, 6, 7, 7, 8, 9, 8, 7, - 8, 8, 9, 9, -}; - -static const uint16_t mpa_huffcodes_10[64] = { - 0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011, - 0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007, - 0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006, - 0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007, - 0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003, - 0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003, - 0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001, - 0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000, -}; - -static const uint8_t mpa_huffbits_10[64] = { - 1, 3, 6, 8, 9, 9, 9, 10, - 3, 4, 6, 7, 8, 9, 8, 8, - 6, 6, 7, 8, 9, 10, 9, 9, - 7, 7, 8, 9, 10, 10, 9, 10, - 8, 8, 9, 10, 10, 10, 10, 10, - 9, 9, 10, 10, 11, 11, 10, 11, - 8, 8, 9, 10, 10, 10, 11, 11, - 9, 8, 9, 10, 10, 11, 11, 11, -}; - -static const uint16_t mpa_huffcodes_11[64] = { - 0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f, - 0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a, - 0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005, - 0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005, - 0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005, - 0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e, - 0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001, - 0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000, -}; - -static const uint8_t mpa_huffbits_11[64] = { - 2, 3, 5, 7, 8, 9, 8, 9, - 3, 3, 4, 6, 8, 8, 7, 8, - 5, 5, 6, 7, 8, 9, 8, 8, - 7, 6, 7, 9, 8, 10, 8, 9, - 8, 8, 8, 9, 9, 10, 9, 10, - 8, 8, 9, 10, 10, 11, 10, 11, - 8, 7, 7, 8, 9, 10, 10, 10, - 8, 7, 8, 9, 10, 10, 10, 10, -}; - -static const uint16_t mpa_huffcodes_12[64] = { - 0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a, - 0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b, - 0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007, - 0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005, - 0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005, - 0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002, - 0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001, - 0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000, -}; - -static const uint8_t mpa_huffbits_12[64] = { - 4, 3, 5, 7, 8, 9, 9, 9, - 3, 3, 4, 5, 7, 7, 8, 8, - 5, 4, 5, 6, 7, 8, 7, 8, - 6, 5, 6, 6, 7, 8, 8, 8, - 7, 6, 7, 7, 8, 8, 8, 9, - 8, 7, 8, 8, 8, 9, 8, 9, - 8, 7, 7, 8, 8, 9, 9, 10, - 9, 8, 8, 9, 9, 9, 9, 10, -}; - -static const uint16_t mpa_huffcodes_13[256] = { - 0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047, - 0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013, - 0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021, - 0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e, - 0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041, - 0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010, - 0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040, - 0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e, - 0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b, - 0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018, - 0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054, - 0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011, - 0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f, - 0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f, - 0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a, - 0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a, - 0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057, - 0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010, - 0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051, - 0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b, - 0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050, - 0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016, - 0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024, - 0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007, - 0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034, - 0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005, - 0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d, - 0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003, - 0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015, - 0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002, - 0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b, - 0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001, -}; - -static const uint8_t mpa_huffbits_13[256] = { - 1, 4, 6, 7, 8, 9, 9, 10, - 9, 10, 11, 11, 12, 12, 13, 13, - 3, 4, 6, 7, 8, 8, 9, 9, - 9, 9, 10, 10, 11, 12, 12, 12, - 6, 6, 7, 8, 9, 9, 10, 10, - 9, 10, 10, 11, 11, 12, 13, 13, - 7, 7, 8, 9, 9, 10, 10, 10, - 10, 11, 11, 11, 11, 12, 13, 13, - 8, 7, 9, 9, 10, 10, 11, 11, - 10, 11, 11, 12, 12, 13, 13, 14, - 9, 8, 9, 10, 10, 10, 11, 11, - 11, 11, 12, 11, 13, 13, 14, 14, - 9, 9, 10, 10, 11, 11, 11, 11, - 11, 12, 12, 12, 13, 13, 14, 14, - 10, 9, 10, 11, 11, 11, 12, 12, - 12, 12, 13, 13, 13, 14, 16, 16, - 9, 8, 9, 10, 10, 11, 11, 12, - 12, 12, 12, 13, 13, 14, 15, 15, - 10, 9, 10, 10, 11, 11, 11, 13, - 12, 13, 13, 14, 14, 14, 16, 15, - 10, 10, 10, 11, 11, 12, 12, 13, - 12, 13, 14, 13, 14, 15, 16, 17, - 11, 10, 10, 11, 12, 12, 12, 12, - 13, 13, 13, 14, 15, 15, 15, 16, - 11, 11, 11, 12, 12, 13, 12, 13, - 14, 14, 15, 15, 15, 16, 16, 16, - 12, 11, 12, 13, 13, 13, 14, 14, - 14, 14, 14, 15, 16, 15, 16, 16, - 13, 12, 12, 13, 13, 13, 15, 14, - 14, 17, 15, 15, 15, 17, 16, 16, - 12, 12, 13, 14, 14, 14, 15, 14, - 15, 15, 16, 16, 19, 18, 19, 16, -}; - -static const uint16_t mpa_huffcodes_15[256] = { - 0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c, - 0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f, - 0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033, - 0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024, - 0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030, - 0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021, - 0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d, - 0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d, - 0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f, - 0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b, - 0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a, - 0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026, - 0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041, - 0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e, - 0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a, - 0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019, - 0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c, - 0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014, - 0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c, - 0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f, - 0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039, - 0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009, - 0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b, - 0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b, - 0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041, - 0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007, - 0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d, - 0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003, - 0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016, - 0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001, - 0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a, - 0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000, -}; - -static const uint8_t mpa_huffbits_15[256] = { - 3, 4, 5, 7, 7, 8, 9, 9, - 9, 10, 10, 11, 11, 11, 12, 13, - 4, 3, 5, 6, 7, 7, 8, 8, - 8, 9, 9, 10, 10, 10, 11, 11, - 5, 5, 5, 6, 7, 7, 8, 8, - 8, 9, 9, 10, 10, 11, 11, 11, - 6, 6, 6, 7, 7, 8, 8, 9, - 9, 9, 10, 10, 10, 11, 11, 11, - 7, 6, 7, 7, 8, 8, 9, 9, - 9, 9, 10, 10, 10, 11, 11, 11, - 8, 7, 7, 8, 8, 8, 9, 9, - 9, 9, 10, 10, 11, 11, 11, 12, - 9, 7, 8, 8, 8, 9, 9, 9, - 9, 10, 10, 10, 11, 11, 12, 12, - 9, 8, 8, 9, 9, 9, 9, 10, - 10, 10, 10, 10, 11, 11, 11, 12, - 9, 8, 8, 9, 9, 9, 9, 10, - 10, 10, 10, 11, 11, 12, 12, 12, - 9, 8, 9, 9, 9, 9, 10, 10, - 10, 11, 11, 11, 11, 12, 12, 12, - 10, 9, 9, 9, 10, 10, 10, 10, - 10, 11, 11, 11, 11, 12, 13, 12, - 10, 9, 9, 9, 10, 10, 10, 10, - 11, 11, 11, 11, 12, 12, 12, 13, - 11, 10, 9, 10, 10, 10, 11, 11, - 11, 11, 11, 11, 12, 12, 13, 13, - 11, 10, 10, 10, 10, 11, 11, 11, - 11, 12, 12, 12, 12, 12, 13, 13, - 12, 11, 11, 11, 11, 11, 11, 11, - 12, 12, 12, 12, 13, 13, 12, 13, - 12, 11, 11, 11, 11, 11, 11, 12, - 12, 12, 12, 12, 13, 13, 13, 13, -}; - -static const uint16_t mpa_huffcodes_16[256] = { - 0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d, - 0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011, - 0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f, - 0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009, - 0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a, - 0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010, - 0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057, - 0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a, - 0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4, - 0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009, - 0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109, - 0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010, - 0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085, - 0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a, - 0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105, - 0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008, - 0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9, - 0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007, - 0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa, - 0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b, - 0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db, - 0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004, - 0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea, - 0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006, - 0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d, - 0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004, - 0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3, - 0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002, - 0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7, - 0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000, - 0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009, - 0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003, -}; - -static const uint8_t mpa_huffbits_16[256] = { - 1, 4, 6, 8, 9, 9, 10, 10, - 11, 11, 11, 12, 12, 12, 13, 9, - 3, 4, 6, 7, 8, 9, 9, 9, - 10, 10, 10, 11, 12, 11, 12, 8, - 6, 6, 7, 8, 9, 9, 10, 10, - 11, 10, 11, 11, 11, 12, 12, 9, - 8, 7, 8, 9, 9, 10, 10, 10, - 11, 11, 12, 12, 12, 13, 13, 10, - 9, 8, 9, 9, 10, 10, 11, 11, - 11, 12, 12, 12, 13, 13, 13, 9, - 9, 8, 9, 9, 10, 11, 11, 12, - 11, 12, 12, 13, 13, 13, 14, 10, - 10, 9, 9, 10, 11, 11, 11, 11, - 12, 12, 12, 12, 13, 13, 14, 10, - 10, 9, 10, 10, 11, 11, 11, 12, - 12, 13, 13, 13, 13, 15, 15, 10, - 10, 10, 10, 11, 11, 11, 12, 12, - 13, 13, 13, 13, 14, 14, 14, 10, - 11, 10, 10, 11, 11, 12, 12, 13, - 13, 13, 13, 14, 13, 14, 13, 11, - 11, 11, 10, 11, 12, 12, 12, 12, - 13, 14, 14, 14, 15, 15, 14, 10, - 12, 11, 11, 11, 12, 12, 13, 14, - 14, 14, 14, 14, 14, 13, 14, 11, - 12, 12, 12, 12, 12, 13, 13, 13, - 13, 15, 14, 14, 14, 14, 16, 11, - 14, 12, 12, 12, 13, 13, 14, 14, - 14, 16, 15, 15, 15, 17, 15, 11, - 13, 13, 11, 12, 14, 14, 13, 14, - 14, 15, 16, 15, 17, 15, 14, 11, - 9, 8, 8, 9, 9, 10, 10, 10, - 11, 11, 11, 11, 11, 11, 11, 8, -}; - -static const uint16_t mpa_huffcodes_24[256] = { - 0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2, - 0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058, - 0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8, - 0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a, - 0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd, - 0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012, - 0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc, - 0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010, - 0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2, - 0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e, - 0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca, - 0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c, - 0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3, - 0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a, - 0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb, - 0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011, - 0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1, - 0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010, - 0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d, - 0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b, - 0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a, - 0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a, - 0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b, - 0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006, - 0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c, - 0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004, - 0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a, - 0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002, - 0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e, - 0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000, - 0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009, - 0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003, -}; - -static const uint8_t mpa_huffbits_24[256] = { - 4, 4, 6, 7, 8, 9, 9, 10, - 10, 11, 11, 11, 11, 11, 12, 9, - 4, 4, 5, 6, 7, 8, 8, 9, - 9, 9, 10, 10, 10, 10, 10, 8, - 6, 5, 6, 7, 7, 8, 8, 9, - 9, 9, 9, 10, 10, 10, 11, 7, - 7, 6, 7, 7, 8, 8, 8, 9, - 9, 9, 9, 10, 10, 10, 10, 7, - 8, 7, 7, 8, 8, 8, 8, 9, - 9, 9, 10, 10, 10, 10, 11, 7, - 9, 7, 8, 8, 8, 8, 9, 9, - 9, 9, 10, 10, 10, 10, 10, 7, - 9, 8, 8, 8, 8, 9, 9, 9, - 9, 10, 10, 10, 10, 10, 11, 7, - 10, 8, 8, 8, 9, 9, 9, 9, - 10, 10, 10, 10, 10, 11, 11, 8, - 10, 9, 9, 9, 9, 9, 9, 9, - 9, 10, 10, 10, 10, 11, 11, 8, - 10, 9, 9, 9, 9, 9, 9, 10, - 10, 10, 10, 10, 11, 11, 11, 8, - 11, 9, 9, 9, 9, 10, 10, 10, - 10, 10, 10, 11, 11, 11, 11, 8, - 11, 10, 9, 9, 9, 10, 10, 10, - 10, 10, 10, 11, 11, 11, 11, 8, - 11, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 11, 11, 11, 11, 11, 8, - 11, 10, 10, 10, 10, 10, 10, 10, - 11, 11, 11, 11, 11, 11, 11, 8, - 12, 10, 10, 10, 10, 10, 10, 11, - 11, 11, 11, 11, 11, 11, 11, 8, - 8, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 8, 8, 8, 8, 4, -}; - -static const HuffTable mpa_huff_tables[16] = { -{ 1, NULL, NULL }, -{ 2, mpa_huffbits_1, mpa_huffcodes_1 }, -{ 3, mpa_huffbits_2, mpa_huffcodes_2 }, -{ 3, mpa_huffbits_3, mpa_huffcodes_3 }, -{ 4, mpa_huffbits_5, mpa_huffcodes_5 }, -{ 4, mpa_huffbits_6, mpa_huffcodes_6 }, -{ 6, mpa_huffbits_7, mpa_huffcodes_7 }, -{ 6, mpa_huffbits_8, mpa_huffcodes_8 }, -{ 6, mpa_huffbits_9, mpa_huffcodes_9 }, -{ 8, mpa_huffbits_10, mpa_huffcodes_10 }, -{ 8, mpa_huffbits_11, mpa_huffcodes_11 }, -{ 8, mpa_huffbits_12, mpa_huffcodes_12 }, -{ 16, mpa_huffbits_13, mpa_huffcodes_13 }, -{ 16, mpa_huffbits_15, mpa_huffcodes_15 }, -{ 16, mpa_huffbits_16, mpa_huffcodes_16 }, -{ 16, mpa_huffbits_24, mpa_huffcodes_24 }, -}; - -static const uint8_t mpa_huff_data[32][2] = { -{ 0, 0 }, -{ 1, 0 }, -{ 2, 0 }, -{ 3, 0 }, -{ 0, 0 }, -{ 4, 0 }, -{ 5, 0 }, -{ 6, 0 }, -{ 7, 0 }, -{ 8, 0 }, -{ 9, 0 }, -{ 10, 0 }, -{ 11, 0 }, -{ 12, 0 }, -{ 0, 0 }, -{ 13, 0 }, -{ 14, 1 }, -{ 14, 2 }, -{ 14, 3 }, -{ 14, 4 }, -{ 14, 6 }, -{ 14, 8 }, -{ 14, 10 }, -{ 14, 13 }, -{ 15, 4 }, -{ 15, 5 }, -{ 15, 6 }, -{ 15, 7 }, -{ 15, 8 }, -{ 15, 9 }, -{ 15, 11 }, -{ 15, 13 }, -}; - - -/* huffman tables for quadrules */ -static uint8_t mpa_quad_codes[2][16] = { - { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1, }, - { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, }, -}; - -static uint8_t mpa_quad_bits[2][16] = { - { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, }, - { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }, -}; - -/* band size tables */ -static const uint8_t band_size_long[9][22] = { -{ 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10, - 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, }, /* 44100 */ -{ 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10, - 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, }, /* 48000 */ -{ 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12, - 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, }, /* 32000 */ -{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 22050 */ -{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, }, /* 24000 */ -{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 16000 */ -{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 11025 */ -{ 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, - 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, }, /* 12000 */ -{ 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32, - 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, }, /* 8000 */ -}; - -static const uint8_t band_size_short[9][13] = { -{ 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, }, /* 44100 */ -{ 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, }, /* 48000 */ -{ 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, }, /* 32000 */ -{ 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, }, /* 22050 */ -{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, }, /* 24000 */ -{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 16000 */ -{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 11025 */ -{ 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, }, /* 12000 */ -{ 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, }, /* 8000 */ -}; - -static const uint8_t mpa_pretab[2][22] = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 }, -}; - -/* table for alias reduction (XXX: store it as integer !) */ -static const float ci_table[8] = { - -0.6f, -0.535f, -0.33f, -0.185f, -0.095f, -0.041f, -0.0142f, -0.0037f, -}; diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpegaudio.h b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpegaudio.h deleted file mode 100644 index 51f0291..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/decoder/mpegaudio.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Modified slightly by Matt Campbell for the - stand-alone mpaudec library. Based on mpegaudio.h from libavcodec. */ - -/* max frame size, in samples */ -#define MPA_FRAME_SIZE 1152 - -/* max compressed frame size */ -#define MPA_MAX_CODED_FRAME_SIZE 1792 - -#define MPA_MAX_CHANNELS 2 - -#define SBLIMIT 32 /* number of subbands */ - -#define MPA_STEREO 0 -#define MPA_JSTEREO 1 -#define MPA_DUAL 2 -#define MPA_MONO 3 diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/ikpMP3.cpp b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/ikpMP3.cpp deleted file mode 100644 index f1b0604..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/ikpMP3.cpp +++ /dev/null @@ -1,41 +0,0 @@ - -#include -#include -#include -#include "CIrrKlangAudioStreamLoaderMP3.h" - -using namespace irrklang; - -// this is the only function needed to be implemented for the plugin, it gets -// called by irrKlang when loaded. -// In this plugin, we create an audiostream loader class and register -// it at the engine, but a plugin can do anything. -// Be sure to name the function 'irrKlangPluginInit' and let the dll start with 'ikp'. - -#ifdef WIN32 -// Windows version -__declspec(dllexport) void __stdcall irrKlangPluginInit(ISoundEngine* engine, const char* version) -#else -// Linux version -void irrKlangPluginInit(ISoundEngine* engine, const char* version) -#endif -{ - // do some version security check to be sure that this plugin isn't begin used - // by some newer irrKlang version with changed interfaces which could possibily - // cause crashes. - - if (strcmp(version, IRR_KLANG_VERSION)) - { - printf("This MP3 plugin only supports irrKlang version %s, mp3 playback disabled.\n", IRR_KLANG_VERSION); - return; - } - - // create and register the loader - - CIrrKlangAudioStreamLoaderMP3* loader = new CIrrKlangAudioStreamLoaderMP3(); - engine->registerAudioStreamLoader(loader); - loader->drop(); - - // that's it, that's all. -} - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/license.txt b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/license.txt deleted file mode 100644 index d3d6502..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/license.txt +++ /dev/null @@ -1,458 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/readme.txt b/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/readme.txt deleted file mode 100644 index bbfbf4d..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/plugins/ikpMP3/readme.txt +++ /dev/null @@ -1,7 +0,0 @@ -ikpMP3 is a plugin for irrKlang. -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 , based on - libavcodec from ffmpeg (http://ffmpeg.sourceforge.net/). - See license.txt for license details of this plugin. -