pass 0.92 of an OMF2 importer, based on the Reaper extension by Hannes Breul
git-svn-id: svn://localhost/ardour2/branches/3.0@6672 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
3c00a7ca2a
commit
cd0e83e010
7
tools/omf/Makefile
Normal file
7
tools/omf/Makefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
CXXFLAGS = -g -I../../libs/pbd \
|
||||||
|
$(shell pkg-config --cflags sqlite3) \
|
||||||
|
$(shell pkg-config --cflags libxml-2.0) \
|
||||||
|
$(shell pkg-config --cflags glibmm-2.4)
|
||||||
|
|
||||||
|
omftool: omftool.o
|
||||||
|
$(CXX) -o $@ omftool.o -L../../build/default/libs/pbd -lpbd $(shell pkg-config --libs sqlite3) $(shell pkg-config --libs libxml-2.0)
|
1346
tools/omf/omftool.cc
Normal file
1346
tools/omf/omftool.cc
Normal file
File diff suppressed because it is too large
Load Diff
97
tools/omf/omftool.h
Normal file
97
tools/omf/omftool.h
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#ifndef __ardour_omftool__
|
||||||
|
#define __ardour_omftool__
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sqlite3.h>
|
||||||
|
|
||||||
|
class XMLNode;
|
||||||
|
|
||||||
|
class OMF {
|
||||||
|
public:
|
||||||
|
OMF ();
|
||||||
|
~OMF ();
|
||||||
|
|
||||||
|
int init ();
|
||||||
|
int load (const std::string&);
|
||||||
|
void create_xml ();
|
||||||
|
|
||||||
|
void set_version (int);
|
||||||
|
void set_session_name (const std::string&);
|
||||||
|
void set_sample_rate (int);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool bigEndian;
|
||||||
|
int64_t id_counter;
|
||||||
|
FILE* file;
|
||||||
|
sqlite3* db;
|
||||||
|
int version;
|
||||||
|
std::string base_dir;
|
||||||
|
std::string session_name;
|
||||||
|
std::vector<std::string> audiofile_path_vector;
|
||||||
|
int sample_rate;
|
||||||
|
XMLNode* session;
|
||||||
|
XMLNode* sources;
|
||||||
|
XMLNode* routes;
|
||||||
|
XMLNode* regions;
|
||||||
|
XMLNode* playlists;
|
||||||
|
XMLNode* diskstreams;
|
||||||
|
XMLNode* locations;
|
||||||
|
XMLNode* options;
|
||||||
|
|
||||||
|
XMLNode* new_region_node ();
|
||||||
|
XMLNode* new_source_node ();
|
||||||
|
XMLNode* new_route_node ();
|
||||||
|
XMLNode* new_playlist_node ();
|
||||||
|
XMLNode* new_diskstream_node ();
|
||||||
|
|
||||||
|
typedef std::map<std::string,XMLNode*> KnownSources;
|
||||||
|
KnownSources known_sources;
|
||||||
|
|
||||||
|
XMLNode* get_known_source (const char*);
|
||||||
|
void add_source (const char*, XMLNode*);
|
||||||
|
char* read_name (size_t offset, size_t length);
|
||||||
|
bool get_offset_and_length (const char* offstr, const char* lenstr, uint32_t& offset, uint32_t len);
|
||||||
|
void name_types ();
|
||||||
|
|
||||||
|
uint16_t e16(uint16_t x)
|
||||||
|
{
|
||||||
|
if (bigEndian)
|
||||||
|
return (x>>8)
|
||||||
|
| (x<<8);
|
||||||
|
else
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t e32(uint32_t x)
|
||||||
|
{
|
||||||
|
if (bigEndian)
|
||||||
|
return (x>>24) |
|
||||||
|
((x<<8) & 0x00FF0000) |
|
||||||
|
((x>>8) & 0x0000FF00) |
|
||||||
|
(x<<24);
|
||||||
|
else
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t e64(uint64_t x)
|
||||||
|
{
|
||||||
|
if (bigEndian)
|
||||||
|
return (x>>56) |
|
||||||
|
((x<<40) & 0x00FF000000000000) |
|
||||||
|
((x<<24) & 0x0000FF0000000000) |
|
||||||
|
((x<<8) & 0x000000FF00000000) |
|
||||||
|
((x>>8) & 0x00000000FF000000) |
|
||||||
|
((x>>24) & 0x0000000000FF0000) |
|
||||||
|
((x>>40) & 0x000000000000FF00) |
|
||||||
|
(x<<56);
|
||||||
|
else
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __ardour_omftool__ */
|
Loading…
Reference in New Issue
Block a user