diff --git a/src/buffer/player.cpp b/src/buffer/player.cpp index 4fe7d74d..29743676 100644 --- a/src/buffer/player.cpp +++ b/src/buffer/player.cpp @@ -83,15 +83,8 @@ int main(int argc, char** argv){ DTSC::File source = DTSC::File(conf.getString("filename")); in_out.SendNow(source.getMeta().toNetPacked()); - if ( !(source.getMeta().isMember("keytime") && source.getMeta().isMember("keybpos") && source.getMeta().isMember("keynum") && source.getMeta().isMember("keylen") && source.getMeta().isMember("frags")) - && source.getMeta().isMember("video")){ - //file needs to be DTSCFix'ed! Run MistDTSCFix executable on it first - std::cerr << "Calculating / writing / updating VoD metadata..." << std::endl; - Util::Procs::Start("Fixer", Util::getMyPath() + "MistDTSCFix " + conf.getString("filename")); - while (Util::Procs::isActive("Fixer")){ - Util::sleep(5000); - } - std::cerr << "Done! Aborting this request to make sure all goes well." << std::endl; + if (DTSC::isFixed(source.getMeta())){ + std::cerr << "Encountered a non-fixed file." << std::endl; return 1; } diff --git a/src/controller/controller_streams.cpp b/src/controller/controller_streams.cpp index a2923dcb..43813176 100644 --- a/src/controller/controller_streams.cpp +++ b/src/controller/controller_streams.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "controller_streams.h" #include "controller_storage.h" #include @@ -67,6 +68,11 @@ namespace Controller { tmp_cmd[1] = (char*)URL.c_str(); data["meta"] = JSON::fromString(Util::Procs::getOutputOf(tmp_cmd)); } + if ( !DTSC::isFixed(data["meta"])){ + char * tmp_cmd[3] = {0, 0, 0}; + std::string mistfix = Util::getMyPath() + "MistDTSCFix " + URL; + Util::Procs::Start("MistFixer", mistfix); + } if (Util::epoch() - lastBuffer[name] > 5){ data["error"] = "Available"; data["online"] = 2; diff --git a/src/converters/dtscfix.cpp b/src/converters/dtscfix.cpp index 99c9bcab..50555664 100644 --- a/src/converters/dtscfix.cpp +++ b/src/converters/dtscfix.cpp @@ -36,19 +36,9 @@ namespace Converters { std::cerr << "This file is too old to fix - please reconvert." << std::endl; return 1; } - if (oriheader["moreheader"].asInt() > 0 && !conf.getBool("force")){ - if (meta.isMember("tracks") && meta["tracks"].size() > 0){ - bool isFixed = true; - for ( JSON::ObjIter trackIt = meta["tracks"].ObjBegin(); trackIt != meta["tracks"].ObjEnd(); trackIt ++) { - if ( !trackIt->second.isMember("frags") || !trackIt->second.isMember("keynum")){ - isFixed = false; - } - } - if (isFixed){ - std::cerr << "This file was already fixed or doesn't need fixing - cancelling." << std::endl; - return 0; - } - } + if (DTSC::isFixed(meta) && !conf.getBool("force")){ + std::cerr << "This file was already fixed or doesn't need fixing - cancelling." << std::endl; + return 0; } meta.removeMember("isFixed"); meta.removeMember("keytime"); diff --git a/src/converters/dtscmerge.cpp b/src/converters/dtscmerge.cpp index 436072f4..4f63311c 100644 --- a/src/converters/dtscmerge.cpp +++ b/src/converters/dtscmerge.cpp @@ -56,6 +56,11 @@ namespace Converters { if (tmpFileName == outFileName){ fullSort = false; }else{ + DTSC::File F(tmpFileName); + if (!DTSC::isFixed(F.getMeta())){ + std::cerr << tmpFileName << " has not been run through DTSCFix yet." << std::endl; + return 1; + } inFiles.insert(std::pair(tmpFileName,DTSC::File(tmpFileName))); } } @@ -64,6 +69,10 @@ namespace Converters { outFile = DTSC::File(outFileName, true); }else{ outFile = DTSC::File(outFileName); + if (!DTSC::isFixed(outFile.getMeta())){ + std::cerr << outFileName << " has not been run through DTSCFix yet." << std::endl; + return 1; + } meta = outFile.getMeta(); newMeta = meta; if (meta.isMember("tracks") && meta["tracks"].size() > 0){