Working encoder detection

This commit is contained in:
Erik Zandvliet 2013-02-27 15:39:10 +01:00 committed by Thulinma
parent 2ab4204e71
commit e3bb5253d0
2 changed files with 17 additions and 3 deletions

View file

@ -10,6 +10,7 @@
#include <mist/procs.h> #include <mist/procs.h>
#include <mist/auth.h> #include <mist/auth.h>
#include <mist/timing.h> #include <mist/timing.h>
#include <mist/converter.h>
#include "controller_storage.h" #include "controller_storage.h"
#include "controller_connectors.h" #include "controller_connectors.h"
#include "controller_streams.h" #include "controller_streams.h"
@ -243,6 +244,10 @@ int main(int argc, char ** argv){
Controller::ConnectedUser * uplink = 0; Controller::ConnectedUser * uplink = 0;
Controller::Log("CONF", "Controller started"); Controller::Log("CONF", "Controller started");
conf.activate(); conf.activate();
//Create a converter class and automatically load in all encoders.
Converter::Converter myConverter;
while (API_Socket.connected() && conf.is_active){ while (API_Socket.connected() && conf.is_active){
usleep(10000); //sleep for 10 ms - prevents 100% CPU time usleep(10000); //sleep for 10 ms - prevents 100% CPU time
@ -450,6 +455,11 @@ int main(int argc, char ** argv){
if (Request.isMember("capabilities")){ if (Request.isMember("capabilities")){
Controller::checkCapable(Response["capabilities"]); Controller::checkCapable(Response["capabilities"]);
} }
if (Request.isMember("conversion")){
if (Request["conversion"].isMember("encoders")) {
Response["conversion"]["encoders"] = myConverter.getEncoders();
}
}
if (Request.isMember("save")){ if (Request.isMember("save")){
Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString()); Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString());
Controller::Log("CONF", "Config written to file on request through API"); Controller::Log("CONF", "Config written to file on request through API");
@ -472,6 +482,7 @@ int main(int argc, char ** argv){
Controller::Storage["log"].null(); Controller::Storage["log"].null();
Controller::Storage["statistics"].null(); Controller::Storage["statistics"].null();
} }
} }
jsonp = ""; jsonp = "";
if (it->H.GetVar("callback") != ""){ if (it->H.GetVar("callback") != ""){

View file

@ -6,6 +6,7 @@
#include <mist/json.h> #include <mist/json.h>
#include <mist/dtsc.h> #include <mist/dtsc.h>
#include <mist/procs.h> #include <mist/procs.h>
#include <mist/timing.h>
namespace Info { namespace Info {
int getInfo(int argc, char* argv[]) { int getInfo(int argc, char* argv[]) {
@ -16,11 +17,13 @@ namespace Info {
DTSC::File F(argv[1]); DTSC::File F(argv[1]);
JSON::Value fileSpecs = F.getMeta(); JSON::Value fileSpecs = F.getMeta();
if( !fileSpecs ) { if( !fileSpecs ) {
std::vector<std::string> cmd; char ** cmd = (char**)malloc(3*sizeof(char*));
cmd.push_back("ffprobe"); cmd[0] = "ffprobe";
cmd.push_back(argv[1]); cmd[1] = argv[1];
cmd[2] = NULL;
int outFD = -1; int outFD = -1;
Util::Procs::StartPiped("FFProbe", cmd, 0, 0, &outFD); Util::Procs::StartPiped("FFProbe", cmd, 0, 0, &outFD);
while( Util::Procs::isActive("FFProbe")){ Util::sleep(100); }
FILE * outFile = fdopen( outFD, "r" ); FILE * outFile = fdopen( outFD, "r" );
char * fileBuf = 0; char * fileBuf = 0;
size_t fileBufLen = 0; size_t fileBufLen = 0;