Commit graph

598 commits

Author SHA1 Message Date
Marco van Dijk
01f11dcfda HLS input improvements:
- Added isOpen flag to the SegmentDownloader, so that we do not parse the data remaining from parseStreamHeader
- In inputHLS::firstSegment, use streamIsLive to determine vod vs live, rather than the size of userSelect
- Replaced check against 'smaller than zero', which always fails due to overflow of unsigned int
- Added print before downloading main playlist
2021-11-01 16:39:09 +01:00
Thulinma
aa77d86df1 Have MistInTS set the BootMsOffset correctly for live inputs 2021-10-20 13:41:20 +02:00
Thulinma
7d95a75492 Moved inputBuffer::fillBufferDetails to DTSC::Meta::getHealthJSON 2021-10-19 22:29:42 +02:00
Thulinma
829c8b7948 Fixed buffer not considering all processes running if there is no stream config. 2021-10-19 22:29:42 +02:00
Thulinma
ad9e72798a Increase VoD lookahead from 20 to 120 seconds 2021-10-19 22:29:42 +02:00
Thulinma
7067e9ae52 Change debugging level for part size checks from WARN to INFO 2021-10-19 22:29:42 +02:00
Thulinma
616c92eaa5 Improved exit reason logging in Mist::Input
# Conflicts:
#	src/input/input.cpp
2021-10-19 22:29:42 +02:00
Thulinma
5a53701a88 Fixed no-bframes MKV input unnecessarily delaying the stream by 16 frames every keyframe 2021-10-19 22:29:42 +02:00
Thulinma
209cd4c0fc Process system updates:
All processes:
- Added process status system and relevant API calls
- Added ability to set track masks for input/output in processes
- Added support for unmasking tracks when there is a push target, by the "unmask" parameter.
- Added track unmasking support for processes on exit/error
- Make processes start faster, if possible, in the first few seconds of a stream
- Delay stream ready state if there are processes attempting to start

