Switched extended RTMP timestamps from big endian to little endian, to match most current-day implementations.
This commit is contained in:
parent
cf101262db
commit
14fa673df6
2 changed files with 16 additions and 16 deletions
|
@ -145,10 +145,10 @@ std::string & RTMPStream::Chunk::Pack() {
|
|||
}
|
||||
//support for 0x00ffffff timestamps
|
||||
if (ntime) {
|
||||
output += (unsigned char)(ntime & 0xff);
|
||||
output += (unsigned char)((ntime >> 8) & 0xff);
|
||||
output += (unsigned char)((ntime >> 16) & 0xff);
|
||||
output += (unsigned char)((ntime >> 24) & 0xff);
|
||||
output += (unsigned char)((ntime >> 16) & 0xff);
|
||||
output += (unsigned char)((ntime >> 8) & 0xff);
|
||||
output += (unsigned char)(ntime & 0xff);
|
||||
}
|
||||
len_left = 0;
|
||||
while (len_left < len) {
|
||||
|
@ -172,10 +172,10 @@ std::string & RTMPStream::Chunk::Pack() {
|
|||
}
|
||||
}
|
||||
if (ntime) {
|
||||
output += (unsigned char)(ntime & 0xff);
|
||||
output += (unsigned char)((ntime >> 8) & 0xff);
|
||||
output += (unsigned char)((ntime >> 16) & 0xff);
|
||||
output += (unsigned char)((ntime >> 24) & 0xff);
|
||||
output += (unsigned char)((ntime >> 16) & 0xff);
|
||||
output += (unsigned char)((ntime >> 8) & 0xff);
|
||||
output += (unsigned char)(ntime & 0xff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -460,10 +460,10 @@ bool RTMPStream::Chunk::Parse(Socket::Buffer & buffer) {
|
|||
return false;
|
||||
} //can't read timestamp
|
||||
indata = buffer.copy(i + 4);
|
||||
timestamp = indata[i++ ];
|
||||
timestamp += indata[i++ ] * 256;
|
||||
timestamp += indata[i++ ] * 256 * 256;
|
||||
timestamp += indata[i++ ] * 256 * 256 * 256;
|
||||
timestamp += indata[i++ ] * 256 * 256;
|
||||
timestamp += indata[i++ ] * 256;
|
||||
timestamp = indata[i++ ];
|
||||
ts_delta = timestamp;
|
||||
DEBUG_MSG(DLVL_DONTEVEN, "Extended timestamp: %u", timestamp);
|
||||
}
|
||||
|
|
|
@ -332,10 +332,10 @@ namespace Mist {
|
|||
rtmpheader[1] = 0xff;
|
||||
rtmpheader[2] = 0xff;
|
||||
rtmpheader[3] = 0xff;
|
||||
rtmpheader[header_len++] = timestamp & 0xff;
|
||||
rtmpheader[header_len++] = (timestamp >> 8) & 0xff;
|
||||
rtmpheader[header_len++] = (timestamp >> 16) & 0xff;
|
||||
rtmpheader[header_len++] = (timestamp >> 24) & 0xff;
|
||||
rtmpheader[header_len++] = (timestamp >> 16) & 0xff;
|
||||
rtmpheader[header_len++] = (timestamp >> 8) & 0xff;
|
||||
rtmpheader[header_len++] = timestamp & 0xff;
|
||||
}else{
|
||||
//regular timestamp
|
||||
rtmpheader[1] = (timestamp >> 16) & 0xff;
|
||||
|
@ -350,10 +350,10 @@ namespace Mist {
|
|||
//set the header's first byte to the "continue" type chunk, for later use
|
||||
rtmpheader[0] = 0xC4;
|
||||
if (timestamp >= 0x00ffffff){
|
||||
rtmpheader[1] = timestamp & 0xff;
|
||||
rtmpheader[2] = (timestamp >> 8) & 0xff;
|
||||
rtmpheader[3] = (timestamp >> 16) & 0xff;
|
||||
rtmpheader[4] = (timestamp >> 24) & 0xff;
|
||||
rtmpheader[1] = (timestamp >> 24) & 0xff;
|
||||
rtmpheader[2] = (timestamp >> 16) & 0xff;
|
||||
rtmpheader[3] = (timestamp >> 8) & 0xff;
|
||||
rtmpheader[4] = timestamp & 0xff;
|
||||
}
|
||||
|
||||
//sent actual data - never send more than chunk_snd_max at a time
|
||||
|
|
Loading…
Add table
Reference in a new issue