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