Fixed Connector, Selection mechanism still missing
This commit is contained in:
parent
102231103c
commit
45df1b72df
3 changed files with 168 additions and 347 deletions
|
@ -10,30 +10,21 @@
|
|||
#include "../../lib/ts_packet.h" //TS support
|
||||
#include "../../lib/dtsc.h" //DTSC support
|
||||
|
||||
std::string GetAudioHeader( int FrameLen ) {
|
||||
char StandardHeader[7] = {0xFF,0xF1,0x4C,0x80,0x00,0x1F,0xFC};
|
||||
FrameLen += 7;
|
||||
StandardHeader[3] = ( StandardHeader[3] & 0xFC ) + ( ( FrameLen & 0x00001800 ) >> 11 );
|
||||
StandardHeader[4] = ( ( FrameLen & 0x000007F8 ) >> 3 );
|
||||
StandardHeader[5] = ( StandardHeader[5] & 0x3F ) + ( ( FrameLen & 0x00000007 ) << 5 );
|
||||
return std::string(StandardHeader,7);
|
||||
}
|
||||
|
||||
int main( ) {
|
||||
char charBuffer[1024*10];
|
||||
unsigned int charCount;
|
||||
std::string StrData;
|
||||
TS::Packet PackData;
|
||||
std::string ToPack;
|
||||
DTSC::Stream DTSCStream;
|
||||
int TSPackNum = 0;
|
||||
std::string DTMIData;
|
||||
bool WritePesHeader;
|
||||
bool IsKeyFrame;
|
||||
TS::Packet PackData;
|
||||
DTSC::Stream DTSCStream;
|
||||
int PacketNumber = 0;
|
||||
uint64_t TimeStamp = 0;
|
||||
int ThisNaluSize;
|
||||
int VidContinuity = 0;
|
||||
int AudioContinuity = 0;
|
||||
char VideoCounter = 0;
|
||||
char AudioCounter = 0;
|
||||
bool WritePesHeader;
|
||||
bool IsKeyFrame;
|
||||
bool FirstKeyFrame = true;
|
||||
bool FirstIDRInKeyFrame;
|
||||
while( std::cin.good() ) {
|
||||
|
@ -54,7 +45,8 @@ int main( ) {
|
|||
int TSType;
|
||||
bool FirstPic = true;
|
||||
while( DTMIData.size() ) {
|
||||
ThisNaluSize = (DTMIData[0] << 24) + (DTMIData[1] << 16) + (DTMIData[2] << 8) + DTMIData[3];
|
||||
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];
|
||||
if( TSType == 0x25 ) {
|
||||
|
@ -86,21 +78,17 @@ int main( ) {
|
|||
}
|
||||
WritePesHeader = true;
|
||||
while( ToPack.size() ) {
|
||||
if ( ( TSPackNum % 210 ) == 0 ) {
|
||||
PackData.FFMpegHeader();
|
||||
PackData.ToString();
|
||||
}
|
||||
if ( ( TSPackNum % 42 ) == 0 ) {
|
||||
if ( ( PacketNumber % 42 ) == 0 ) {
|
||||
PackData.DefaultPAT();
|
||||
PackData.ToString();
|
||||
} else if ( ( TSPackNum % 42 ) == 1 ) {
|
||||
} else if ( ( PacketNumber % 42 ) == 1 ) {
|
||||
PackData.DefaultPMT();
|
||||
PackData.ToString();
|
||||
PackData.ToString();
|
||||
} else {
|
||||
PackData.Clear();
|
||||
PackData.PID( 0x100 );
|
||||
PackData.ContinuityCounter( VidContinuity );
|
||||
VidContinuity ++;
|
||||
PackData.ContinuityCounter( VideoCounter );
|
||||
VideoCounter ++;
|
||||
if( WritePesHeader ) {
|
||||
PackData.UnitStart( 1 );
|
||||
if( IsKeyFrame ) {
|
||||
|
@ -114,36 +102,31 @@ int main( ) {
|
|||
WritePesHeader = false;
|
||||
} else {
|
||||
PackData.AdaptationField( 0x01 );
|
||||
PackData.AddStuffing( 184 - (ToPack.size()) );
|
||||
}
|
||||
PackData.AddStuffing( 184 - (ToPack.size()) );
|
||||
}
|
||||
PackData.FillFree( ToPack );
|
||||
PackData.ToString();
|
||||
}
|
||||
TSPackNum++;
|
||||
}
|
||||
PacketNumber ++;
|
||||
}
|
||||
} else if( DTSCStream.lastType() == DTSC::AUDIO ) {
|
||||
WritePesHeader = true;
|
||||
DTMIData = DTSCStream.lastData();
|
||||
ToPack = GetAudioHeader( DTMIData.size() );
|
||||
ToPack += DTMIData;
|
||||
TimeStamp = DTSCStream.getPacket(0).getContent("time").NumValue() * 900;
|
||||
PackData.Clear();
|
||||
while( ToPack.size() ) {
|
||||
if ( ( TSPackNum % 210 ) == 0 ) {
|
||||
PackData.FFMpegHeader();
|
||||
PackData.ToString();
|
||||
}
|
||||
if ( ( TSPackNum % 42 ) == 0 ) {
|
||||
ToPack = TS::GetAudioHeader( DTMIData.size() );
|
||||
ToPack += DTMIData;
|
||||
TimeStamp = DTSCStream.getPacket(0).getContent("time").NumValue() * 900;
|
||||
while( ToPack.size() ) {
|
||||
if ( ( PacketNumber % 42 ) == 0 ) {
|
||||
PackData.DefaultPAT();
|
||||
PackData.ToString();
|
||||
} else if ( ( TSPackNum % 42 ) == 1 ) {
|
||||
} else if ( ( PacketNumber % 42 ) == 1 ) {
|
||||
PackData.DefaultPMT();
|
||||
PackData.ToString();
|
||||
} else {
|
||||
PackData.Clear();
|
||||
PackData.PID( 0x101 );
|
||||
PackData.ContinuityCounter( AudioContinuity );
|
||||
AudioContinuity ++;
|
||||
PackData.ContinuityCounter( AudioCounter );
|
||||
AudioCounter ++;
|
||||
if( WritePesHeader ) {
|
||||
PackData.UnitStart( 1 );
|
||||
PackData.RandomAccess( 1 );
|
||||
|
@ -152,14 +135,14 @@ int main( ) {
|
|||
WritePesHeader = false;
|
||||
} else {
|
||||
PackData.AdaptationField( 0x01 );
|
||||
PackData.AddStuffing( 184 - (ToPack.size()) );
|
||||
}
|
||||
PackData.AddStuffing( 184 - (ToPack.size()) );
|
||||
}
|
||||
PackData.FillFree( ToPack );
|
||||
PackData.ToString();
|
||||
}
|
||||
TSPackNum++;
|
||||
}
|
||||
}
|
||||
}
|
||||
PacketNumber ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue