Standardized coding style for TS-related code.
This commit is contained in:
parent
439d5bf98c
commit
05416da269
4 changed files with 246 additions and 245 deletions
25
lib/nal.cpp
25
lib/nal.cpp
|
@ -19,10 +19,17 @@ bool NAL_Unit::ReadData( std::string & InputData ) {
|
|||
ShortAnnexB += (char)0x00;
|
||||
ShortAnnexB += (char)0x01;
|
||||
// fprintf( stderr, "NAL_Unit::ReadData --- DataSize: %d\n", InputData.size() );
|
||||
if( InputData.size() < 3 ) { return false; }
|
||||
if (InputData.size() < 3){
|
||||
return false;
|
||||
}
|
||||
bool AnnexB = false;
|
||||
if( InputData.substr(0,3) == ShortAnnexB ) { AnnexB = true; }
|
||||
if( InputData.substr(0,4) == FullAnnexB ) { InputData.erase(0,1); AnnexB = true; }
|
||||
if (InputData.substr(0, 3) == ShortAnnexB){
|
||||
AnnexB = true;
|
||||
}
|
||||
if (InputData.substr(0, 4) == FullAnnexB){
|
||||
InputData.erase(0, 1);
|
||||
AnnexB = true;
|
||||
}
|
||||
if (AnnexB){
|
||||
MyData = "";
|
||||
InputData.erase(0, 3); //Intro Bytes
|
||||
|
@ -31,9 +38,13 @@ bool NAL_Unit::ReadData( std::string & InputData ) {
|
|||
MyData = InputData.substr(0, Location);
|
||||
InputData.erase(0, Location);
|
||||
}else{
|
||||
if( InputData.size() < 4 ) { return false; }
|
||||
if (InputData.size() < 4){
|
||||
return false;
|
||||
}
|
||||
int UnitLen = (InputData[0] << 24) + (InputData[1] << 16) + (InputData[2] << 8) + InputData[3];
|
||||
if( InputData.size() < 4+UnitLen ) { return false; }
|
||||
if (InputData.size() < 4 + UnitLen){
|
||||
return false;
|
||||
}
|
||||
InputData.erase(0, 4); //Remove Length
|
||||
MyData = InputData.substr(0, UnitLen);
|
||||
InputData.erase(0, UnitLen); //Remove this unit from the string
|
||||
|
@ -44,7 +55,9 @@ bool NAL_Unit::ReadData( std::string & InputData ) {
|
|||
std::string NAL_Unit::AnnexB(bool LongIntro){
|
||||
std::string Result;
|
||||
if (MyData.size()){
|
||||
if( LongIntro ) { Result += (char)0x00; }
|
||||
if (LongIntro){
|
||||
Result += (char)0x00;
|
||||
}
|
||||
Result += (char)0x00;
|
||||
Result += (char)0x00;
|
||||
Result += (char)0x01; //Annex B Lead-In
|
||||
|
|
|
@ -11,4 +11,5 @@ class NAL_Unit {
|
|||
int Type();
|
||||
private:
|
||||
std::string MyData;
|
||||
};//NAL_Unit class
|
||||
};
|
||||
//NAL_Unit class
|
||||
|
|
|
@ -25,7 +25,8 @@ bool TS::Packet::FromString( std::string & Data ) {
|
|||
}
|
||||
|
||||
/// The deconstructor deletes all space that may be occupied by a TS::Packet.
|
||||
TS::Packet::~Packet() { }
|
||||
TS::Packet::~Packet(){
|
||||
}
|
||||
|
||||
/// Sets the PID of a single TS::Packet.
|
||||
/// \param NewPID The new PID of the packet.
|
||||
|
@ -135,11 +136,8 @@ int TS::Packet::AdaptationFieldLen( ) {
|
|||
|
||||
/// Prints a packet to stdout, for analyser purposes.
|
||||
void TS::Packet::Print(){
|
||||
std::cout << "TS Packet: " << (strBuf[0] == 0x47)
|
||||
<< "\n\tNewUnit: " << UnitStart()
|
||||
<< "\n\tPID: " << PID()
|
||||
<< "\n\tContinuity Counter: " << ContinuityCounter()
|
||||
<< "\n\tAdaption Field: " << AdaptationField() << "\n";
|
||||
std::cout << "TS Packet: " << (strBuf[0] == 0x47) << "\n\tNewUnit: " << UnitStart() << "\n\tPID: " << PID() << "\n\tContinuity Counter: "
|
||||
<< ContinuityCounter() << "\n\tAdaption Field: " << AdaptationField() << "\n";
|
||||
if (AdaptationField()){
|
||||
std::cout << "\t\tAdaption Field Length: " << AdaptationFieldLen() << "\n";
|
||||
if (AdaptationFieldLen()){
|
||||
|
@ -299,7 +297,9 @@ void TS::Packet::FillFree( std::string & NewVal ) {
|
|||
/// Adds NumBytes of stuffing to the TS::Packet.
|
||||
/// \param NumBytes the amount of stuffing bytes.
|
||||
void TS::Packet::AddStuffing(int NumBytes){
|
||||
if( NumBytes <= 0 ) { return; }
|
||||
if (NumBytes <= 0){
|
||||
return;
|
||||
}
|
||||
if (AdaptationField() == 3){
|
||||
int Offset = strBuf[4];
|
||||
strBuf[4] = Offset + NumBytes - 1;
|
||||
|
|
|
@ -48,7 +48,8 @@ namespace TS {
|
|||
//int Free;
|
||||
std::string strBuf;
|
||||
//char Buffer[188];///< The actual data
|
||||
};//TS::Packet class
|
||||
};
|
||||
//TS::Packet class
|
||||
|
||||
/// Constructs an audio header to be used on each audio frame.
|
||||
/// The length of this header will ALWAYS be 7 bytes, and has to be
|
||||
|
@ -69,45 +70,31 @@ namespace TS {
|
|||
|
||||
/// A standard Program Association Table, as generated by FFMPEG.
|
||||
/// Seems to be independent of the stream.
|
||||
static char PAT[188] = {
|
||||
0x47,0x40,0x00,0x10, 0x00,0x00,0xB0,0x0D, 0x00,0x01,0xC1,0x00, 0x00,0x00,0x01,0xF0,
|
||||
0x00,0x2A,0xB1,0x04, 0xB2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF
|
||||
};
|
||||
static char PAT[188] = {0x47, 0x40, 0x00, 0x10, 0x00, 0x00, 0xB0, 0x0D, 0x00, 0x01, 0xC1, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x2A, 0xB1, 0x04,
|
||||
0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||
|
||||
/// A standard Program Mapping Table, as generated by FFMPEG.
|
||||
/// Contains both Audio and Video mappings, works also on video- or audio-only streams.
|
||||
static char PMT[188] = {
|
||||
0x47,0x50,0x00,0x10, 0x00,0x02,0xB0,0x17, 0x00,0x01,0xC1,0x00, 0x00,0xE1,0x00,0xF0,
|
||||
0x00,0x1B,0xE1,0x00, 0xF0,0x00,0x0F,0xE1, 0x01,0xF0,0x00,0x2F, 0x44,0xB9,0x9B,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF
|
||||
};
|
||||
static char PMT[188] = {0x47, 0x50, 0x00, 0x10, 0x00, 0x02, 0xB0, 0x17, 0x00, 0x01, 0xC1, 0x00, 0x00, 0xE1, 0x00, 0xF0, 0x00, 0x1B, 0xE1, 0x00,
|
||||
0xF0, 0x00, 0x0F, 0xE1, 0x01, 0xF0, 0x00, 0x2F, 0x44, 0xB9, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||
|
||||
/// The full Bytesteam Nal-Header.
|
||||
static char NalHeader[4] = {
|
||||
0x00,0x00,0x00,0x01
|
||||
};
|
||||
static char NalHeader[4] = {0x00, 0x00, 0x00, 0x01};
|
||||
|
||||
/// The shortened Bytesteam Nal-Header.
|
||||
static char ShortNalHeader[3] = {
|
||||
0x00,0x00,0x01
|
||||
};
|
||||
};//TS namespace
|
||||
static char ShortNalHeader[3] = {0x00, 0x00, 0x01};
|
||||
}
|
||||
;
|
||||
//TS namespace
|
||||
|
|
Loading…
Add table
Reference in a new issue