Various fixes, among which:

- Fixed segfault when attempting to initialseek on disconnected streams
- Fix 100% CPU bug in controller's stats code
- WebRTC UDP bind socket improvements
- Several segfault fixes
- Increased packet reordering buffer size from 30 to 150 packets
- Tweaks to default output/buffer behaviour for incoming pushes
- Added message for load balancer checks
- Fixed HLS content type
- Stats fixes
- Exit reason fixes
- Fixed socket IP address detection
- Fixed non-string arguments for stream settings
- Added caching for getConnectedBinHost()
- Added WebRTC playback rate control
- Added/completed VP8/VP9 support to WebRTC/RTSP
- Added live seek option to WebRTC
- Fixed seek to exactly newest timestamp
- Fixed HLS input

# Conflicts:
#	lib/defines.h
#	src/input/input.cpp
This commit is contained in:
Thulinma 2021-04-21 18:11:46 +02:00
parent 2b99f2f5ea
commit 0af992d405
75 changed files with 1512 additions and 790 deletions

View file

@ -1063,8 +1063,8 @@ namespace MP4{
ESDS::ESDS(){memcpy(data + 4, "esds", 4);}
ESDS::ESDS(std::string init){
///\todo Do this better, in a non-hardcoded way.
ESDS::ESDS(const DTSC::Meta & M, size_t idx){
std::string init = M.getInit(idx);
memcpy(data + 4, "esds", 4);
reserve(payloadOffset, 0, init.size() ? init.size() + 28 : 26);
unsigned int i = 12;
@ -1084,14 +1084,10 @@ namespace MP4{
data[i++] = 0; // buffer size
data[i++] = 0; // buffer size
data[i++] = 0; // buffer size
data[i++] = 0; // maxbps
data[i++] = 0; // maxbps
data[i++] = 0; // maxbps
data[i++] = 0; // maxbps
data[i++] = 0; // avgbps
data[i++] = 0; // avgbps
data[i++] = 0; // avgbps
data[i++] = 0; // avgbps
Bit::htobl(data+i, M.getMaxBps(idx));//maxbps
i += 4;
Bit::htobl(data+i, M.getBps(idx));//avgbps
i += 4;
if (init.size()){
data[i++] = 0x5; // DecSpecificInfoTag
data[i++] = init.size();
@ -2825,17 +2821,20 @@ namespace MP4{
AudioSampleEntry::AudioSampleEntry(const DTSC::Meta &M, size_t idx){
std::string tCodec = M.getCodec(idx);
initialize();
if (tCodec == "AAC" || tCodec == "MP3"){setCodec("mp4a");}
if (tCodec == "AC3"){setCodec("ac-3");}
setDataReferenceIndex(1);
setSampleRate(M.getRate(idx));
setChannelCount(M.getChannels(idx));
setSampleSize(M.getSize(idx));
if (tCodec == "AAC" || tCodec == "MP3"){
setCodec("mp4a");
setSampleSize(16);
}
if (tCodec == "AC3"){setCodec("ac-3");}
if (tCodec == "AC3"){
MP4::DAC3 dac3Box(M.getRate(idx), M.getChannels(idx));
setCodecBox(dac3Box);
}else{// other codecs use the ESDS box
MP4::ESDS esdsBox(M.getInit(idx));
MP4::ESDS esdsBox(M, idx);
setCodecBox(esdsBox);
}
}