From b45153d051cd640b38f3f2a46399b15c0cfe2baa Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Tue, 8 Jan 2013 14:36:49 +0100 Subject: [PATCH] Temporary undo indenting fix (for merge!) --- src/conn_ts.cpp | 193 ++++++++++++++++++------------------- src/converters/dtsc2ts.cpp | 157 +++++++++++++++--------------- 2 files changed, 176 insertions(+), 174 deletions(-) diff --git a/src/conn_ts.cpp b/src/conn_ts.cpp index 0fab5610..2c320db5 100644 --- a/src/conn_ts.cpp +++ b/src/conn_ts.cpp @@ -20,10 +20,11 @@ #include //TS support #include //DTSC support #include //For initdata conversion + /// The main function of the connector /// \param conn A connection with the client /// \param streamname The name of the stream -int TS_Handler(Socket::Connection conn, std::string streamname){ +int TS_Handler( Socket::Connection conn, std::string streamname ) { std::string ToPack; TS::Packet PackData; std::string DTMIData; @@ -38,175 +39,173 @@ int TS_Handler(Socket::Connection conn, std::string streamname){ bool FirstIDRInKeyFrame; MP4::AVCC avccbox; bool haveAvcc = false; - + DTSC::Stream Strm; bool inited = false; Socket::Connection ss; - - while (conn.connected()){ - if ( !inited){ + + while(conn.connected()) { + if( !inited ) { ss = Util::Stream::getStream(streamname); - if ( !ss.connected()){ -#if DEBUG >= 1 + if (!ss.connected()){ + #if DEBUG >= 1 fprintf(stderr, "Could not connect to server!\n"); -#endif + #endif conn.close(); break; } - ss.SendNow("p\n"); -#if DEBUG >= 3 + ss.SendNow( "p\n" ); + #if DEBUG >= 3 fprintf(stderr, "Everything connected, starting to send video data...\n"); -#endif + #endif inited = true; } if (ss.spool()){ while (Strm.parsePacket(ss.Received())){ - if ( !haveAvcc){ - avccbox.setPayload(Strm.metadata["video"]["init"].asString()); + if( !haveAvcc ) { + avccbox.setPayload( Strm.metadata["video"]["init"].asString() ); haveAvcc = true; } - if (Strm.lastType() == DTSC::VIDEO){ + if( Strm.lastType() == DTSC::VIDEO ) { DTMIData = Strm.lastData(); - if (Strm.getPacket(0).isMember("keyframe")){ + if( Strm.getPacket(0).isMember("keyframe") ) { IsKeyFrame = true; FirstIDRInKeyFrame = true; - }else{ + } else { IsKeyFrame = false; FirstKeyFrame = false; } - if (IsKeyFrame){ - TimeStamp = (Strm.getPacket(0)["time"].asInt() * 27000); + if( IsKeyFrame ) { + TimeStamp = ( Strm.getPacket(0)["time"].asInt() * 27000 ); } int TSType; bool FirstPic = true; - while (DTMIData.size()){ - ThisNaluSize = (DTMIData[0] << 24) + (DTMIData[1] << 16) + (DTMIData[2] << 8) + DTMIData[3]; - DTMIData.erase(0, 4); //Erase the first four characters; + while( DTMIData.size() ) { + ThisNaluSize = (DTMIData[0] << 24) + (DTMIData[1] << 16) + + (DTMIData[2] << 8) + DTMIData[3]; + DTMIData.erase(0,4);//Erase the first four characters; TSType = (int)DTMIData[0] & 0x1F; - if (TSType == 0x05){ - if (FirstPic){ - ToPack += avccbox.asAnnexB(); + if( TSType == 0x05 ) { + if( FirstPic ) { + ToPack += avccbox.asAnnexB( ); FirstPic = false; - } - if (IsKeyFrame){ - if ( !FirstKeyFrame && FirstIDRInKeyFrame){ - ToPack.append(TS::NalHeader, 4); + } + if( IsKeyFrame ) { + if( !FirstKeyFrame && FirstIDRInKeyFrame ) { + ToPack.append(TS::NalHeader,4); FirstIDRInKeyFrame = false; - }else{ - ToPack.append(TS::ShortNalHeader, 3); + } else { + ToPack.append(TS::ShortNalHeader,3); } } - }else if (TSType == 0x01){ - if (FirstPic){ - ToPack.append(TS::NalHeader, 4); + } else if ( TSType == 0x01 ) { + if( FirstPic ) { + ToPack.append(TS::NalHeader,4); FirstPic = false; - }else{ - ToPack.append(TS::ShortNalHeader, 3); + } else { + ToPack.append(TS::ShortNalHeader,3); } - }else{ - ToPack.append(TS::NalHeader, 4); + } else { + ToPack.append(TS::NalHeader,4); } - ToPack.append(DTMIData, 0, ThisNaluSize); - DTMIData.erase(0, ThisNaluSize); + ToPack.append(DTMIData,0,ThisNaluSize); + DTMIData.erase(0,ThisNaluSize); } WritePesHeader = true; - while (ToPack.size()){ - if ((PacketNumber % 42) == 0){ + while( ToPack.size() ) { + if ( ( PacketNumber % 42 ) == 0 ) { PackData.DefaultPAT(); - conn.SendNow(PackData.ToString(), 188); + conn.SendNow( PackData.ToString(), 188 ); PackData.DefaultPMT(); - conn.SendNow(PackData.ToString(), 188); + conn.SendNow( PackData.ToString(), 188 ); PacketNumber += 2; } PackData.Clear(); - PackData.PID(0x100); - PackData.ContinuityCounter(VideoCounter); - VideoCounter++; - if (WritePesHeader){ - PackData.UnitStart(1); - if (IsKeyFrame){ - PackData.RandomAccess(1); - PackData.PCR(TimeStamp); - }else{ - PackData.AdaptationField(1); + PackData.PID( 0x100 ); + PackData.ContinuityCounter( VideoCounter ); + VideoCounter ++; + if( WritePesHeader ) { + PackData.UnitStart( 1 ); + if( IsKeyFrame ) { + PackData.RandomAccess( 1 ); + PackData.PCR( TimeStamp ); + } else { + PackData.AdaptationField( 1 ); } - PackData.AddStuffing(184 - (20 + ToPack.size())); - PackData.PESVideoLeadIn(ToPack.size(), Strm.getPacket(0)["time"].asInt() * 90); + PackData.AddStuffing( 184 - (20+ToPack.size()) ); + PackData.PESVideoLeadIn( ToPack.size(), Strm.getPacket(0)["time"].asInt() * 90 ); WritePesHeader = false; - }else{ - PackData.AdaptationField(1); - PackData.AddStuffing(184 - (ToPack.size())); + } else { + PackData.AdaptationField( 1 ); + PackData.AddStuffing( 184 - (ToPack.size()) ); } - PackData.FillFree(ToPack); - conn.SendNow(PackData.ToString(), 188); - PacketNumber++; + PackData.FillFree( ToPack ); + conn.SendNow( PackData.ToString(), 188 ); + PacketNumber ++; } - }else if (Strm.lastType() == DTSC::AUDIO){ + } else if( Strm.lastType() == DTSC::AUDIO ) { WritePesHeader = true; DTMIData = Strm.lastData(); - ToPack = TS::GetAudioHeader(DTMIData.size(), Strm.metadata["audio"]["init"].asString()); + ToPack = TS::GetAudioHeader( DTMIData.size(), Strm.metadata["audio"]["init"].asString() ); ToPack += DTMIData; TimeStamp = Strm.getPacket(0)["time"].asInt() * 81000; - while (ToPack.size()){ - if ((PacketNumber % 42) == 0){ + while( ToPack.size() ) { + if ( ( PacketNumber % 42 ) == 0 ) { PackData.DefaultPAT(); - conn.SendNow(PackData.ToString(), 188); + conn.SendNow( PackData.ToString(), 188 ); PackData.DefaultPMT(); - conn.SendNow(PackData.ToString(), 188); + conn.SendNow( PackData.ToString(), 188 ); PacketNumber += 2; } PackData.Clear(); - PackData.PID(0x101); - PackData.ContinuityCounter(AudioCounter); - AudioCounter++; - if (WritePesHeader){ - PackData.UnitStart(1); - PackData.RandomAccess(1); - PackData.AddStuffing(184 - (14 + ToPack.size())); - PackData.PESAudioLeadIn(ToPack.size(), TimeStamp); + PackData.PID( 0x101 ); + PackData.ContinuityCounter( AudioCounter ); + AudioCounter ++; + if( WritePesHeader ) { + PackData.UnitStart( 1 ); + PackData.RandomAccess( 1 ); + PackData.AddStuffing( 184 - (14 + ToPack.size()) ); + PackData.PESAudioLeadIn( ToPack.size(), TimeStamp ); WritePesHeader = false; - }else{ - PackData.AdaptationField(1); - PackData.AddStuffing(184 - (ToPack.size())); + } else { + PackData.AdaptationField( 1 ); + PackData.AddStuffing( 184 - (ToPack.size()) ); } - PackData.FillFree(ToPack); - conn.SendNow(PackData.ToString(), 188); - PacketNumber++; + PackData.FillFree( ToPack ); + conn.SendNow( PackData.ToString(), 188 ); + PacketNumber ++; } } } } } - fprintf(stderr, "Exiting\n"); + fprintf( stderr, "Exiting\n" ); return 0; } int main(int argc, char ** argv){ Util::Config conf(argv[0], PACKAGE_VERSION); - conf.addOption("streamname", - JSON::fromString("{\"arg\":\"string\",\"arg_num\":1,\"help\":\"The name of the stream that this connector will transmit.\"}")); + conf.addOption("streamname",JSON::fromString("{\"arg\":\"string\",\"arg_num\":1,\"help\":\"The name of the stream that this connector will transmit.\"}")); conf.addConnectorOptions(8888); conf.parseArgs(argc, argv); Socket::Server server_socket = Socket::Server(conf.getInteger("listen_port"), conf.getString("listen_interface")); - if ( !server_socket.connected()){ - return 1; - } + if (!server_socket.connected()){return 1;} conf.activate(); - + while (server_socket.connected() && conf.is_active){ Socket::Connection S = server_socket.accept(); - if (S.connected()){ //check if the new connection is valid - fprintf(stderr, "Incoming connection\n"); + if (S.connected()){//check if the new connection is valid +fprintf(stderr,"Incoming connection\n"); pid_t myid = fork(); - if (myid == 0){ //if new child, start MAINHANDLER - return TS_Handler(S, conf.getString("streamname")); - }else{ //otherwise, do nothing or output debugging text -#if DEBUG >= 3 + if (myid == 0){//if new child, start MAINHANDLER + return TS_Handler(S,conf.getString("streamname")); + }else{//otherwise, do nothing or output debugging text + #if DEBUG >= 3 fprintf(stderr, "Spawned new process %i for socket %i\n", (int)myid, S.getSocket()); -#endif + #endif } } - } //while connected + }//while connected server_socket.close(); return 0; -} //main +}//main diff --git a/src/converters/dtsc2ts.cpp b/src/converters/dtsc2ts.cpp index f70820f3..3f0f9a9f 100644 --- a/src/converters/dtsc2ts.cpp +++ b/src/converters/dtsc2ts.cpp @@ -10,8 +10,9 @@ #include //TS support #include //DTSC support #include //For initdata conversion -int main(){ - char charBuffer[1024 * 10]; + +int main( ) { + char charBuffer[1024*10]; unsigned int charCount; std::string StrData; std::string ToPack; @@ -29,124 +30,126 @@ int main(){ bool FirstIDRInKeyFrame; MP4::AVCC avccbox; bool haveAvcc = false; - - while (std::cin.good()){ - if (DTSCStream.parsePacket(StrData)){ - if ( !haveAvcc){ - avccbox.setPayload(DTSCStream.metadata["video"]["init"].asString()); + + + while( std::cin.good() ) { + if ( DTSCStream.parsePacket( StrData ) ) { + if( !haveAvcc ) { + avccbox.setPayload( DTSCStream.metadata["video"]["init"].asString() ); haveAvcc = true; } - if (DTSCStream.lastType() == DTSC::VIDEO){ + if( DTSCStream.lastType() == DTSC::VIDEO ) { DTMIData = DTSCStream.lastData(); - if (DTSCStream.getPacket(0).isMember("keyframe")){ + if( DTSCStream.getPacket(0).isMember("keyframe") ) { IsKeyFrame = true; FirstIDRInKeyFrame = true; - }else{ + } else { IsKeyFrame = false; FirstKeyFrame = false; } - if (IsKeyFrame){ - TimeStamp = (DTSCStream.getPacket(0)["time"].asInt() * 27000); + if( IsKeyFrame ) { + TimeStamp = ( DTSCStream.getPacket(0)["time"].asInt() * 27000 ); } int TSType; bool FirstPic = true; - while (DTMIData.size()){ - ThisNaluSize = (DTMIData[0] << 24) + (DTMIData[1] << 16) + (DTMIData[2] << 8) + DTMIData[3]; - DTMIData.erase(0, 4); //Erase the first four characters; + while( DTMIData.size() ) { + ThisNaluSize = (DTMIData[0] << 24) + (DTMIData[1] << 16) + + (DTMIData[2] << 8) + DTMIData[3]; + DTMIData.erase(0,4);//Erase the first four characters; TSType = (int)DTMIData[0] & 0x1F; - if (TSType == 0x05){ - if (FirstPic){ - ToPack += avccbox.asAnnexB(); + if( TSType == 0x05 ) { + if( FirstPic ) { + ToPack += avccbox.asAnnexB( ); FirstPic = false; - } - if (IsKeyFrame){ - if ( !FirstKeyFrame && FirstIDRInKeyFrame){ - ToPack.append(TS::NalHeader, 4); + } + if( IsKeyFrame ) { + if( !FirstKeyFrame && FirstIDRInKeyFrame ) { + ToPack.append(TS::NalHeader,4); FirstIDRInKeyFrame = false; - }else{ - ToPack.append(TS::ShortNalHeader, 3); + } else { + ToPack.append(TS::ShortNalHeader,3); } } - }else if (TSType == 0x01){ - if (FirstPic){ - ToPack.append(TS::NalHeader, 4); + } else if ( TSType == 0x01 ) { + if( FirstPic ) { + ToPack.append(TS::NalHeader,4); FirstPic = false; - }else{ - ToPack.append(TS::ShortNalHeader, 3); + } else { + ToPack.append(TS::ShortNalHeader,3); } - }else{ - ToPack.append(TS::NalHeader, 4); + } else { + ToPack.append(TS::NalHeader,4); } - ToPack.append(DTMIData, 0, ThisNaluSize); - DTMIData.erase(0, ThisNaluSize); + ToPack.append(DTMIData,0,ThisNaluSize); + DTMIData.erase(0,ThisNaluSize); } WritePesHeader = true; - while (ToPack.size()){ - if ((PacketNumber % 42) == 0){ + while( ToPack.size() ) { + if ( ( PacketNumber % 42 ) == 0 ) { PackData.DefaultPAT(); - std::cout.write(PackData.ToString(), 188); + std::cout.write( PackData.ToString(), 188 ); PackData.DefaultPMT(); - std::cout.write(PackData.ToString(), 188); + std::cout.write( PackData.ToString(), 188 ); PacketNumber += 2; } PackData.Clear(); - PackData.PID(0x100); - PackData.ContinuityCounter(VideoCounter); - VideoCounter++; - if (WritePesHeader){ - PackData.UnitStart(1); - if (IsKeyFrame){ - PackData.RandomAccess(1); - PackData.PCR(TimeStamp); - }else{ - PackData.AdaptationField(1); + PackData.PID( 0x100 ); + PackData.ContinuityCounter( VideoCounter ); + VideoCounter ++; + if( WritePesHeader ) { + PackData.UnitStart( 1 ); + if( IsKeyFrame ) { + PackData.RandomAccess( 1 ); + PackData.PCR( TimeStamp ); + } else { + PackData.AdaptationField( 1 ); } - PackData.AddStuffing(184 - (20 + ToPack.size())); - PackData.PESVideoLeadIn(ToPack.size(), DTSCStream.getPacket(0)["time"].asInt() * 90); + PackData.AddStuffing( 184 - (20+ToPack.size()) ); + PackData.PESVideoLeadIn( ToPack.size(), DTSCStream.getPacket(0)["time"].asInt() * 90 ); WritePesHeader = false; - }else{ - PackData.AdaptationField(1); - PackData.AddStuffing(184 - (ToPack.size())); + } else { + PackData.AdaptationField( 1 ); + PackData.AddStuffing( 184 - (ToPack.size()) ); } - PackData.FillFree(ToPack); - std::cout.write(PackData.ToString(), 188); - PacketNumber++; + PackData.FillFree( ToPack ); + std::cout.write( PackData.ToString(), 188 ); + PacketNumber ++; } - }else if (DTSCStream.lastType() == DTSC::AUDIO){ + } else if( DTSCStream.lastType() == DTSC::AUDIO ) { WritePesHeader = true; DTMIData = DTSCStream.lastData(); - ToPack = TS::GetAudioHeader(DTMIData.size(), DTSCStream.metadata["audio"]["init"].asString()); + ToPack = TS::GetAudioHeader( DTMIData.size(), DTSCStream.metadata["audio"]["init"].asString() ); ToPack += DTMIData; TimeStamp = DTSCStream.getPacket(0)["time"].asInt() * 81000; - while (ToPack.size()){ - if ((PacketNumber % 42) == 0){ + while( ToPack.size() ) { + if ( ( PacketNumber % 42 ) == 0 ) { PackData.DefaultPAT(); - std::cout.write(PackData.ToString(), 188); + std::cout.write( PackData.ToString(), 188 ); PackData.DefaultPMT(); - std::cout.write(PackData.ToString(), 188); + std::cout.write( PackData.ToString(), 188 ); PacketNumber += 2; } PackData.Clear(); - PackData.PID(0x101); - PackData.ContinuityCounter(AudioCounter); - AudioCounter++; - if (WritePesHeader){ - PackData.UnitStart(1); - PackData.RandomAccess(1); - PackData.AddStuffing(184 - (14 + ToPack.size())); - PackData.PESAudioLeadIn(ToPack.size(), TimeStamp); + PackData.PID( 0x101 ); + PackData.ContinuityCounter( AudioCounter ); + AudioCounter ++; + if( WritePesHeader ) { + PackData.UnitStart( 1 ); + PackData.RandomAccess( 1 ); + PackData.AddStuffing( 184 - (14 + ToPack.size()) ); + PackData.PESAudioLeadIn( ToPack.size(), TimeStamp ); WritePesHeader = false; - }else{ - PackData.AdaptationField(1); - PackData.AddStuffing(184 - (ToPack.size())); + } else { + PackData.AdaptationField( 1 ); + PackData.AddStuffing( 184 - (ToPack.size()) ); } - PackData.FillFree(ToPack); - std::cout.write(PackData.ToString(), 188); - PacketNumber++; + PackData.FillFree( ToPack ); + std::cout.write( PackData.ToString(), 188 ); + PacketNumber ++; } } - }else{ - std::cin.read(charBuffer, 1024 * 10); + } else { + std::cin.read(charBuffer, 1024*10); charCount = std::cin.gcount(); StrData.append(charBuffer, charCount); }