Commit graph

178 commits

Author SHA1 Message Date
Marco van Dijk
e0eb624e53 Change "always on" behaviour to simulate always having viewers rather than forcibly keeping inputs active 2023-07-06 13:06:18 +02:00
Thulinma
4df771eb02 Optimization that allows Socket::Buffer to write directly to a Util::ResizeablePointer 2023-04-10 14:31:26 +02:00
Ramkoemar
a7183aedc5 FLAC support:
- FLAC container input and output support
- FLAC container analyser
- FLAC codec support in EBML input and output
2023-02-26 20:37:15 +01:00
Marco van Dijk
2b18a414b4 Added support for external writers 2023-02-22 13:25:42 +01:00
Thulinma
4743769c15 Simplified MP4 input logic significantly, added DTSC::Meta::getPartTime() function, fixed issues with MP4 files with frame durations smaller than 1ms 2022-12-12 20:24:38 +01:00
Thulinma
7a4ac15fcf Attempt to fix reload bug 2022-12-12 20:24:38 +01:00
Thulinma
4181b52857 Silence more compile warnings, fix compilation on MacOS 2022-10-27 14:50:38 +02:00
Ivan Tivonenko
0a13ec1119 Fix compile warnings
Co-authored-by: Thulinma <jaron@vietors.com>
2022-10-27 14:50:38 +02:00
Siddarth Tegginamani
4033f1d009 Check keyTimingsMatch in DTSC 2022-02-11 22:43:49 +01:00
Siddarth Tegginamani
c2c94bb4b4 fixed fragment datatype: uint32_t to uint64_t 2022-02-03 13:14:25 +01:00
Siddarth Tegginamani
ba07c5444f Bug Fix: check "video" as type instead of codec in maintrack() 2022-02-03 13:13:44 +01:00
Siddarth Tegginamani
4a866305e5 DTSC pull input now supports keeping stream UTC offset intact between servers, plus a local fallback calculation for older versions 2022-02-03 13:11:17 +01:00
Thulinma
75559a367b Set livepeer-transcoded track to have a source track, exclude tracks with source track from stream health info 2022-01-23 00:04:48 +01:00
Thulinma
f560b88bfe Several fixes:
- Fixed bug in stream health function causing loop if track not active
- Fixed DTSC pulls ignoring data before the live point
- Improved async buffers (deque mode) to spread the tracks more fairly
- DTSC pull now implements "ping" and "error" commands
- DTSC pulls report suspicious keyframe intervals to the origin and ask for confirmation
- DTSC output now accepts these reports and disconnects if there is no match in keyframe intervals
- Outputs in async mode now keep the seek point in all tracks when reselecting
- Outputs in async mode now default to a starting position in each track that is at a keyframe roughly halfway in the buffer
- Outputs in async mode now ignore playback rate (always fastest possible)
- Removed code duplication in prepareNext function
- Reordered the prepareNext function somewhat to be easier to follow for humans
- DTSC output no longer overrides initialSeek function, now uses default implementation
- Sanitycheck output now supports both sync and async modes, supports printing multiple timestamps for multiple tracks
2022-01-23 00:03:54 +01:00
Thulinma
200e1e4a1c WS/MP4 reliability edits:
- Stream selecting now obeys new "maxdelay" capa entry
- Output::liveSeek now takes an optional bool argument to indicate only rate control should be applied (no seeking)
- dataWaitTimeout is now configurable per-output, defaults to the old 25s
- WS/MP4 uses the new liveSeek with rate-control only
- WS/MP4 uses the new dataWaitTimeout and sets it to 4.5s
- WS/MP4 uses the new maxdelay capa, sets it to 5s
- WS/MP4 will now auto-reselect tracks if a track is dropped for data wait timeout or disappeared from metadata reasons
- Added support for jitter information in WS/MP4 protocol
- Robustify sendWebsocketCodecData being ran when sendHeader is ran
- Fix race condition when switching video tracks before previous video track has sent a single frame
2022-01-22 23:59:09 +01:00
Thulinma
ad4c1abd0b Playlist support fixed 2021-12-24 15:09:36 +01:00
Marco van Dijk
684df4b23d Added utcoffset field to metadata to display VoD program time if supported by output 2021-11-24 13:09:11 +01:00
Marco van Dijk
3d9ed39396 setstreamVodField and streamLiveField no longer mutually exclusive
Removed curPage map from IO. bufferFrame now creates this variable locally and passes it to bufferStart, bufferFinalize and bufferNext
Fix keyNum selection with mixed live & VoD data
Fix bufferframe to handle mixed VoD and live
Added check to bufferFrame to not start the countdown timer for removing live pages
Fixed countdown timer being set using keyNum rather than pageNumber, which resulted in the wrong pages being deleted
livePage variable moved from static to private variable to correctly handle multithreaded inputs

