Optimizations and bug fixes
This commit is contained in:
parent
3703f6e859
commit
8ce3484f6e
3 changed files with 21 additions and 5 deletions
|
@ -88,11 +88,11 @@ int TS::Packet::AdaptationField( ) {
|
|||
/// Sets the PCR (Program Clock Reference) of a TS::Packet.
|
||||
/// \param NewVal The new PCR Value.
|
||||
void TS::Packet::PCR( int64_t NewVal ) {
|
||||
NewVal += (0xF618 * 300);
|
||||
AdaptationField( 3 );
|
||||
Buffer[4] = 7;
|
||||
Buffer[5] = (Buffer[5] | 0x10 );
|
||||
int64_t TmpVal = NewVal / 300;
|
||||
fprintf( stderr, "\tSetting PCR_Base: %d\n", TmpVal );
|
||||
Buffer[6] = (((TmpVal>>1)>>24) & 0xFF);
|
||||
Buffer[7] = (((TmpVal>>1)>>16) & 0xFF);
|
||||
Buffer[8] = (((TmpVal>>1)>>8) & 0xFF);
|
||||
|
@ -227,7 +227,7 @@ std::string TS::Packet::ToString( ) {
|
|||
/// Starts at the first Free byte.
|
||||
/// \param NewLen The length of this video frame.
|
||||
void TS::Packet::PESVideoLeadIn( int NewLen ) {
|
||||
static int PTS = 27000000;
|
||||
static int PTS = 126000;
|
||||
NewLen += 14;
|
||||
int Offset = ( 188 - Free );
|
||||
Buffer[Offset] = 0x00;//PacketStartCodePrefix
|
||||
|
|
|
@ -41,7 +41,10 @@ int main( ) {
|
|||
IsKeyFrame = false;
|
||||
FirstKeyFrame = false;
|
||||
}
|
||||
TimeStamp = (DTSCStream.getPacket(0).getContent("time").NumValue() * 27000 );
|
||||
TimeStamp = ((DTSCStream.getPacket(0).getContent("time").NumValue() + 700) * 27000 );
|
||||
if( IsKeyFrame ) {
|
||||
fprintf( stderr, "Keyframe, timeStamp: %u\n", TimeStamp );
|
||||
}
|
||||
int TSType;
|
||||
bool FirstPic = true;
|
||||
while( DTMIData.size() ) {
|
||||
|
@ -129,8 +132,9 @@ int main( ) {
|
|||
AudioCounter ++;
|
||||
if( WritePesHeader ) {
|
||||
PackData.UnitStart( 1 );
|
||||
PackData.RandomAccess( 1 );
|
||||
//PackData.RandomAccess( 1 );
|
||||
PackData.AddStuffing( 184 - (14 + ToPack.size()) );
|
||||
PackData.RandomAccess( 1 );
|
||||
PackData.PESAudioLeadIn( ToPack.size(), TimeStamp );
|
||||
WritePesHeader = false;
|
||||
} else {
|
||||
|
|
|
@ -31,6 +31,7 @@ int main( ) {
|
|||
int PMT_PID = -1;
|
||||
int VideoPID = -1;
|
||||
int AudioPID = -1;
|
||||
int VideoTime_Offset = -1;
|
||||
DTSC::DTMI Meta;
|
||||
DTSC::DTMI VideoOut;
|
||||
DTSC::DTMI AudioOut;
|
||||
|
@ -85,11 +86,16 @@ int main( ) {
|
|||
NAL_Unit Transformer;
|
||||
int i = 0;
|
||||
while( Transformer.ReadData( AnnexBData ) ) {
|
||||
if( Transformer.Type() < 6 || Transformer.Type() > 9 ) { //Extract SPS/PPS/SEI/Separator Data
|
||||
if( Transformer.Type() <= 6 || Transformer.Type() >= 10 ) { //Extract SPS/PPS/Separator Data
|
||||
NewData += Transformer.SizePrepended( );
|
||||
}
|
||||
}
|
||||
VideoOut.addContent( DTSC::DTMI( "data", NewData ) );
|
||||
if( VideoTime_Offset == -1 ) {
|
||||
VideoTime_Offset = VideoOut.getContent("time").NumValue();
|
||||
}
|
||||
int VideoTime = VideoOut.getContent("time").NumValue();
|
||||
VideoOut.addContent( DTSC::DTMI( "time", VideoTime - VideoTime_Offset ) );
|
||||
std::cout << VideoOut.Pack(true);
|
||||
VideoOut = DTSC::DTMI();
|
||||
}
|
||||
|
@ -109,10 +115,16 @@ int main( ) {
|
|||
}
|
||||
}
|
||||
VideoOut.addContent( DTSC::DTMI( "data", NewData ) );
|
||||
if( VideoTime_Offset == -1 ) {
|
||||
VideoTime_Offset = VideoOut.getContent("time").NumValue();
|
||||
}
|
||||
int VideoTime = VideoOut.getContent("time").NumValue();
|
||||
VideoOut.addContent( DTSC::DTMI( "time", VideoTime - VideoTime_Offset ) );
|
||||
std::cout << VideoOut.Pack(true);
|
||||
VideoOut = DTSC::DTMI();
|
||||
}
|
||||
if( TSData.UnitStart( ) && PrevType == "Audio" ) {
|
||||
|
||||
fprintf( stderr, "\tNew AudioPacket, Writing old\n" );
|
||||
std::string AudioData = AudioOut.getContent("data").StrValue();
|
||||
AudioData.erase(0,7);//remove the header
|
||||
|
|
Loading…
Add table
Reference in a new issue