13
0

Fix OMFtool; sample_rate vs frame_rate

This commit is contained in:
Robin Gareus 2019-04-08 16:11:38 +02:00
parent 09dd054fc4
commit 3ec261ae5d
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 10 additions and 10 deletions

View File

@ -68,7 +68,7 @@ OMF::OMF ()
session_name = "omfsession"; session_name = "omfsession";
base_dir = "."; base_dir = ".";
sample_rate = 0; sample_rate = 0;
sample_rate = 0; frame_rate = 0;
version = 3000; version = 3000;
db = 0; db = 0;
file = 0; file = 0;
@ -675,15 +675,15 @@ OMF::create_xml ()
fread(&num, 4, 1, file); fread(&num, 4, 1, file);
num = e32(num); num = e32(num);
INFO ("Rate = %d / %d\n", num, denom); INFO ("Rate = %d / %d\n", num, denom);
if (sample_rate == 0) { if (frame_rate == 0) {
sample_rate = (double) num / (double) denom; frame_rate = (double) num / (double) denom;
} }
if (sample_rate == 0) { if (sample_rate == 0) {
sample_rate = denom; sample_rate = denom;
} }
} else { } else {
INFO ("OMF file is missing frame rate information for track %d\n", i); INFO ("OMF file is missing frame rate information for track %d\n", i);
sample_rate = 0.04; // 25FPS frame_rate = 0.04; // 25FPS
if (sample_rate == 0) { if (sample_rate == 0) {
sample_rate = 44100; sample_rate = 44100;
} }
@ -706,7 +706,7 @@ OMF::create_xml ()
char **len; char **len;
int lenCount; int lenCount;
double length = 0.0; double length = 0.0;
int lenSamples = 0; int lenFrames = 0;
region = 0; region = 0;
@ -728,8 +728,8 @@ OMF::create_xml ()
continue; continue;
} }
lenSamples = atoi(len[1]); lenFrames = atoi(len[1]);
length = lenSamples * sample_rate; length = lenFrames * frame_rate;
if (!strcmp(type[1], "TRAN")) { if (!strcmp(type[1], "TRAN")) {
@ -837,7 +837,7 @@ OMF::create_xml ()
region->add_property ("position", sbuf); region->add_property ("position", sbuf);
snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (length * sample_rate)); snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (length * sample_rate));
region->add_property ("length", sbuf); region->add_property ("length", sbuf);
snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (start * sample_rate * sample_rate)); snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (start * frame_rate * sample_rate));
region->add_property ("start", sbuf); region->add_property ("start", sbuf);
set_region_sources (region, sinfo); set_region_sources (region, sinfo);
@ -913,7 +913,7 @@ OMF::create_xml ()
region->add_property ("position", sbuf); region->add_property ("position", sbuf);
snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (length * sample_rate)); snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (length * sample_rate));
region->add_property ("length", sbuf); region->add_property ("length", sbuf);
snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (start * sample_rate * sample_rate)); snprintf (sbuf, sizeof (sbuf), "%" PRId64, llrintf (start * frame_rate * sample_rate));
region->add_property ("start", sbuf); region->add_property ("start", sbuf);
set_region_sources (region, sinfo); set_region_sources (region, sinfo);

View File

@ -43,7 +43,7 @@ private:
std::string session_name; std::string session_name;
std::vector<std::string> audiofile_path_vector; std::vector<std::string> audiofile_path_vector;
int sample_rate; /* audio samples per second */ int sample_rate; /* audio samples per second */
double sample_rate; /* time per video frame */ double frame_rate; /* time per video frame */
XMLNode* session; XMLNode* session;
XMLNode* sources; XMLNode* sources;
XMLNode* routes; XMLNode* routes;