# Conflicts:
#	src/io.cpp
#	src/output/output.cpp
2021-11-22 15:38:58 +01:00
Thulinma
6733bf2a20 Fixed all ARM-related issues/warnings/etc 2021-11-04 18:49:27 +01:00
Marco van Dijk
b37a431b41 Fix setting trackFirstmsFieldfirstMS using the correct value (and for live streams as well) 2021-10-19 22:29:42 +02:00
Thulinma
7d95a75492 Moved inputBuffer::fillBufferDetails to DTSC::Meta::getHealthJSON 2021-10-19 22:29:42 +02:00
Thulinma
0a3c399a98 Ensure key and page numbers are all 32 bits, robustify/fix packet handling internals 2021-10-19 22:29:42 +02:00
Siddarth Tegginamani
5aa459f2c8 Bug fix: Added language information to meta data. 2021-10-19 22:29:42 +02:00
Thulinma
3d4a3852d8 Typo fix in DTSC lib 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
586c4ab47b Fixed firstms field in live streams that don't start from 0 2021-10-19 22:29:41 +02:00
Thulinma
5a40225046 CMAF debug session 2021-02-04 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
63acbb1ddb Fixes for DTSC metadata handling 2021-10-19 22:29:41 +02:00
Thulinma
ea49344628 DTSC push output support, fixes for DTSC push input and DTSC pull output 2021-10-19 22:29:41 +02:00
Thulinma
b0b5e2ebcc Fix DTSC::Meta::clear() using a semaphore to clear uninitialized state 2021-10-19 22:29:41 +02:00
Thulinma
027bd5f9da Speed optimizes:
- MP4 output optimizations
- DTSC::Meta::getPageNumberForTime speedup
- RelAccX class speedup
- Generic output optimizations
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
95706337c1 Fix bug for memory-backed DTSC::Meta when tracks are added 2021-10-19 22:29:41 +02:00
Thulinma
2bf7c14815 Fixed SEM_TRACKLIST not being cleaned up from shared memory on stream shutdown 2021-10-19 22:29:40 +02:00
Thulinma
36a1a88cb0 Added ability to mask source tracks for processes 2021-10-19 22:29:40 +02:00
Thulinma
bd9ae56532 Timing improvements for all outputs and DTSC socket input 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
668560ff05 Added skipDynamic optional argument to most binary representations of metadata/tracks, which skips sending dynamic parts of the metadata if true. 2016-05-05 16:05:12 +02:00
Thulinma
fa6dd9ee56 Merge branch 'development' into LTS_development
# Conflicts:
#	lib/dtsc.cpp
#	lib/dtsc.h
2016-01-28 11:31:00 +01:00
Thulinma
9631b79e86 Removed DTSC::Stream and DTSC::Ring classes - no longer in use anywhere. 2016-01-28 11:27:26 +01:00
Thulinma
c20b8f2081 Fixed newlines in debug messages. Also, backported various Pro edition fixes that belonged in OS edition. 2015-10-08 13:54:54 +02:00
Thulinma
4bdbd82f66 LTS Commits 2015-04-05 21:38:36 +02:00
Erik Zandvliet
d370ef4eac Working multi-input 2015-04-02 09:56:47 +02:00
Thulinma
e8d1578a33 removed readOnlyMeta (was not really in use) 2015-03-06 16:52:59 +01:00
Thulinma
6a61b3be08 Made shared memory or shared files implementation a compile flag, fixed various compile warnings. 2014-12-30 22:11:42 +01:00
Thulinma
4d9f4da3f1 Ogg support fixed and re-added. Squash of various commits made by Wouter Spruit. 2014-12-23 13:05:41 +01:00