From 5e2b29466b497ab365f0dce64d7ebf29e4127395 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 7 Apr 2017 15:34:41 +0200 Subject: [PATCH] Fixes and improvements to generic push-input handling --- lib/dtscmeta.cpp | 1 + lib/h264.cpp | 2 ++ src/io.cpp | 5 ++--- src/output/output.cpp | 1 + src/output/output_rtmp.cpp | 1 - 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index 143455f4..67bc499d 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1387,6 +1387,7 @@ namespace DTSC { } vod = (packBytePos > 0); live = !vod; + EXTREME_MSG("Updating meta with %lld@%lld+%lld", packTrack, packTime, packOffset); if (packTrack > 0 && tracks.count(packTrack)){ tracks[packTrack].update(packTime, packOffset, packDataSize, packBytePos, isKeyframe, packSendSize, segment_size); } diff --git a/lib/h264.cpp b/lib/h264.cpp index 1efa2cec..408a9900 100644 --- a/lib/h264.cpp +++ b/lib/h264.cpp @@ -213,6 +213,8 @@ namespace h264 { unsigned int timeScale = bs.get(32); result.fps = (double)timeScale / (2 * unitsInTick); bs.skip(1); + }else{ + result.fps = 0; } } diff --git a/src/io.cpp b/src/io.cpp index 4dff9e39..195060c2 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -305,9 +305,7 @@ namespace Mist { if (myMeta.live){ - //Update the metadata - DTSC::Packet updatePack(myPage.mapped + curOffset, size + 8, true); - myMeta.update(updatePack); + myMeta.update(pack); } //End of brain melt @@ -402,6 +400,7 @@ namespace Mist { myMeta.live = true; //Store the trackid for easier access unsigned long tid = packet.getTrackId(); + VERYHIGH_MSG("Buffering %s packet on track %lu: %llums, %db", myMeta.tracks[tid].codec.c_str(), tid, packet.getTime(), packet.getPayloadLen()); //Do nothing if the trackid is invalid if (!tid) { WARN_MSG("Packet without trackid!"); diff --git a/src/output/output.cpp b/src/output/output.cpp index 6ade1eaa..a923468a 100644 --- a/src/output/output.cpp +++ b/src/output/output.cpp @@ -198,6 +198,7 @@ namespace Mist{ if (nProxy.userClient.getData()){ nProxy.userClient.finish(); } + nProxy.streamName = streamName; char userPageName[NAME_BUFFER_SIZE]; snprintf(userPageName, NAME_BUFFER_SIZE, SHM_USERS, streamName.c_str()); unsigned int attempts = 0; diff --git a/src/output/output_rtmp.cpp b/src/output/output_rtmp.cpp index bd6fc99b..69dbdebc 100644 --- a/src/output/output_rtmp.cpp +++ b/src/output/output_rtmp.cpp @@ -927,7 +927,6 @@ namespace Mist { snprintf(userPageName, NAME_BUFFER_SIZE, SHM_USERS, streamName.c_str()); nProxy.userClient = IPC::sharedClient(userPageName, PLAY_EX_SIZE, true); } - nProxy.streamName = streamName; bufferLivePacket(thisPacket); } break;