Fixed code style for recent commits.

This commit is contained in:
Thulinma 2013-03-01 21:00:17 +01:00
parent 88e52ad936
commit 9aad5dc9fb
6 changed files with 83 additions and 73 deletions

View file

@ -64,7 +64,7 @@ namespace Buffer {
while (usr->S.connected()){ while (usr->S.connected()){
usleep(5000); //sleep 5ms usleep(5000); //sleep 5ms
if( !usr->myRing->playCount || !usr->Send()){ if ( !usr->myRing->playCount || !usr->Send()){
if (usr->S.spool()){ if (usr->S.spool()){
while (usr->S.Received().size()){ while (usr->S.Received().size()){
//delete anything that doesn't end with a newline //delete anything that doesn't end with a newline
@ -108,18 +108,18 @@ namespace Buffer {
usr->myRing->waiting = false; usr->myRing->waiting = false;
usr->myRing->starved = false; usr->myRing->starved = false;
usr->myRing->b = thisStream->getStream()->msSeek(ms); usr->myRing->b = thisStream->getStream()->msSeek(ms);
if (usr->myRing->playCount > 0 ) { if (usr->myRing->playCount > 0){
usr->myRing->playCount = 0; usr->myRing->playCount = 0;
} }
break; break;
} }
case 'f': { //frame-seek case 'f': { //frame-seek
fprintf( stderr, "Received a frame-seek\n" ); fprintf(stderr, "Received a frame-seek\n");
unsigned int frameno = JSON::Value(usr->S.Received().get().substr(2)).asInt(); unsigned int frameno = JSON::Value(usr->S.Received().get().substr(2)).asInt();
usr->myRing->waiting = false; usr->myRing->waiting = false;
usr->myRing->starved = false; usr->myRing->starved = false;
usr->myRing->b = thisStream->getStream()->frameSeek(frameno); usr->myRing->b = thisStream->getStream()->frameSeek(frameno);
if (usr->myRing->playCount > 0 ) { if (usr->myRing->playCount > 0){
usr->myRing->playCount = 0; usr->myRing->playCount = 0;
} }
break; break;
@ -129,8 +129,8 @@ namespace Buffer {
break; break;
} }
case 'o': { //once-play case 'o': { //once-play
fprintf( stderr, "Received a play-once\n" ); fprintf(stderr, "Received a play-once\n");
if (usr->myRing->playCount >= 0 ) { if (usr->myRing->playCount >= 0){
usr->myRing->playCount++; usr->myRing->playCount++;
} }
break; break;
@ -196,7 +196,7 @@ namespace Buffer {
if (thisStream->getIPInput().connected()){ if (thisStream->getIPInput().connected()){
if (thisStream->getIPInput().spool()){ if (thisStream->getIPInput().spool()){
bool packed_parsed = false; bool packed_parsed = false;
do { do{
thisStream->getWriteLock(); thisStream->getWriteLock();
if (thisStream->getStream()->parsePacket(thisStream->getIPInput().Received())){ if (thisStream->getStream()->parsePacket(thisStream->getIPInput().Received())){
thisStream->getStream()->outPacket(0); thisStream->getStream()->outPacket(0);
@ -207,7 +207,7 @@ namespace Buffer {
packed_parsed = false; packed_parsed = false;
usleep(1000); //1ms wait usleep(1000); //1ms wait
} }
} while(packed_parsed); }while (packed_parsed);
}else{ }else{
usleep(1000); //1ms wait usleep(1000); //1ms wait
} }
@ -228,7 +228,8 @@ namespace Buffer {
conf.addOption("reportstats", conf.addOption("reportstats",
JSON::fromString("{\"default\":0, \"help\":\"Report stats to a controller process.\", \"short\":\"s\", \"long\":\"reportstats\"}")); JSON::fromString("{\"default\":0, \"help\":\"Report stats to a controller process.\", \"short\":\"s\", \"long\":\"reportstats\"}"));
conf.addOption("time", conf.addOption("time",
JSON::fromString("{\"default\":0, \"arg\": \"integer\", \"help\":\"Buffer a specied amount of time in ms.\", \"short\":\"t\", \"long\":\"time\"}")); JSON::fromString(
"{\"default\":0, \"arg\": \"integer\", \"help\":\"Buffer a specied amount of time in ms.\", \"short\":\"t\", \"long\":\"time\"}"));
conf.parseArgs(argc, argv); conf.parseArgs(argc, argv);
std::string name = conf.getString("stream_name"); std::string name = conf.getString("stream_name");
@ -259,7 +260,7 @@ namespace Buffer {
} }
while (buffer_running && SS.connected() && conf.is_active){ while (buffer_running && SS.connected() && conf.is_active){
fprintf( stderr, "Still running\n" ); fprintf(stderr, "Still running\n");
//check for new connections, accept them if there are any //check for new connections, accept them if there are any
//starts a thread for every accepted connection //starts a thread for every accepted connection
incoming = SS.accept(true); incoming = SS.accept(true);

View file

@ -66,11 +66,11 @@ bool Buffer::user::Send(){
} //cancel if not connected } //cancel if not connected
if (myRing->waiting){ if (myRing->waiting){
Stream::get()->waitForData(); Stream::get()->waitForData();
if( !myRing->waiting ) { if ( !myRing->waiting){
if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){
myRing->playCount --; myRing->playCount--;
if (!myRing->playCount){ if ( !myRing->playCount){
fprintf( stderr, "Sending Pausemark\n" ); fprintf(stderr, "Sending Pausemark\n");
JSON::Value pausemark; JSON::Value pausemark;
pausemark["datatype"] = "pause_marker"; pausemark["datatype"] = "pause_marker";
pausemark["time"] = Stream::get()->getStream()->getPacket(myRing->b)["time"].asInt(); pausemark["time"] = Stream::get()->getStream()->getPacket(myRing->b)["time"].asInt();
@ -79,9 +79,9 @@ bool Buffer::user::Send(){
} }
} }
if (myRing->updated){ if (myRing->updated){
fprintf( stderr, "Sent new metadata\n" ); fprintf(stderr, "Sent new metadata\n");
Stream::get()->getReadLock(); Stream::get()->getReadLock();
S.SendNow( Stream::get()->getStream()->metadata.toNetPacked() ); S.SendNow(Stream::get()->getStream()->metadata.toNetPacked());
Stream::get()->dropReadLock(); Stream::get()->dropReadLock();
myRing->updated = false; myRing->updated = false;
} }
@ -105,18 +105,18 @@ bool Buffer::user::Send(){
return false; return false;
} //no next buffer? go in waiting mode. } //no next buffer? go in waiting mode.
myRing->b--; myRing->b--;
if( myRing->updated ) { if (myRing->updated){
fprintf( stderr, "Sent new metadata\n" ); fprintf(stderr, "Sent new metadata\n");
Stream::get()->getReadLock(); Stream::get()->getReadLock();
S.SendNow( Stream::get()->getStream()->metadata.toNetPacked() ); S.SendNow(Stream::get()->getStream()->metadata.toNetPacked());
Stream::get()->dropReadLock(); Stream::get()->dropReadLock();
myRing->updated = false; myRing->updated = false;
} }
Stream::get()->dropReadLock(); Stream::get()->dropReadLock();
if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){
myRing->playCount --; myRing->playCount--;
if (!myRing->playCount){ if ( !myRing->playCount){
fprintf( stderr, "Sending Pausemark\n" ); fprintf(stderr, "Sending Pausemark\n");
JSON::Value pausemark; JSON::Value pausemark;
pausemark["datatype"] = "pause_marker"; pausemark["datatype"] = "pause_marker";
pausemark["time"] = Stream::get()->getStream()->getPacket(myRing->b)["time"].asInt(); pausemark["time"] = Stream::get()->getStream()->getPacket(myRing->b)["time"].asInt();
@ -125,7 +125,7 @@ bool Buffer::user::Send(){
} }
} }
return false; return false;
}//completed a send } //completed a send
Stream::get()->dropReadLock(); Stream::get()->dropReadLock();
return true; return true;
} //send } //send

View file

@ -35,7 +35,7 @@ namespace Connector_HTTP {
}else{ }else{
asrt.setUpdate(true); asrt.setUpdate(true);
} }
asrt.setVersion(0);//1 asrt.setVersion(0); //1
//asrt.setQualityEntry(empty, 0); //asrt.setQualityEntry(empty, 0);
if (metadata.isMember("keynum")){ if (metadata.isMember("keynum")){
asrt.setSegmentRun(1, -1, 0); asrt.setSegmentRun(1, -1, 0);
@ -49,16 +49,16 @@ namespace Connector_HTTP {
}else{ }else{
afrt.setUpdate(true); afrt.setUpdate(true);
} }
afrt.setVersion(0);//1 afrt.setVersion(0); //1
afrt.setTimeScale(1000); afrt.setTimeScale(1000);
//afrt.setQualityEntry(empty, 0); //afrt.setQualityEntry(empty, 0);
MP4::afrt_runtable afrtrun; MP4::afrt_runtable afrtrun;
if (metadata.isMember("keynum")){ if (metadata.isMember("keynum")){
unsigned long long int firstAvail = metadata["keynum"].size() / 2; unsigned long long int firstAvail = metadata["keynum"].size() / 2;
for (int i = firstAvail; i < metadata["keynum"].size() -2; i++ ) { for (int i = firstAvail; i < metadata["keynum"].size() - 2; i++){
afrtrun.firstFragment = metadata["keynum"][i].asInt(); afrtrun.firstFragment = metadata["keynum"][i].asInt();
afrtrun.firstTimestamp = metadata["keytime"][i].asInt(); afrtrun.firstTimestamp = metadata["keytime"][i].asInt();
afrtrun.duration = metadata["keytime"][i+1].asInt() - metadata["keytime"][i].asInt(); afrtrun.duration = metadata["keytime"][i + 1].asInt() - metadata["keytime"][i].asInt();
afrt.setFragmentRun(afrtrun, i - firstAvail); afrt.setFragmentRun(afrtrun, i - firstAvail);
} }
}else{ }else{
@ -80,7 +80,7 @@ namespace Connector_HTTP {
MP4::ABST abst; MP4::ABST abst;
abst.setVersion(0); abst.setVersion(0);
if( metadata.isMember("keynum") ) { if (metadata.isMember("keynum")){
abst.setBootstrapinfoVersion(metadata["keynum"][0u].asInt()); abst.setBootstrapinfoVersion(metadata["keynum"][0u].asInt());
}else{ }else{
abst.setBootstrapinfoVersion(1); abst.setBootstrapinfoVersion(1);
@ -134,23 +134,26 @@ namespace Connector_HTTP {
"<deliveryType>streaming</deliveryType>\n" "<deliveryType>streaming</deliveryType>\n"
"<bootstrapInfo profile=\"named\" id=\"bootstrap1\">" + Base64::encode(GenerateBootstrap(MovieId, metadata, 1, 0, 0)) "<bootstrapInfo profile=\"named\" id=\"bootstrap1\">" + Base64::encode(GenerateBootstrap(MovieId, metadata, 1, 0, 0))
+ "</bootstrapInfo>\n" + "</bootstrapInfo>\n"
"<media streamId=\"1\" bootstrapInfoId=\"bootstrap1\" url=\"" + MovieId + "/\">\n" "<media streamId=\"1\" bootstrapInfoId=\"bootstrap1\" url=\"" + MovieId
"<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAl0cmFja2luZm8KAAAAAgMACXRpbWVzY2FsZQBA+GoAAAAAAAAGbGVuZ3RoAEGMcHoQAAAAAAhsYW5ndWFnZQIAA2VuZwARc2FtcGxlZGVzY3JpcHRpb24KAAAAAQMACnNhbXBsZXR5cGUCAARhdmMxAAAJAAAJAwAJdGltZXNjYWxlAEDncAAAAAAAAAZsZW5ndGgAQXtNvTAAAAAACGxhbmd1YWdlAgADZW5nABFzYW1wbGVkZXNjcmlwdGlvbgoAAAABAwAKc2FtcGxldHlwZQIABG1wNGEAAAkAAAkADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAAD2F1ZGlvc2FtcGxlcmF0ZQBA53AAAAAAAAAOdmlkZW9mcmFtZXJhdGUAQDf/gi5SciUABmFhY2FvdABAAAAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAACmF2Y3Byb2ZpbGUAQFNAAAAAAAAADGF1ZGlvY29kZWNpZAIABG1wNGEADHZpZGVvY29kZWNpZAIABGF2YzEABXdpZHRoAECQ4AAAAAAAAAZoZWlnaHQAQIMAAAAAAAAACmZyYW1lV2lkdGgAQJDgAAAAAAAAC2ZyYW1lSGVpZ2h0AECDAAAAAAAAAAxkaXNwbGF5V2lkdGgAQJDgAAAAAAAADWRpc3BsYXlIZWlnaHQAQIMAAAAAAAAADG1vb3Zwb3NpdGlvbgBBmxq2uAAAAAAIZHVyYXRpb24AQIKjqW3oyhIAAAk=</metadata>\n" + "/\">\n"
"</media>\n" "<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAl0cmFja2luZm8KAAAAAgMACXRpbWVzY2FsZQBA+GoAAAAAAAAGbGVuZ3RoAEGMcHoQAAAAAAhsYW5ndWFnZQIAA2VuZwARc2FtcGxlZGVzY3JpcHRpb24KAAAAAQMACnNhbXBsZXR5cGUCAARhdmMxAAAJAAAJAwAJdGltZXNjYWxlAEDncAAAAAAAAAZsZW5ndGgAQXtNvTAAAAAACGxhbmd1YWdlAgADZW5nABFzYW1wbGVkZXNjcmlwdGlvbgoAAAABAwAKc2FtcGxldHlwZQIABG1wNGEAAAkAAAkADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAAD2F1ZGlvc2FtcGxlcmF0ZQBA53AAAAAAAAAOdmlkZW9mcmFtZXJhdGUAQDf/gi5SciUABmFhY2FvdABAAAAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAACmF2Y3Byb2ZpbGUAQFNAAAAAAAAADGF1ZGlvY29kZWNpZAIABG1wNGEADHZpZGVvY29kZWNpZAIABGF2YzEABXdpZHRoAECQ4AAAAAAAAAZoZWlnaHQAQIMAAAAAAAAACmZyYW1lV2lkdGgAQJDgAAAAAAAAC2ZyYW1lSGVpZ2h0AECDAAAAAAAAAAxkaXNwbGF5V2lkdGgAQJDgAAAAAAAADWRpc3BsYXlIZWlnaHQAQIMAAAAAAAAADG1vb3Zwb3NpdGlvbgBBmxq2uAAAAAAIZHVyYXRpb24AQIKjqW3oyhIAAAk=</metadata>\n"
"</manifest>\n"; "</media>\n"
"</manifest>\n";
}else{ }else{
Result = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" Result =
"<manifest xmlns=\"http://ns.adobe.com/f4m/1.0\">\n" "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<id>" + MovieId + "</id>\n" "<manifest xmlns=\"http://ns.adobe.com/f4m/1.0\">\n"
"<duration>0.00</duration>\n" "<id>" + MovieId + "</id>\n"
"<mimeType>video/mp4</mimeType>\n" "<duration>0.00</duration>\n"
"<streamType>live</streamType>\n" "<mimeType>video/mp4</mimeType>\n"
"<deliveryType>streaming</deliveryType>\n" "<streamType>live</streamType>\n"
"<bootstrapInfo profile=\"named\" id=\"bootstrap1\" url=\"" + MovieId + ".bootstrap\"></bootstrapInfo>\n" "<deliveryType>streaming</deliveryType>\n"
"<media bootstrapInfoId=\"bootstrap1\" url=\"" + MovieId + "/\">" "<bootstrapInfo profile=\"named\" id=\"bootstrap1\" url=\"" + MovieId + ".bootstrap\"></bootstrapInfo>\n"
"<metadata>AgAKb25NZXRhRGF0YQgAAAAAAA9tZXRhZGF0YWNyZWF0b3ICABBBbmV2aWEgVmlhTW90aW9uAAhoYXNBdWRpbwEBAAhoYXNWaWRlbwEBAAhkdXJhdGlvbgBBIWWYAAAAAAAPYXVkaW9zYW1wbGVyYXRlAEBIAAAAAAAAAA1hdWRpb2RhdGFyYXRlAEBgAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAAZhYWNhb3QAQAAAAAAAAAAABXdpZHRoAECQAAAAAAAAAAZoZWlnaHQAQIIAAAAAAAAADXZpZGVvZGF0YXJhdGUAQJ9AAAAAAAAADHZpZGVvY29kZWNpZAIABEFWQzEACmF2Y3Byb2ZpbGUAQFNAAAAAAAAACGF2Y2xldmVsAEA/AAAAAAAAAAAJ</metadata>\n" "<media bootstrapInfoId=\"bootstrap1\" url=\"" + MovieId
"</media>\n" + "/\">"
"</manifest>\n"; "<metadata>AgAKb25NZXRhRGF0YQgAAAAAAA9tZXRhZGF0YWNyZWF0b3ICABBBbmV2aWEgVmlhTW90aW9uAAhoYXNBdWRpbwEBAAhoYXNWaWRlbwEBAAhkdXJhdGlvbgBBIWWYAAAAAAAPYXVkaW9zYW1wbGVyYXRlAEBIAAAAAAAAAA1hdWRpb2RhdGFyYXRlAEBgAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAAZhYWNhb3QAQAAAAAAAAAAABXdpZHRoAECQAAAAAAAAAAZoZWlnaHQAQIIAAAAAAAAADXZpZGVvZGF0YXJhdGUAQJ9AAAAAAAAADHZpZGVvY29kZWNpZAIABEFWQzEACmF2Y3Byb2ZpbGUAQFNAAAAAAAAACGF2Y2xldmVsAEA/AAAAAAAAAAAJ</metadata>\n"
"</media>\n"
"</manifest>\n";
} }
#if DEBUG >= 8 #if DEBUG >= 8
std::cerr << "Sending this manifest:" << std::endl << Result << std::endl; std::cerr << "Sending this manifest:" << std::endl << Result << std::endl;
@ -219,7 +222,8 @@ namespace Connector_HTTP {
} }
ss.setBlocking(false); ss.setBlocking(false);
inited = true; inited = true;
while ( !ss.spool()){} while ( !ss.spool()){
}
Strm.parsePacket(ss.Received()); Strm.parsePacket(ss.Received());
} }
if (HTTP_R.url.find(".bootstrap") != std::string::npos){ if (HTTP_R.url.find(".bootstrap") != std::string::npos){
@ -301,17 +305,17 @@ namespace Connector_HTTP {
if (ss.spool()){ if (ss.spool()){
while (Strm.parsePacket(ss.Received())){ while (Strm.parsePacket(ss.Received())){
/* /*
if (Strm.getPacket(0).isMember("time")){ if (Strm.getPacket(0).isMember("time")){
if ( !Strm.metadata.isMember("firsttime")){ if ( !Strm.metadata.isMember("firsttime")){
Strm.metadata["firsttime"] = Strm.getPacket(0)["time"]; Strm.metadata["firsttime"] = Strm.getPacket(0)["time"];
}else{ }else{
if ( !Strm.metadata.isMember("length") || Strm.metadata["length"].asInt() == 0){ if ( !Strm.metadata.isMember("length") || Strm.metadata["length"].asInt() == 0){
Strm.getPacket(0)["time"] = Strm.getPacket(0)["time"].asInt() - Strm.metadata["firsttime"].asInt(); Strm.getPacket(0)["time"] = Strm.getPacket(0)["time"].asInt() - Strm.metadata["firsttime"].asInt();
} }
} }
Strm.metadata["lasttime"] = Strm.getPacket(0)["time"]; Strm.metadata["lasttime"] = Strm.getPacket(0)["time"];
} }
*/ */
if (pending_manifest){ if (pending_manifest){
HTTP_S.Clean(); HTTP_S.Clean();
HTTP_S.SetHeader("Content-Type", "text/xml"); HTTP_S.SetHeader("Content-Type", "text/xml");

View file

@ -31,7 +31,7 @@ namespace Connector_HTTP {
if (metadata.isNull()){ if (metadata.isNull()){
return result; return result;
} }
if( metadata.isMember( "keynum" ) ) { if (metadata.isMember("keynum")){
for (int i = 0; i < metadata["keynum"].size(); i++){ for (int i = 0; i < metadata["keynum"].size(); i++){
result.push_back(metadata["keynum"][i].asInt()); result.push_back(metadata["keynum"][i].asInt());
} }
@ -63,7 +63,7 @@ namespace Connector_HTTP {
Result << "#EXTM3U\r\n" Result << "#EXTM3U\r\n"
//"#EXT-X-VERSION:1\r\n" //"#EXT-X-VERSION:1\r\n"
//"#EXT-X-ALLOW-CACHE:YES\r\n" //"#EXT-X-ALLOW-CACHE:YES\r\n"
"#EXT-X-TARGETDURATION:" << (longestFragment / 1000) + 1 << "\r\n" "#EXT-X-TARGETDURATION:" << (longestFragment / 1000) + 1 << "\r\n"
"#EXT-X-MEDIA-SEQUENCE:0\r\n"; "#EXT-X-MEDIA-SEQUENCE:0\r\n";
//"#EXT-X-PLAYLIST-TYPE:VOD\r\n"; //"#EXT-X-PLAYLIST-TYPE:VOD\r\n";
int lastDuration = 0; int lastDuration = 0;
@ -159,7 +159,8 @@ namespace Connector_HTTP {
} }
ss.setBlocking(false); ss.setBlocking(false);
inited = true; inited = true;
while ( !ss.spool()){} while ( !ss.spool()){
}
Strm.parsePacket(ss.Received()); Strm.parsePacket(ss.Received());
} }
if (HTTP_R.url.find(".m3u") == std::string::npos){ if (HTTP_R.url.find(".m3u") == std::string::npos){
@ -176,7 +177,7 @@ namespace Connector_HTTP {
ss.SendNow(sstream.str().c_str()); ss.SendNow(sstream.str().c_str());
Flash_RequestPending++; Flash_RequestPending++;
}else{ }else{
if ( ss.spool()){ if (ss.spool()){
Strm.parsePacket(ss.Received()); Strm.parsePacket(ss.Received());
} }
if (HTTP_R.url.find(".m3u8") != std::string::npos){ if (HTTP_R.url.find(".m3u8") != std::string::npos){
@ -340,12 +341,10 @@ namespace Connector_HTTP {
ContCounter = &AudioCounter; ContCounter = &AudioCounter;
} }
//initial packet //initial packet
PackData.Clear(); PackData.Clear();
PackData.PID(PIDno); PackData.PID(PIDno);
PackData.ContinuityCounter((*ContCounter)++); PackData.ContinuityCounter(( *ContCounter)++);
PackData.UnitStart(1); PackData.UnitStart(1);
if (IsKeyFrame){ if (IsKeyFrame){
PackData.RandomAccess(1); PackData.RandomAccess(1);
@ -360,14 +359,13 @@ namespace Connector_HTTP {
while (ToPack.size()){ while (ToPack.size()){
PackData.Clear(); PackData.Clear();
PackData.PID(PIDno); PackData.PID(PIDno);
PackData.ContinuityCounter((*ContCounter)++); PackData.ContinuityCounter(( *ContCounter)++);
PackData.AddStuffing(PackData.BytesFree() - ToPack.size()); PackData.AddStuffing(PackData.BytesFree() - ToPack.size());
PackData.FillFree(ToPack); PackData.FillFree(ToPack);
TSBuf.write(PackData.ToString(), 188); TSBuf.write(PackData.ToString(), 188);
PacketNumber++; PacketNumber++;
} }
} }
} }
if (pending_manifest && !Strm.metadata.isNull()){ if (pending_manifest && !Strm.metadata.isNull()){

View file

@ -32,7 +32,7 @@ namespace Connector_HTTP {
Result << "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" TimeScale=\"10000000\" "; Result << "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" TimeScale=\"10000000\" ";
if (metadata.isMember("length") && metadata["length"].asInt() > 0){ if (metadata.isMember("length") && metadata["length"].asInt() > 0){
Result << "Duration=\"" << metadata["lastms"].asInt() << "\""; Result << "Duration=\"" << metadata["lastms"].asInt() << "\"";
} else { }else{
Result << "Duration=\"0\" IsLive=\"TRUE\" LookAheadFragmentCount=\"2\" "; Result << "Duration=\"0\" IsLive=\"TRUE\" LookAheadFragmentCount=\"2\" ";
} }
Result << ">\n"; Result << ">\n";

View file

@ -154,9 +154,15 @@ int main(int argc, char ** argv){
conf.addOption("account", conf.addOption("account",
JSON::fromString( JSON::fromString(
"{\"long\":\"account\", \"short\":\"a\", \"arg\":\"string\" \"default\":\"\", \"help\":\"A username:password string to create a new account with.\"}")); "{\"long\":\"account\", \"short\":\"a\", \"arg\":\"string\" \"default\":\"\", \"help\":\"A username:password string to create a new account with.\"}"));
conf.addOption("uplink", JSON::fromString("{\"default\":\"\", \"arg\":\"string\", \"help\":\"MistSteward uplink host and port.\", \"short\":\"U\", \"long\":\"uplink\"}")); conf.addOption("uplink",
conf.addOption("uplink-name", JSON::fromString("{\"default\":\"" COMPILED_USERNAME "\", \"arg\":\"string\", \"help\":\"MistSteward uplink username.\", \"short\":\"N\", \"long\":\"uplink-name\"}")); JSON::fromString(
conf.addOption("uplink-pass", JSON::fromString("{\"default\":\"" COMPILED_PASSWORD "\", \"arg\":\"string\", \"help\":\"MistSteward uplink password.\", \"short\":\"P\", \"long\":\"uplink-pass\"}")); "{\"default\":\"\", \"arg\":\"string\", \"help\":\"MistSteward uplink host and port.\", \"short\":\"U\", \"long\":\"uplink\"}"));
conf.addOption("uplink-name",
JSON::fromString(
"{\"default\":\"" COMPILED_USERNAME "\", \"arg\":\"string\", \"help\":\"MistSteward uplink username.\", \"short\":\"N\", \"long\":\"uplink-name\"}"));
conf.addOption("uplink-pass",
JSON::fromString(
"{\"default\":\"" COMPILED_PASSWORD "\", \"arg\":\"string\", \"help\":\"MistSteward uplink password.\", \"short\":\"P\", \"long\":\"uplink-pass\"}"));
conf.parseArgs(argc, argv); conf.parseArgs(argc, argv);
std::string account = conf.getString("account"); std::string account = conf.getString("account");
@ -169,7 +175,7 @@ int main(int argc, char ** argv){
Controller::Storage["account"][uname]["password"] = Secure::md5(pword); Controller::Storage["account"][uname]["password"] = Secure::md5(pword);
} }
} }
std::string uplink_addr = conf.getString("uplink"); std::string uplink_addr = conf.getString("uplink");
std::string uplink_host = ""; std::string uplink_host = "";
int uplink_port = 0; int uplink_port = 0;
@ -178,10 +184,11 @@ int main(int argc, char ** argv){
if (colon != std::string::npos && colon != 0 && colon != uplink_addr.size()){ if (colon != std::string::npos && colon != 0 && colon != uplink_addr.size()){
uplink_host = uplink_addr.substr(0, colon); uplink_host = uplink_addr.substr(0, colon);
uplink_port = atoi(uplink_addr.substr(colon + 1, std::string::npos).c_str()); uplink_port = atoi(uplink_addr.substr(colon + 1, std::string::npos).c_str());
Controller::Log("CONF", "Connection to uplink enabled on host " + uplink_host + " and port " + uplink_addr.substr(colon + 1, std::string::npos)); Controller::Log("CONF",
"Connection to uplink enabled on host " + uplink_host + " and port " + uplink_addr.substr(colon + 1, std::string::npos));
} }
} }
time_t lastuplink = 0; time_t lastuplink = 0;
time_t processchecker = 0; time_t processchecker = 0;
Socket::Server API_Socket = Socket::Server(conf.getInteger("listen_port"), conf.getString("listen_interface"), true); Socket::Server API_Socket = Socket::Server(conf.getInteger("listen_port"), conf.getString("listen_interface"), true);