summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/memchecker.cc137
-rw-r--r--src/memchecker.h52
2 files changed, 0 insertions, 189 deletions
diff --git a/src/memchecker.cc b/src/memchecker.cc
deleted file mode 100644
index ec0c9df..0000000
--- a/src/memchecker.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * memchecker.cc
- *
- * Sat Jan 16 18:27:52 CET 2016
- * Copyright 2016 André Nusser
- * andre.nusser@googlemail.com
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo 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 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "memchecker.h"
-
-#include "platform.h"
-
-#if DG_PLATFORM == DG_PLATFORM_LINUX
-#include <sys/sysinfo.h>
-#elif DG_PLATFORM == DG_PLATFORM_OSX
-#include <mach/vm_statistics.h>
-#include <mach/mach_types.h>
-#include <mach/mach_init.h>
-#include <mach/mach_host.h>
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#include <sys/vmmeter.h>
-#endif
-
-#include <sndfile.h>
-#include <hugin.hpp>
-
-bool MemChecker::enoughFreeMemory(const DrumKit& drumkit) const
-{
- uint64_t free_memory = calcFreeMemory();
- uint64_t needed_memory = calcNeededMemory(drumkit);
-
- return free_memory >= needed_memory;
-}
-
-uint64_t MemChecker::calcFreeMemory() const
-{
- uint64_t free_memory = 0;
-
- // Platform specific calculation of the amount of free memory.
-#if DG_PLATFORM == DG_PLATFORM_LINUX
- struct sysinfo sys_info;
- sysinfo(&sys_info);
- free_memory = (uint64_t)sys_info.freeram * (uint64_t)sys_info.mem_unit;
-#elif DG_PLATFORM == DG_PLATFORM_WINDOWS
- MEMORYSTATUSEX status;
- status.dwLength = sizeof(status);
- GlobalMemoryStatusEx(&status);
- free_memory = status.ullAvailPhys;
-#elif DG_PLATFORM == DG_PLATFORM_OSX
- vm_size_t page_size;
- vm_statistics64_data_t vm_stats;
- mach_port_t mach_port = mach_host_self();
- mach_msg_type_number_t count = sizeof(vm_stats) / sizeof(natural_t);
-
- if (KERN_SUCCESS == host_page_size(mach_port, &page_size) &&
- KERN_SUCCESS == host_statistics64(mach_port, HOST_VM_INFO, (host_info64_t)&vm_stats, &count))
- {
- free_memory = (uint64_t)vm_stats.free_count * (uint64_t)page_size;
- }
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- u_int page_size;
- struct vmtotal vmt;
- size_t vmt_size, uint_size;
-
- vmt_size = sizeof(vmt);
- uint_size = sizeof(page_size);
-
- sysctlbyname("vm.vmtotal", &vmt, &vmt_size, NULL, 0);
- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &uint_size, NULL, 0);
-
- free_memory = vmt.t_free * (u_int64_t)page_size;
-#elif DG_PLATFORM == DG_PLATFORM_UNIX
- // TODO
-#endif
-
- DEBUG(memchecker, "Calculated %" PRIu64 " free memory.\n", free_memory);
-
- return free_memory;
-}
-
-uint64_t MemChecker::calcNeededMemory(const DrumKit& drumkit) const
-{
- uint64_t needed_memory = 0;
-
- // Calculate memory usage of all instruments of drumkit.
- for(auto& instr_ptr: drumkit.instruments)
- {
- const auto& audiofiles = instr_ptr->audiofiles;
-
- // Calculate memory usage of all audiofiles.
- for(auto& audiofile: audiofiles)
- {
- needed_memory += calcBytesPerChannel(audiofile->filename);
- }
- }
-
- DEBUG(memchecker, "Calculated %" PRIu64 " needed memory.\n", needed_memory);
-
- return needed_memory;
-}
-
-uint64_t MemChecker::calcBytesPerChannel(const std::string& filename) const
-{
- SF_INFO sf_info{};
-
- SNDFILE* f = sf_open(filename.c_str(), SFM_READ, &sf_info);
- if(!f)
- {
- ERR(memchecker, "SNDFILE Error (%s): %s\n",
- filename.c_str(), sf_strerror(f));
- return 0;
- }
-
- sf_close(f);
-
- return sf_info.frames * sizeof(sample_t);
-}
diff --git a/src/memchecker.h b/src/memchecker.h
deleted file mode 100644
index aeefb3a..0000000
--- a/src/memchecker.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * memchecker.h
- *
- * Sat Jan 16 18:27:52 CET 2016
- * Copyright 2016 André Nusser
- * andre.nusser@googlemail.com
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo 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 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo 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 DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#pragma once
-
-#include "drumkit.h"
-
-#include <string>
-// includes cstdint automatically and is needed for the PRIu64 macro
-#include <cinttypes>
-
-class MemChecker
-{
-public:
- //! Checks if there is enough memory left to load drumkit into RAM.
- //! \param drumkit The drumkit for which it is checked if there's enough memory left.
- //! \return True iff there is enough memory left.
- bool enoughFreeMemory(const DrumKit& drumkit) const;
-
-protected:
- // Computes how much RAM (in bytes) is left.
- uint64_t calcFreeMemory() const;
-
- // Computes how much memory the drumkit takes when loaded into RAM (in bytes).
- uint64_t calcNeededMemory(const DrumKit& drumkit) const;
-
- // Computes the number of bytes per channel of <filename> using libsnd.
- uint64_t calcBytesPerChannel(const std::string& filename) const;
-};