Livepeer process updates:
- Added Content-Resolution header to MistProcLivepeer as per Livepeer's request
- Renamed transcode from "Mist Transcode" to source stream name
- Added ability to send audio to livepeer
- Robustified livepeer timing code, shutdown code, and improved GUI
- Prevent "audio keyframes" from starting segments in MistProcLivepeer
- Multithreaded (2 upload threads) livepeer process
- Stricter downloader/uploader timeout behaviour
- Robustness improvements
- Fix small segment size 😒
- Streamname correction
- Prevent getting stuck when transcoding multiple qualities and they are not equal length
- Corrected log message print error
- Race condition fix
- Now always waits for at least 1 video track
2021-10-19 22:29:41 +02:00
Thulinma
4080d141f8 Fix bug in Output::seek() when seeking to a timestamp that is between the last part of a key and the first part of the next key 2021-10-19 22:29:41 +02:00
Thulinma
dd5ae98002 Fix -1 since last update error in Buffer 2021-10-19 22:29:41 +02:00
Thulinma
63acbb1ddb Fixes for DTSC metadata handling 2021-10-19 22:29:41 +02:00
Thulinma
f862263354 Speed up MistInBuffer shutdown time 2021-10-19 22:29:41 +02:00
Thulinma
9f2fe22074 Fixed buffer disconnecting pushed inputs if they shared a PID with a viewer that disconnected 2021-10-19 22:29:41 +02:00
Thulinma
7423868de4 Made Util::streamName and exitReason thread-local 2021-10-19 22:29:41 +02:00
Thulinma
0bd5d742f6 SRT improvements:
- Made SRT support optional
- Make build options visible in cmake-gui
- Improved generic connection stats for outputs
- Added streamid handling configuration for MistInTSSRT
- Push input support over SRT
- Fixed support for SRT settings in push outputs
- Fix parsing of SRT-passed stream names
- Fixed hostnames in MistOutTSSRT, fixed PUSH_REWRITE trigger payload
- Opus support in TS-SRT
- Fixed SRT socket stats, fixed SRT socket address logic, improved SRT socket rolling restart support
- Fixed SRT push deny
2021-10-19 22:29:41 +02:00
Phencys
19199cbff8 TSSRT Support 2021-10-19 22:29:41 +02:00
Thulinma
974380ab30 Converted comms system entirely to being bitflag-based instead of integer state based 2021-10-19 22:29:41 +02:00
Thulinma
7297336e46 Rewrite of Comms 2021-10-19 22:29:41 +02:00
Thulinma
942ca0c1d1 Fixed input buffering for pages ending in a key > 20s long, added debug message when output reconnects to input during prepareNext. 2021-10-19 22:29:41 +02:00
Thulinma
f4051b5916 Fixed RTSP input in newMeta build 2021-10-19 22:29:41 +02:00
Thulinma
bc3ca638cd Fixed MistInAV compiling in newMeta branches 2021-10-19 22:29:41 +02:00
Thulinma
c434d792c4 Fixed MistInBuffer compile 2021-10-19 22:29:41 +02:00
Thulinma
fc7a460c49 Added ability to set debug level for MistProc* binaries, added support for global debug level for same. 2021-10-19 22:29:41 +02:00
Thulinma
49ee109b50 Added maxKeepAway option for live streams, renamed minkeepaway/keepaway to "jitter" externally, added global jitter and bframe checks in all JSON-like metadata outputs 2021-10-19 22:29:41 +02:00
Thulinma
15c132f6f8 Added MistUtilNuke, added input PID and pull PID fields, added nuke_stream API call 2021-10-19 22:29:41 +02:00
Thulinma
1fff195f77 Various TS improvements 2021-10-19 22:29:41 +02:00
Thulinma
3d26741148 Socket library and Config library restructuring, improvement to UDP socket reliability 2021-10-19 22:29:41 +02:00
Thulinma
97752f2c2d Opus in TS input/output support 2021-10-19 22:29:41 +02:00
Thulinma
561c073977 MistInEBML fix 2021-10-19 22:29:41 +02:00
Thulinma
3dfe377b9c Removed unneeded userSelect reload in inputs 2021-10-19 22:29:41 +02:00
Thulinma
dc2239e70f Slight improvements + more sanity checks in page buffering 2021-10-19 22:29:40 +02:00
Thulinma
0a51e95d1a Improved EBML B-frame detection/handling 2021-10-19 22:29:40 +02:00
Thulinma
5edf06ab68 More checks on connection quality 2021-10-19 22:29:40 +02:00
Thulinma
de4890ac20 Livepeer transcoding support 2021-10-19 22:29:40 +02:00
Thulinma
b5b09f21b4 Improvements to ResizeablePointer 2021-10-19 22:29:40 +02:00
Thulinma
3ca1ea3b30 Temp fix for invalid tracks 2021-10-19 22:29:40 +02:00
Thulinma
771fad390a Allow overriding application name with -DAPPNAME="Name here" 2021-10-19 22:29:40 +02:00
Thulinma
a8e04e1787 Fixes to CMAF output 2021-10-19 22:29:40 +02:00
Thulinma
0af992d405 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
2021-10-19 22:29:40 +02:00
Phencys
2b99f2f5ea New Meta commit 2021-10-19 22:29:40 +02:00
DDVTech
fccf66fba2 Restyle 2021-10-19 22:29:40 +02:00
Thulinma
fff62656ba Added autostarting for processes through buffer 2021-10-19 22:29:39 +02:00
Thulinma
637c57be5e FFMPEG process fixes/improvements 2021-10-19 22:29:39 +02:00
Thulinma
dbafdf6744 Correct handling of reaper thread in forking binaries 2021-03-19 22:47:06 +01:00
Thulinma
5f8518fe23 Fix playlist support not resuming on the correct page number and/or with the correct timestamp 2021-02-19 22:45:51 +01:00
Marco
c9cd529927 Fixes for playlist support
Track matching fixes:
  Input MP4 is not getting dimensions properly, causing resume to not find a collision
    Fixed by overwriting dimensions when media frames are read
  Detecting collisions using track identifier can cause issues (ie audio_AAC_2ch_44100hz_eng VS audio_AAC_2ch_44100hz)
    Fixed by matching using init data, then check by identifier if there is more than 1 match

Fixed buffering code for playlist streams, ensuring correct page creation:
  In resume mode new pages do not get created, but existing one(s) fill up
    Keyframes were not being recognized due to them being deleted during track switching
      Fixed by changing negotiationProxy::bufferNext:
        Removed seemingly unnecessary function which cleared keyframes
      Lastly, the offset of a resumed track seems wrong
        Added to NegotiationProxy::continueNegotiate
          pagesByTrack[tid][firstPage].curOffset = 0;
        Added to negotiationProxy::bufferSinglePacket:
          if (!pagesByTrack[tid][currentPageNum].curOffset) {
            pagesByTrack[tid][currentPageNum].firstTime = packet.getTime();
          }

Fixed numbering for keys from the buffer when accepting tracks (was amount of buffered keys, not last key number)
2021-02-19 22:43:26 +01:00
Thulinma
f38ec0322e Improvements/tests for SEM_LIVE locking for iRankLocally 2020-09-30 17:31:13 +02:00
Thulinma
d522c1d90f Merge branch 'development' into LTS_development
# Conflicts:
#	src/input/input_buffer.cpp
2020-09-30 17:29:49 +02:00
Thulinma
bafe30e234 Improvements/tests for SEM_LIVE locking 2020-09-30 17:24:57 +02:00