From 027a986481cfcae6c978ba0fe42bd7f5fe93c3d5 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 5 Mar 2013 11:42:22 +0100 Subject: [PATCH] Improved live metadata support. --- lib/dtsc.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index a1a9a393..2ccf4587 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -307,6 +307,9 @@ void DTSC::Stream::dropRing(DTSC::Ring * ptr){ } } +/// Updates the headers for a live stream, keeping track of all available +/// keyframes and their media times. The function MAY NOT be run at any other +/// time than right after receiving a new keyframe, or there'll be raptors. void DTSC::Stream::updateHeaders(){ if (keyframes.size() > 2){ metadata["keytime"].shrink(keyframes.size() - 2); @@ -317,6 +320,7 @@ void DTSC::Stream::updateHeaders(){ }else{ metadata["keynum"].append(metadata["keynum"][metadata["keynum"].size() - 1].asInt() + 1); } + metadata["keylen"].append(buffers[keyframes[0].b]["time"].asInt() - buffers[keyframes[1].b]["time"].asInt()); metadata["lastms"] = buffers[keyframes[0].b]["time"].asInt(); metadata.toPacked(); updateRingHeaders();