Input start
This commit is contained in:
parent
0d6ff18723
commit
6bad0360a1
3 changed files with 36 additions and 6 deletions
|
@ -7,18 +7,19 @@
|
||||||
/// All this constructor does is call TS::Packet::Clear().
|
/// All this constructor does is call TS::Packet::Clear().
|
||||||
TS::Packet::Packet() { Clear( ); }
|
TS::Packet::Packet() { Clear( ); }
|
||||||
|
|
||||||
/// This constructor creates a filled TS::Packet, or creates an empty
|
/// This function fills a TS::Packet from provided Data.
|
||||||
/// packet if not enough Data provided.
|
|
||||||
/// It fills the content with the first 188 bytes of Data.
|
/// It fills the content with the first 188 bytes of Data.
|
||||||
/// \param Data The data to be read into the packet.
|
/// \param Data The data to be read into the packet.
|
||||||
TS::Packet::Packet( std::string & Data ) {
|
/// \return true if it was possible to read in a full packet, false otherwise.
|
||||||
|
bool TS::Packet::FromString( std::string & Data ) {
|
||||||
if( Data.size() < 188 ) {
|
if( Data.size() < 188 ) {
|
||||||
Clear( );
|
return false;
|
||||||
} else {
|
} else {
|
||||||
for( int i = 0; i < 188; i++ ) { Buffer[i] = Data[i]; }
|
for( int i = 0; i < 188; i++ ) { Buffer[i] = Data[i]; }
|
||||||
Data.erase(0,188);
|
Data.erase(0,188);
|
||||||
Free = 0;
|
Free = 0;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The deconstructor deletes all space that may be occupied by a TS::Packet.
|
/// The deconstructor deletes all space that may be occupied by a TS::Packet.
|
||||||
|
@ -323,3 +324,28 @@ void TS::Packet::FFMpegHeader( ) {
|
||||||
Free = 0;
|
Free = 0;
|
||||||
MyCntr = ( (MyCntr + 1) % 0x10);
|
MyCntr = ( (MyCntr + 1) % 0x10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TS::Packet::ProgramMapPID( ) {
|
||||||
|
if( PID() != 0 ) { return -1; }
|
||||||
|
int Offset = Buffer[4];
|
||||||
|
int ProgramNumber = ( Buffer[13+Offset] << 8 ) + Buffer[14+Offset];
|
||||||
|
if( ProgramNumber == 0 ) { return -1; }
|
||||||
|
return ((Buffer[15+Offset] & 0x1F) << 8 ) + Buffer[16+Offset];
|
||||||
|
}
|
||||||
|
|
||||||
|
void TS::Packet::UpdateStreamPID( int & VideoPid, int & AudioPid ) {
|
||||||
|
int Offset = Buffer[4];
|
||||||
|
int SectionLength = ( ( Buffer[6+Offset] & 0x0F) << 8 ) + Buffer[7+Offset];
|
||||||
|
int ProgramInfoLength = ( (Buffer[15+Offset] & 0x0F) << 8 ) + Buffer[16+Offset];
|
||||||
|
int CurOffset = 17+ProgramInfoLength+Offset;
|
||||||
|
while( CurOffset < SectionLength-4 ) {
|
||||||
|
if( Buffer[CurOffset] == 0x01 || Buffer[CurOffset == 0x02] ) {
|
||||||
|
VideoPid = ((Buffer[CurOffset+1] & 0x1F) << 8 ) + Buffer[CurOffset+2];
|
||||||
|
}
|
||||||
|
if( Buffer[CurOffset] == 0x03 || Buffer[CurOffset == 0x04] ) {
|
||||||
|
AudioPid = ((Buffer[CurOffset+1] & 0x1F) << 8 ) + Buffer[CurOffset+2];
|
||||||
|
}
|
||||||
|
int ESLen = (( Buffer[CurOffset+3] & 0xF0 ) << 8 ) + Buffer[CurOffset+4];
|
||||||
|
CurOffset += ( 5 + ESLen );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -16,8 +16,8 @@ namespace TS {
|
||||||
class Packet {
|
class Packet {
|
||||||
public:
|
public:
|
||||||
Packet();
|
Packet();
|
||||||
Packet( std::string & Data );
|
|
||||||
~Packet();
|
~Packet();
|
||||||
|
bool FromString( std::string & Data );
|
||||||
void PID( int NewPID );
|
void PID( int NewPID );
|
||||||
int PID();
|
int PID();
|
||||||
void ContinuityCounter( int NewContinuity );
|
void ContinuityCounter( int NewContinuity );
|
||||||
|
@ -43,6 +43,9 @@ namespace TS {
|
||||||
void FillFree( std::string & PackageData );
|
void FillFree( std::string & PackageData );
|
||||||
void AddStuffing( int NumBytes );
|
void AddStuffing( int NumBytes );
|
||||||
void FFMpegHeader( );
|
void FFMpegHeader( );
|
||||||
|
|
||||||
|
int ProgramMapPID( );
|
||||||
|
void UpdateStreamPID( int & VideoPid, int & AudioPid );
|
||||||
private:
|
private:
|
||||||
int Free;
|
int Free;
|
||||||
char Buffer[188];///< The actual data
|
char Buffer[188];///< The actual data
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
AM_CPPFLAGS = $(global_CFLAGS) $(MIST_CFLAGS)
|
AM_CPPFLAGS = $(global_CFLAGS) $(MIST_CFLAGS)
|
||||||
LDADD = $(MIST_LIBS)
|
LDADD = $(MIST_LIBS)
|
||||||
bin_PROGRAMS=MistDTSC2FLV MistFLV2DTSC MistDTSCFix MistDTSC2TS
|
bin_PROGRAMS=MistDTSC2FLV MistFLV2DTSC MistDTSCFix MistDTSC2TS MistTS2DTSC
|
||||||
MistDTSC2FLV_SOURCES=dtsc2flv.cpp
|
MistDTSC2FLV_SOURCES=dtsc2flv.cpp
|
||||||
MistFLV2DTSC_SOURCES=flv2dtsc.cpp
|
MistFLV2DTSC_SOURCES=flv2dtsc.cpp
|
||||||
MistDTSCFix_SOURCES=dtscfix.cpp
|
MistDTSCFix_SOURCES=dtscfix.cpp
|
||||||
MistDTSC2TS_SOURCES=dtsc2ts.cpp
|
MistDTSC2TS_SOURCES=dtsc2ts.cpp
|
||||||
|
MistTS2DTSC_SOURCES=ts2dtsc.cpp
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue