aboutsummaryrefslogtreecommitdiff
path: root/editor/io_plugins/editor_sample_import_plugin.cpp
diff options
context:
space:
mode:
authorRémi Verschelde2017-03-19 00:36:26 +0100
committerRémi Verschelde2017-03-19 00:36:26 +0100
commitf8db8a3faa30b71dca33ced38be16d3f93f43e8a (patch)
tree3b798318132cca7eccfbca5818ab55656a2896d7 /editor/io_plugins/editor_sample_import_plugin.cpp
parent1d418afe863c9e553b69174ce63aef203c46d2f0 (diff)
downloadgodot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.tar.gz
godot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.tar.zst
godot-f8db8a3faa30b71dca33ced38be16d3f93f43e8a.zip
Bring that Whole New World to the Old Continent too
Applies the clang-format style to the 2.1 branch as done for master in 5dbf1809c6e3e905b94b8764e99491e608122261.
Diffstat (limited to 'editor/io_plugins/editor_sample_import_plugin.cpp')
-rw-r--r--editor/io_plugins/editor_sample_import_plugin.cpp636
1 files changed, 290 insertions, 346 deletions
diff --git a/editor/io_plugins/editor_sample_import_plugin.cpp b/editor/io_plugins/editor_sample_import_plugin.cpp
index 3ef9eddad..639e99443 100644
--- a/editor/io_plugins/editor_sample_import_plugin.cpp
+++ b/editor/io_plugins/editor_sample_import_plugin.cpp
@@ -27,21 +27,21 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_sample_import_plugin.h"
-#include "editor/editor_file_dialog.h"
#include "editor/editor_dir_dialog.h"
+#include "editor/editor_file_dialog.h"
#include "editor/editor_node.h"
+#include "editor/editor_settings.h"
#include "editor/property_editor.h"
-#include "scene/resources/sample.h"
+#include "io/marshalls.h"
#include "io/resource_saver.h"
#include "os/file_access.h"
-#include "io/marshalls.h"
-#include "editor/editor_settings.h"
+#include "scene/resources/sample.h"
class _EditorSampleImportOptions : public Object {
- OBJ_TYPE(_EditorSampleImportOptions,Object);
-public:
+ OBJ_TYPE(_EditorSampleImportOptions, Object);
+public:
enum CompressMode {
COMPRESS_MODE_DISABLED,
COMPRESS_MODE_RAM,
@@ -67,106 +67,96 @@ public:
CompressMode compress_mode;
CompressBitrate compress_bitrate;
-
- bool _set(const StringName& p_name, const Variant& p_value) {
+ bool _set(const StringName &p_name, const Variant &p_value) {
String n = p_name;
- if (n=="force/8_bit")
- force_8_bit=p_value;
- else if (n=="force/mono")
- force_mono=p_value;
- else if (n=="force/max_rate")
- force_rate=p_value;
- else if (n=="force/max_rate_hz")
- force_rate_hz=p_value;
- else if (n=="edit/trim")
- edit_trim=p_value;
- else if (n=="edit/normalize")
- edit_normalize=p_value;
- else if (n=="edit/loop")
- edit_loop=p_value;
- else if (n=="compress/mode")
- compress_mode=CompressMode(int(p_value));
- else if (n=="compress/bitrate")
- compress_bitrate=CompressBitrate(int(p_value));
+ if (n == "force/8_bit")
+ force_8_bit = p_value;
+ else if (n == "force/mono")
+ force_mono = p_value;
+ else if (n == "force/max_rate")
+ force_rate = p_value;
+ else if (n == "force/max_rate_hz")
+ force_rate_hz = p_value;
+ else if (n == "edit/trim")
+ edit_trim = p_value;
+ else if (n == "edit/normalize")
+ edit_normalize = p_value;
+ else if (n == "edit/loop")
+ edit_loop = p_value;
+ else if (n == "compress/mode")
+ compress_mode = CompressMode(int(p_value));
+ else if (n == "compress/bitrate")
+ compress_bitrate = CompressBitrate(int(p_value));
else
return false;
return true;
-
}
- bool _get(const StringName& p_name,Variant &r_ret) const{
+ bool _get(const StringName &p_name, Variant &r_ret) const {
String n = p_name;
- if (n=="force/8_bit")
- r_ret=force_8_bit;
- else if (n=="force/mono")
- r_ret=force_mono;
- else if (n=="force/max_rate")
- r_ret=force_rate;
- else if (n=="force/max_rate_hz")
- r_ret=force_rate_hz;
- else if (n=="edit/trim")
- r_ret=edit_trim;
- else if (n=="edit/normalize")
- r_ret=edit_normalize;
- else if (n=="edit/loop")
- r_ret=edit_loop;
- else if (n=="compress/mode")
- r_ret=compress_mode;
- else if (n=="compress/bitrate")
- r_ret=compress_bitrate;
+ if (n == "force/8_bit")
+ r_ret = force_8_bit;
+ else if (n == "force/mono")
+ r_ret = force_mono;
+ else if (n == "force/max_rate")
+ r_ret = force_rate;
+ else if (n == "force/max_rate_hz")
+ r_ret = force_rate_hz;
+ else if (n == "edit/trim")
+ r_ret = edit_trim;
+ else if (n == "edit/normalize")
+ r_ret = edit_normalize;
+ else if (n == "edit/loop")
+ r_ret = edit_loop;
+ else if (n == "compress/mode")
+ r_ret = compress_mode;
+ else if (n == "compress/bitrate")
+ r_ret = compress_bitrate;
else
return false;
return true;
-
}
- void _get_property_list( List<PropertyInfo> *p_list) const{
+ void _get_property_list(List<PropertyInfo> *p_list) const {
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/8_bit"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/mono"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/max_rate"));
- p_list->push_back(PropertyInfo(Variant::REAL,"force/max_rate_hz",PROPERTY_HINT_EXP_RANGE,"11025,192000,1"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/trim"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/normalize"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/loop"));
- p_list->push_back(PropertyInfo(Variant::INT,"compress/mode",PROPERTY_HINT_ENUM,"Disabled,RAM (Ima-ADPCM)"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "force/8_bit"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "force/mono"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "force/max_rate"));
+ p_list->push_back(PropertyInfo(Variant::REAL, "force/max_rate_hz", PROPERTY_HINT_EXP_RANGE, "11025,192000,1"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "edit/trim"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "edit/normalize"));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "edit/loop"));
+ p_list->push_back(PropertyInfo(Variant::INT, "compress/mode", PROPERTY_HINT_ENUM, "Disabled,RAM (Ima-ADPCM)"));
//p_list->push_back(PropertyInfo(Variant::INT,"compress/bitrate",PROPERTY_HINT_ENUM,"64,96,128,192"));
-
-
}
-
static void _bind_methods() {
-
- ADD_SIGNAL( MethodInfo("changed"));
+ ADD_SIGNAL(MethodInfo("changed"));
}
-
_EditorSampleImportOptions() {
- force_8_bit=false;
- force_mono=false;
- force_rate=true;
- force_rate_hz=44100;
+ force_8_bit = false;
+ force_mono = false;
+ force_rate = true;
+ force_rate_hz = 44100;
- edit_trim=true;
- edit_normalize=true;
- edit_loop=false;
+ edit_trim = true;
+ edit_normalize = true;
+ edit_loop = false;
- compress_mode=COMPRESS_MODE_RAM;
- compress_bitrate=COMPRESS_128;
+ compress_mode = COMPRESS_MODE_RAM;
+ compress_bitrate = COMPRESS_128;
}
-
-
};
class EditorSampleImportDialog : public ConfirmationDialog {
- OBJ_TYPE(EditorSampleImportDialog,ConfirmationDialog);
+ OBJ_TYPE(EditorSampleImportDialog, ConfirmationDialog);
EditorSampleImportPlugin *plugin;
@@ -179,17 +169,15 @@ class EditorSampleImportDialog : public ConfirmationDialog {
_EditorSampleImportOptions *options;
-
public:
-
- void _choose_files(const Vector<String>& p_path) {
+ void _choose_files(const Vector<String> &p_path) {
String files;
- for(int i=0;i<p_path.size();i++) {
+ for (int i = 0; i < p_path.size(); i++) {
- if (i>0)
- files+=",";
- files+=p_path[i];
+ if (i > 0)
+ files += ",";
+ files += p_path[i];
}
/*
if (p_path.size()) {
@@ -200,9 +188,8 @@ public:
save_path->set_text(ipath.get_base_dir());
}*/
import_path->set_text(files);
-
}
- void _choose_save_dir(const String& p_path) {
+ void _choose_save_dir(const String &p_path) {
save_path->set_text(p_path);
}
@@ -215,14 +202,12 @@ public:
void _browse_target() {
save_select->popup_centered_ratio();
-
}
+ void popup_import(const String &p_path) {
- void popup_import(const String& p_path) {
-
- popup_centered(Size2(400,400)*EDSCALE);
- if (p_path!="") {
+ popup_centered(Size2(400, 400) * EDSCALE);
+ if (p_path != "") {
Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
ERR_FAIL_COND(!rimd.is_valid());
@@ -230,32 +215,31 @@ public:
save_path->set_text(p_path.get_base_dir());
List<String> opts;
rimd->get_options(&opts);
- for(List<String>::Element *E=opts.front();E;E=E->next()) {
+ for (List<String>::Element *E = opts.front(); E; E = E->next()) {
- options->_set(E->get(),rimd->get_option(E->get()));
+ options->_set(E->get(), rimd->get_option(E->get()));
}
String src = "";
- for(int i=0;i<rimd->get_source_count();i++) {
- if (i>0)
- src+=",";
- src+=EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
+ for (int i = 0; i < rimd->get_source_count(); i++) {
+ if (i > 0)
+ src += ",";
+ src += EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
}
import_path->set_text(src);
}
}
-
void _import() {
Vector<String> samples = import_path->get_text().split(",");
- if (samples.size()==0) {
+ if (samples.size() == 0) {
error_dialog->set_text(TTR("No samples to import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
}
- if (save_path->get_text().strip_edges()=="") {
+ if (save_path->get_text().strip_edges() == "") {
error_dialog->set_text(TTR("Target path is empty."));
error_dialog->popup_centered_minsize();
return;
@@ -273,43 +257,39 @@ public:
return;
}
- for(int i=0;i<samples.size();i++) {
+ for (int i = 0; i < samples.size(); i++) {
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
+ Ref<ResourceImportMetadata> imd = memnew(ResourceImportMetadata);
List<PropertyInfo> pl;
options->_get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
+ for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) {
Variant v;
- String opt=E->get().name;
- options->_get(opt,v);
- imd->set_option(opt,v);
-
+ String opt = E->get().name;
+ options->_get(opt, v);
+ imd->set_option(opt, v);
}
imd->add_source(EditorImportPlugin::validate_source_path(samples[i]));
String dst = save_path->get_text();
- if (dst=="") {
+ if (dst == "") {
error_dialog->set_text(TTR("Save path is empty!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
}
- dst = dst.plus_file(samples[i].get_file().basename()+".smp");
+ dst = dst.plus_file(samples[i].get_file().basename() + ".smp");
- Error err = plugin->import(dst,imd);
+ Error err = plugin->import(dst, imd);
}
hide();
-
}
-
void _notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
+ if (p_what == NOTIFICATION_ENTER_TREE) {
option_editor->edit(options);
}
@@ -317,149 +297,141 @@ public:
static void _bind_methods() {
-
- ObjectTypeDB::bind_method("_choose_files",&EditorSampleImportDialog::_choose_files);
- ObjectTypeDB::bind_method("_choose_save_dir",&EditorSampleImportDialog::_choose_save_dir);
- ObjectTypeDB::bind_method("_import",&EditorSampleImportDialog::_import);
- ObjectTypeDB::bind_method("_browse",&EditorSampleImportDialog::_browse);
- ObjectTypeDB::bind_method("_browse_target",&EditorSampleImportDialog::_browse_target);
- // ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
+ ObjectTypeDB::bind_method("_choose_files", &EditorSampleImportDialog::_choose_files);
+ ObjectTypeDB::bind_method("_choose_save_dir", &EditorSampleImportDialog::_choose_save_dir);
+ ObjectTypeDB::bind_method("_import", &EditorSampleImportDialog::_import);
+ ObjectTypeDB::bind_method("_browse", &EditorSampleImportDialog::_browse);
+ ObjectTypeDB::bind_method("_browse_target", &EditorSampleImportDialog::_browse_target);
+ // ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
}
EditorSampleImportDialog(EditorSampleImportPlugin *p_plugin) {
- plugin=p_plugin;
-
+ plugin = p_plugin;
set_title(TTR("Import Audio Samples"));
- VBoxContainer *vbc = memnew( VBoxContainer );
+ VBoxContainer *vbc = memnew(VBoxContainer);
add_child(vbc);
set_child_rect(vbc);
+ HBoxContainer *hbc = memnew(HBoxContainer);
+ vbc->add_margin_child(TTR("Source Sample(s):"), hbc);
- HBoxContainer *hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Source Sample(s):"),hbc);
-
- import_path = memnew( LineEdit );
+ import_path = memnew(LineEdit);
import_path->set_h_size_flags(SIZE_EXPAND_FILL);
hbc->add_child(import_path);
- Button * import_choose = memnew( Button );
+ Button *import_choose = memnew(Button);
import_choose->set_text(" .. ");
hbc->add_child(import_choose);
- import_choose->connect("pressed", this,"_browse");
+ import_choose->connect("pressed", this, "_browse");
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Target Path:"),hbc);
+ hbc = memnew(HBoxContainer);
+ vbc->add_margin_child(TTR("Target Path:"), hbc);
- save_path = memnew( LineEdit );
+ save_path = memnew(LineEdit);
save_path->set_h_size_flags(SIZE_EXPAND_FILL);
hbc->add_child(save_path);
- Button * save_choose = memnew( Button );
+ Button *save_choose = memnew(Button);
save_choose->set_text(" .. ");
hbc->add_child(save_choose);
- save_choose->connect("pressed", this,"_browse_target");
+ save_choose->connect("pressed", this, "_browse_target");
file_select = memnew(EditorFileDialog);
file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
add_child(file_select);
file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES);
- file_select->connect("files_selected", this,"_choose_files");
+ file_select->connect("files_selected", this, "_choose_files");
file_select->add_filter("*.wav ; MS Waveform");
- save_select = memnew( EditorDirDialog );
+ save_select = memnew(EditorDirDialog);
add_child(save_select);
- // save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this,"_choose_save_dir");
+ // save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
+ save_select->connect("dir_selected", this, "_choose_save_dir");
- get_ok()->connect("pressed", this,"_import");
+ get_ok()->connect("pressed", this, "_import");
get_ok()->set_text(TTR("Import"));
-
- error_dialog = memnew ( ConfirmationDialog );
+ error_dialog = memnew(ConfirmationDialog);
add_child(error_dialog);
error_dialog->get_ok()->set_text(TTR("Accept"));
- // error_dialog->get_cancel()->hide();
+ // error_dialog->get_cancel()->hide();
set_hide_on_ok(false);
- options = memnew( _EditorSampleImportOptions );
+ options = memnew(_EditorSampleImportOptions);
- option_editor = memnew( PropertyEditor );
+ option_editor = memnew(PropertyEditor);
option_editor->hide_top_label();
- vbc->add_margin_child(TTR("Options:"),option_editor,true);
+ vbc->add_margin_child(TTR("Options:"), option_editor, true);
}
~EditorSampleImportDialog() {
memdelete(options);
}
-
};
-
String EditorSampleImportPlugin::get_name() const {
return "sample";
}
-String EditorSampleImportPlugin::get_visible_name() const{
+String EditorSampleImportPlugin::get_visible_name() const {
return TTR("Audio Sample");
}
-void EditorSampleImportPlugin::import_dialog(const String& p_from){
+void EditorSampleImportPlugin::import_dialog(const String &p_from) {
dialog->popup_import(p_from);
}
-Error EditorSampleImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
+Error EditorSampleImportPlugin::import(const String &p_path, const Ref<ResourceImportMetadata> &p_from) {
- ERR_FAIL_COND_V(p_from->get_source_count()!=1,ERR_INVALID_PARAMETER);
+ ERR_FAIL_COND_V(p_from->get_source_count() != 1, ERR_INVALID_PARAMETER);
- Ref<ResourceImportMetadata> from=p_from;
+ Ref<ResourceImportMetadata> from = p_from;
- String src_path=EditorImportPlugin::expand_source_path(from->get_source_path(0));
+ String src_path = EditorImportPlugin::expand_source_path(from->get_source_path(0));
Ref<Sample> smp = ResourceLoader::load(src_path);
- ERR_FAIL_COND_V(smp.is_null(),ERR_CANT_OPEN);
-
+ ERR_FAIL_COND_V(smp.is_null(), ERR_CANT_OPEN);
float rate = smp->get_mix_rate();
- bool is16 = smp->get_format()==Sample::FORMAT_PCM16;
- int chans = smp->is_stereo()?2:1;
+ bool is16 = smp->get_format() == Sample::FORMAT_PCM16;
+ int chans = smp->is_stereo() ? 2 : 1;
int len = smp->get_length();
- Sample::LoopFormat loop= smp->get_loop_format();
+ Sample::LoopFormat loop = smp->get_loop_format();
int loop_beg = smp->get_loop_begin();
int loop_end = smp->get_loop_end();
print_line("Input Sample: ");
- print_line("\tlen: "+itos(len));
- print_line("\tchans: "+itos(chans));
- print_line("\t16bits: "+itos(is16));
- print_line("\trate: "+itos(rate));
- print_line("\tloop: "+itos(loop));
- print_line("\tloop begin: "+itos(loop_beg));
- print_line("\tloop end: "+itos(loop_end));
+ print_line("\tlen: " + itos(len));
+ print_line("\tchans: " + itos(chans));
+ print_line("\t16bits: " + itos(is16));
+ print_line("\trate: " + itos(rate));
+ print_line("\tloop: " + itos(loop));
+ print_line("\tloop begin: " + itos(loop_beg));
+ print_line("\tloop end: " + itos(loop_end));
Vector<float> data;
- data.resize(len*chans);
+ data.resize(len * chans);
{
DVector<uint8_t> src_data = smp->get_data();
DVector<uint8_t>::Read sr = src_data.read();
+ for (int i = 0; i < len * chans; i++) {
- for(int i=0;i<len*chans;i++) {
-
- float s=0;
+ float s = 0;
if (is16) {
- int16_t i16 = decode_uint16(&sr[i*2]);
- s=i16/32767.0;
+ int16_t i16 = decode_uint16(&sr[i * 2]);
+ s = i16 / 32767.0;
} else {
int8_t i8 = sr[i];
- s=i8/127.0;
+ s = i8 / 127.0;
}
- data[i]=s;
+ data[i] = s;
}
}
@@ -471,64 +443,62 @@ Error EditorSampleImportPlugin::import(const String& p_path, const Ref<ResourceI
//resampleeee!!!
int new_data_len = len * limit_rate_hz / rate;
Vector<float> new_data;
- new_data.resize( new_data_len * chans );
- for(int c=0;c<chans;c++) {
+ new_data.resize(new_data_len * chans);
+ for (int c = 0; c < chans; c++) {
- for(int i=0;i<new_data_len;i++) {
+ for (int i = 0; i < new_data_len; i++) {
//simple cubic interpolation should be enough.
float pos = float(i) * len / new_data_len;
- float mu = pos-Math::floor(pos);
+ float mu = pos - Math::floor(pos);
int ipos = int(Math::floor(pos));
- float y0=data[MAX(0,ipos-1)*chans+c];
- float y1=data[ipos*chans+c];
- float y2=data[MIN(len-1,ipos+1)*chans+c];
- float y3=data[MIN(len-1,ipos+2)*chans+c];
+ float y0 = data[MAX(0, ipos - 1) * chans + c];
+ float y1 = data[ipos * chans + c];
+ float y2 = data[MIN(len - 1, ipos + 1) * chans + c];
+ float y3 = data[MIN(len - 1, ipos + 2) * chans + c];
- float mu2 = mu*mu;
+ float mu2 = mu * mu;
float a0 = y3 - y2 - y0 + y1;
float a1 = y0 - y1 - a0;
float a2 = y2 - y0;
float a3 = y1;
- float res=(a0*mu*mu2+a1*mu2+a2*mu+a3);
+ float res = (a0 * mu * mu2 + a1 * mu2 + a2 * mu + a3);
- new_data[i*chans+c]=res;
+ new_data[i * chans + c] = res;
}
}
if (loop) {
- loop_beg=loop_beg*new_data_len/len;
- loop_end=loop_end*new_data_len/len;
+ loop_beg = loop_beg * new_data_len / len;
+ loop_end = loop_end * new_data_len / len;
}
- data=new_data;
- rate=limit_rate_hz;
- len=new_data_len;
+ data = new_data;
+ rate = limit_rate_hz;
+ len = new_data_len;
}
-
bool normalize = from->get_option("edit/normalize");
if (normalize) {
- float max=0;
- for(int i=0;i<data.size();i++) {
+ float max = 0;
+ for (int i = 0; i < data.size(); i++) {
float amp = Math::abs(data[i]);
- if (amp>max)
- max=amp;
+ if (amp > max)
+ max = amp;
}
- if (max>0) {
+ if (max > 0) {
- float mult=1.0/max;
- for(int i=0;i<data.size();i++) {
+ float mult = 1.0 / max;
+ for (int i = 0; i < data.size(); i++) {
- data[i]*=mult;
+ data[i] *= mult;
}
-
}
}
@@ -536,172 +506,163 @@ Error EditorSampleImportPlugin::import(const String& p_path, const Ref<ResourceI
if (trim && !loop) {
- int first=0;
- int last=(len*chans)-1;
- bool found=false;
+ int first = 0;
+ int last = (len * chans) - 1;
+ bool found = false;
float limit = Math::db2linear(-30);
- for(int i=0;i<data.size();i++) {
+ for (int i = 0; i < data.size(); i++) {
float amp = Math::abs(data[i]);
if (!found && amp > limit) {
- first=i;
- found=true;
+ first = i;
+ found = true;
}
if (found && amp > limit) {
- last=i;
+ last = i;
}
}
- first/=chans;
- last/=chans;
+ first /= chans;
+ last /= chans;
- if (first<last) {
+ if (first < last) {
Vector<float> new_data;
- new_data.resize((last-first+1)*chans);
- for(int i=first*chans;i<=last*chans;i++) {
- new_data[i-first*chans]=data[i];
+ new_data.resize((last - first + 1) * chans);
+ for (int i = first * chans; i <= last * chans; i++) {
+ new_data[i - first * chans] = data[i];
}
- data=new_data;
- len=data.size()/chans;
+ data = new_data;
+ len = data.size() / chans;
}
-
}
bool make_loop = from->get_option("edit/loop");
if (make_loop && !loop) {
- loop=Sample::LOOP_FORWARD;
- loop_beg=0;
- loop_end=len;
+ loop = Sample::LOOP_FORWARD;
+ loop_beg = 0;
+ loop_end = len;
}
int compression = from->get_option("compress/mode");
bool force_mono = from->get_option("force/mono");
-
- if (force_mono && chans==2) {
+ if (force_mono && chans == 2) {
Vector<float> new_data;
- new_data.resize(data.size()/2);
- for(int i=0;i<len;i++) {
- new_data[i]=(data[i*2+0]+data[i*2+1])/2.0;
+ new_data.resize(data.size() / 2);
+ for (int i = 0; i < len; i++) {
+ new_data[i] = (data[i * 2 + 0] + data[i * 2 + 1]) / 2.0;
}
- data=new_data;
- chans=1;
+ data = new_data;
+ chans = 1;
}
bool force_8_bit = from->get_option("force/8_bit");
if (force_8_bit) {
- is16=false;
+ is16 = false;
}
-
DVector<uint8_t> dst_data;
Sample::Format dst_format;
- if ( compression == _EditorSampleImportOptions::COMPRESS_MODE_RAM) {
+ if (compression == _EditorSampleImportOptions::COMPRESS_MODE_RAM) {
- dst_format=Sample::FORMAT_IMA_ADPCM;
- if (chans==1) {
- _compress_ima_adpcm(data,dst_data);
+ dst_format = Sample::FORMAT_IMA_ADPCM;
+ if (chans == 1) {
+ _compress_ima_adpcm(data, dst_data);
} else {
print_line("INTERLEAAVE!");
-
-
//byte interleave
Vector<float> left;
Vector<float> right;
- int tlen = data.size()/2;
+ int tlen = data.size() / 2;
left.resize(tlen);
right.resize(tlen);
- for(int i=0;i<tlen;i++) {
- left[i]=data[i*2+0];
- right[i]=data[i*2+1];
+ for (int i = 0; i < tlen; i++) {
+ left[i] = data[i * 2 + 0];
+ right[i] = data[i * 2 + 1];
}
DVector<uint8_t> bleft;
DVector<uint8_t> bright;
- _compress_ima_adpcm(left,bleft);
- _compress_ima_adpcm(right,bright);
+ _compress_ima_adpcm(left, bleft);
+ _compress_ima_adpcm(right, bright);
int dl = bleft.size();
- dst_data.resize( dl *2 );
+ dst_data.resize(dl * 2);
- DVector<uint8_t>::Write w=dst_data.write();
- DVector<uint8_t>::Read rl=bleft.read();
- DVector<uint8_t>::Read rr=bright.read();
+ DVector<uint8_t>::Write w = dst_data.write();
+ DVector<uint8_t>::Read rl = bleft.read();
+ DVector<uint8_t>::Read rr = bright.read();
- for(int i=0;i<dl;i++) {
- w[i*2+0]=rl[i];
- w[i*2+1]=rr[i];
+ for (int i = 0; i < dl; i++) {
+ w[i * 2 + 0] = rl[i];
+ w[i * 2 + 1] = rr[i];
}
}
-// print_line("compressing ima-adpcm, resulting buffersize is "+itos(dst_data.size())+" from "+itos(data.size()));
+ // print_line("compressing ima-adpcm, resulting buffersize is "+itos(dst_data.size())+" from "+itos(data.size()));
} else {
- dst_format=is16?Sample::FORMAT_PCM16:Sample::FORMAT_PCM8;
- dst_data.resize( data.size() * (is16?2:1));
+ dst_format = is16 ? Sample::FORMAT_PCM16 : Sample::FORMAT_PCM8;
+ dst_data.resize(data.size() * (is16 ? 2 : 1));
{
DVector<uint8_t>::Write w = dst_data.write();
- int ds=data.size();
- for(int i=0;i<ds;i++) {
+ int ds = data.size();
+ for (int i = 0; i < ds; i++) {
if (is16) {
- int16_t v = CLAMP(data[i]*32767,-32768,32767);
- encode_uint16(v,&w[i*2]);
+ int16_t v = CLAMP(data[i] * 32767, -32768, 32767);
+ encode_uint16(v, &w[i * 2]);
} else {
- int8_t v = CLAMP(data[i]*127,-128,127);
- w[i]=v;
+ int8_t v = CLAMP(data[i] * 127, -128, 127);
+ w[i] = v;
}
}
}
}
-
Ref<Sample> target;
if (ResourceCache::has(p_path)) {
- target = Ref<Sample>( ResourceCache::get(p_path)->cast_to<Sample>() );
+ target = Ref<Sample>(ResourceCache::get(p_path)->cast_to<Sample>());
} else {
target = smp;
}
- target->create(dst_format,chans==2?true:false,len);
+ target->create(dst_format, chans == 2 ? true : false, len);
target->set_data(dst_data);
target->set_mix_rate(rate);
target->set_loop_format(loop);
target->set_loop_begin(loop_beg);
target->set_loop_end(loop_end);
- from->set_source_md5(0,FileAccess::get_md5(src_path));
+ from->set_source_md5(0, FileAccess::get_md5(src_path));
from->set_editor(get_name());
target->set_import_metadata(from);
-
- Error err = ResourceSaver::save(p_path,smp);
+ Error err = ResourceSaver::save(p_path, smp);
return err;
-
}
-void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float>& p_data,DVector<uint8_t>& dst_data) {
-
+void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float> &p_data, DVector<uint8_t> &dst_data) {
/*p_sample_data->data = (void*)malloc(len);
xm_s8 *dataptr=(xm_s8*)p_sample_data->data;*/
@@ -723,58 +684,54 @@ void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float>& p_data,D
-1, -1, -1, -1, 2, 4, 6, 8
};
-
int datalen = p_data.size();
- int datamax=datalen;
- if (datalen&1)
+ int datamax = datalen;
+ if (datalen & 1)
datalen++;
- dst_data.resize(datalen/2+4);
+ dst_data.resize(datalen / 2 + 4);
DVector<uint8_t>::Write w = dst_data.write();
-
- int i,step_idx=0,prev=0;
+ int i, step_idx = 0, prev = 0;
uint8_t *out = w.ptr();
//int16_t xm_prev=0;
- const float *in=p_data.ptr();
-
+ const float *in = p_data.ptr();
/* initial value is zero */
- *(out++) =0;
- *(out++) =0;
+ *(out++) = 0;
+ *(out++) = 0;
/* Table index initial value */
- *(out++) =0;
+ *(out++) = 0;
/* unused */
- *(out++) =0;
+ *(out++) = 0;
- for (i=0;i<datalen;i++) {
- int step,diff,vpdiff,mask;
+ for (i = 0; i < datalen; i++) {
+ int step, diff, vpdiff, mask;
uint8_t nibble;
int16_t xm_sample;
- if (i>=datamax)
- xm_sample=0;
+ if (i >= datamax)
+ xm_sample = 0;
else {
-
- xm_sample=CLAMP(in[i]*32767.0,-32768,32767);
+ xm_sample = CLAMP(in[i] * 32767.0, -32768, 32767);
//if (xm_sample==32767 || xm_sample==-32768)
// printf("clippy!\n",xm_sample);
}
- // xm_sample=xm_sample+xm_prev;
- // xm_prev=xm_sample;
+ // xm_sample=xm_sample+xm_prev;
+ // xm_prev=xm_sample;
- diff = (int)xm_sample - prev ;
+ diff = (int)xm_sample - prev;
- nibble=0 ;
- step = _ima_adpcm_step_table[ step_idx ];
- vpdiff = step >> 3 ;
+ nibble = 0;
+ step = _ima_adpcm_step_table[step_idx];
+ vpdiff = step >> 3;
if (diff < 0) {
- nibble=8;
- diff=-diff ;
+ nibble = 8;
+ diff = -diff;
}
- mask = 4 ;
+ mask = 4;
while (mask) {
if (diff >= step) {
@@ -784,53 +741,48 @@ void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float>& p_data,D
vpdiff += step;
}
- step >>= 1 ;
- mask >>= 1 ;
+ step >>= 1;
+ mask >>= 1;
};
- if (nibble&8)
- prev-=vpdiff ;
+ if (nibble & 8)
+ prev -= vpdiff;
else
- prev+=vpdiff ;
+ prev += vpdiff;
if (prev > 32767) {
//printf("%i,xms %i, prev %i,diff %i, vpdiff %i, clip up %i\n",i,xm_sample,prev,diff,vpdiff,prev);
- prev=32767;
+ prev = 32767;
} else if (prev < -32768) {
//printf("%i,xms %i, prev %i,diff %i, vpdiff %i, clip down %i\n",i,xm_sample,prev,diff,vpdiff,prev);
- prev = -32768 ;
+ prev = -32768;
}
step_idx += _ima_adpcm_index_table[nibble];
- if (step_idx< 0)
- step_idx= 0 ;
- else if (step_idx> 88)
- step_idx= 88 ;
-
+ if (step_idx < 0)
+ step_idx = 0;
+ else if (step_idx > 88)
+ step_idx = 88;
- if (i&1) {
- *out|=nibble<<4;
+ if (i & 1) {
+ *out |= nibble << 4;
out++;
} else {
- *out=nibble;
+ *out = nibble;
}
/*dataptr[i]=prev>>8;*/
}
-
}
+EditorSampleImportPlugin *EditorSampleImportPlugin::singleton = NULL;
-EditorSampleImportPlugin* EditorSampleImportPlugin::singleton=NULL;
-
-
-void EditorSampleImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
+void EditorSampleImportPlugin::import_from_drop(const Vector<String> &p_drop, const String &p_dest_path) {
Vector<String> files;
- for(int i=0;i<p_drop.size();i++) {
+ for (int i = 0; i < p_drop.size(); i++) {
String ext = p_drop[i].extension().to_lower();
- if (ext=="wav") {
+ if (ext == "wav") {
files.push_back(p_drop[i]);
}
@@ -843,22 +795,21 @@ void EditorSampleImportPlugin::import_from_drop(const Vector<String>& p_drop, co
}
}
-void EditorSampleImportPlugin::reimport_multiple_files(const Vector<String>& p_list) {
+void EditorSampleImportPlugin::reimport_multiple_files(const Vector<String> &p_list) {
- if (p_list.size()==0)
+ if (p_list.size() == 0)
return;
Vector<String> sources;
- for(int i=0;i<p_list.size();i++) {
+ for (int i = 0; i < p_list.size(); i++) {
int idx;
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(p_list[i],&idx);
+ EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(p_list[i], &idx);
if (efsd) {
- for(int j=0;j<efsd->get_source_count(idx);j++) {
- String file = expand_source_path(efsd->get_source_file(idx,j));
- if (sources.find(file)==-1) {
+ for (int j = 0; j < efsd->get_source_count(idx); j++) {
+ String file = expand_source_path(efsd->get_source_file(idx, j));
+ if (sources.find(file) == -1) {
sources.push_back(file);
}
-
}
}
}
@@ -876,48 +827,41 @@ bool EditorSampleImportPlugin::can_reimport_multiple_files() const {
return true;
}
-EditorSampleImportPlugin::EditorSampleImportPlugin(EditorNode* p_editor) {
+EditorSampleImportPlugin::EditorSampleImportPlugin(EditorNode *p_editor) {
- singleton=this;
- dialog = memnew( EditorSampleImportDialog(this));
+ singleton = this;
+ dialog = memnew(EditorSampleImportDialog(this));
p_editor->get_gui_base()->add_child(dialog);
}
-Vector<uint8_t> EditorSampleExportPlugin::custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
-
+Vector<uint8_t> EditorSampleExportPlugin::custom_export(String &p_path, const Ref<EditorExportPlatform> &p_platform) {
-
- if (EditorImportExport::get_singleton()->sample_get_action()==EditorImportExport::SAMPLE_ACTION_NONE || p_path.extension().to_lower()!="wav") {
+ if (EditorImportExport::get_singleton()->sample_get_action() == EditorImportExport::SAMPLE_ACTION_NONE || p_path.extension().to_lower() != "wav") {
return Vector<uint8_t>();
}
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
+ Ref<ResourceImportMetadata> imd = memnew(ResourceImportMetadata);
imd->add_source(EditorImportPlugin::validate_source_path(p_path));
- imd->set_option("force/8_bit",false);
- imd->set_option("force/mono",false);
- imd->set_option("force/max_rate",true);
- imd->set_option("force/max_rate_hz",EditorImportExport::get_singleton()->sample_get_max_hz());
- imd->set_option("edit/trim",EditorImportExport::get_singleton()->sample_get_trim());
- imd->set_option("edit/normalize",false);
- imd->set_option("edit/loop",false);
- imd->set_option("compress/mode",1);
+ imd->set_option("force/8_bit", false);
+ imd->set_option("force/mono", false);
+ imd->set_option("force/max_rate", true);
+ imd->set_option("force/max_rate_hz", EditorImportExport::get_singleton()->sample_get_max_hz());
+ imd->set_option("edit/trim", EditorImportExport::get_singleton()->sample_get_trim());
+ imd->set_option("edit/normalize", false);
+ imd->set_option("edit/loop", false);
+ imd->set_option("compress/mode", 1);
String savepath = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/smpconv.smp");
- Error err = EditorSampleImportPlugin::singleton->import(savepath,imd);
-
+ Error err = EditorSampleImportPlugin::singleton->import(savepath, imd);
- ERR_FAIL_COND_V(err!=OK,Vector<uint8_t>());
+ ERR_FAIL_COND_V(err != OK, Vector<uint8_t>());
- p_path=p_path.basename()+".converted.smp";
+ p_path = p_path.basename() + ".converted.smp";
return FileAccess::get_file_as_array(savepath);
-
}
-
-
EditorSampleExportPlugin::EditorSampleExportPlugin() {
-
}