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)Windowsmain
@@ -118,12 +118,12 @@
Level3NDEBUG;%(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)Windowsmain
@@ -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, 20About
+
+ 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
+
+
+ True274, 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, RightTrue
-
- 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, RightTrue
-
- 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
+
MyFormSystem.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 1bc0d79..0000000
Binary files a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.exp and /dev/null differ
diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.lib b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.lib
deleted file mode 100644
index 4c469ca..0000000
Binary files a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/Winx64-visualStudio/irrKlang.lib and /dev/null differ
diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll
new file mode 100644
index 0000000..2271a3f
Binary files /dev/null and b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll differ
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 0000000..b913400
Binary files /dev/null and b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll differ
diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll
new file mode 100644
index 0000000..ef53ee5
Binary files /dev/null and b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll differ
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.
-