Merge branch 'development' into LTS_development

# Conflicts:
#	src/output/output.h
This commit is contained in:
Thulinma 2017-07-28 18:39:49 +02:00
commit dc8bae8dd3
10 changed files with 80 additions and 30 deletions

View file

@ -672,7 +672,7 @@ namespace Mist {
}
bufferFinalize(track);
bufferTimer = Util::bootMS() - bufferTimer;
DEBUG_MSG(DLVL_DEVEL, "Done buffering page %d (%llu packets, %llu bytes) for track %d in %llums", keyNum, packCounter, byteCounter, track, bufferTimer);
DEBUG_MSG(DLVL_DEVEL, "Done buffering page %d (%llu packets, %llu bytes) for track %d (%s) in %llums", keyNum, packCounter, byteCounter, track, myMeta.tracks[track].codec.c_str(), bufferTimer);
pageCounter[track][keyNum] = 15;
return true;
}

View file

@ -296,11 +296,11 @@ namespace Mist {
///Buffers the next packet on the currently opened page
///\param pack The packet to buffer
void InOutBase::bufferNext(DTSC::Packet & pack) {
void InOutBase::bufferNext(const DTSC::Packet & pack) {
nProxy.bufferNext(pack, myMeta);
}
void negotiationProxy::bufferNext(DTSC::Packet & pack, DTSC::Meta & myMeta) {
void negotiationProxy::bufferNext(const DTSC::Packet & pack, DTSC::Meta & myMeta) {
static bool multiWrong = false;
//Save the trackid of the track for easier access
unsigned long tid = pack.getTrackId();
@ -453,11 +453,11 @@ namespace Mist {
///
///Initiates/continues negotiation with the buffer as well
///\param packet The packet to buffer
void InOutBase::bufferLivePacket(DTSC::Packet & packet){
void InOutBase::bufferLivePacket(const DTSC::Packet & packet){
nProxy.bufferLivePacket(packet, myMeta);
}
void negotiationProxy::bufferLivePacket(DTSC::Packet & packet, DTSC::Meta & myMeta){
void negotiationProxy::bufferLivePacket(const DTSC::Packet & packet, DTSC::Meta & myMeta){
myMeta.vod = false;
myMeta.live = true;
//Store the trackid for easier access
@ -491,7 +491,7 @@ namespace Mist {
}
}
void negotiationProxy::bufferSinglePacket(DTSC::Packet & packet, DTSC::Meta & myMeta){
void negotiationProxy::bufferSinglePacket(const DTSC::Packet & packet, DTSC::Meta & myMeta){
//Store the trackid for easier access
unsigned long tid = packet.getTrackId();
//This update needs to happen whether the track is accepted or not.

View file

@ -32,10 +32,10 @@ namespace Mist {
void clear();
void initiateEncryption();//LTS
bool bufferStart(unsigned long tid, unsigned long pageNumber, DTSC::Meta & myMeta);
void bufferNext(DTSC::Packet & pack, DTSC::Meta & myMeta);
void bufferNext(const DTSC::Packet & pack, DTSC::Meta & myMeta);
void bufferFinalize(unsigned long tid, DTSC::Meta &myMeta);
void bufferLivePacket(DTSC::Packet & packet, DTSC::Meta & myMeta);
void bufferSinglePacket(DTSC::Packet & packet, DTSC::Meta & myMeta);
void bufferLivePacket(const DTSC::Packet & packet, DTSC::Meta & myMeta);
void bufferSinglePacket(const DTSC::Packet & packet, DTSC::Meta & myMeta);
bool isBuffered(unsigned long tid, unsigned long keyNum);
unsigned long bufferedOnPage(unsigned long tid, unsigned long keyNum);
@ -73,10 +73,10 @@ namespace Mist {
public:
void initiateMeta();
bool bufferStart(unsigned long tid, unsigned long pageNumber);
void bufferNext(DTSC::Packet & pack);
void bufferNext(const DTSC::Packet & pack);
void bufferFinalize(unsigned long tid);
void bufferRemove(unsigned long tid, unsigned long pageNumber);
virtual void bufferLivePacket(DTSC::Packet & packet);
virtual void bufferLivePacket(const DTSC::Packet & packet);
protected:
void continueNegotiate(unsigned long tid, bool quickNegotiate = false);
void continueNegotiate();

View file

@ -46,7 +46,7 @@ namespace Mist{
cfg->addOption("noinput", option);
}
void Output::bufferLivePacket(DTSC::Packet & packet){
void Output::bufferLivePacket(const DTSC::Packet & packet){
if (!pushIsOngoing){
waitForStreamPushReady();
}

View file

@ -135,7 +135,7 @@ namespace Mist {
bool allowPush(const std::string & passwd);
void waitForStreamPushReady();
bool pushIsOngoing;
void bufferLivePacket(DTSC::Packet & packet);
void bufferLivePacket(const DTSC::Packet & packet);
uint64_t firstPacketTime;
uint64_t lastPacketTime;
};

View file

@ -4,6 +4,7 @@
#include <mist/stream.h>
#include <mist/triggers.h>
#include <mist/encode.h>
#include <mist/util.h>
#include <sys/stat.h>
#include <cstring>
#include <cstdlib>
@ -293,8 +294,7 @@ namespace Mist{
0, 0, 0, 0}; //bytes 12-15 = extended timestamp
char dataheader[] ={0, 0, 0, 0, 0};
unsigned int dheader_len = 1;
static char * swappyPointer = 0;
static uint32_t swappySize = 0;
static Util::ResizeablePointer swappy;
char * tmpData = 0;//pointer to raw media data
unsigned int data_len = 0;//length of processed media data
thisPacket.getString("data", tmpData, data_len);
@ -346,21 +346,12 @@ namespace Mist{
dataheader[0] |= 0x10;
}
if (track.codec == "PCM"){
if (track.size == 16){
if (swappySize < data_len){
char * tmp = (char*)realloc(swappyPointer, data_len);
if (!tmp){
FAIL_MSG("Could not allocate data for PCM endianness swap!");
return;
}
swappyPointer = tmp;
swappySize = data_len;
}
if (track.size == 16 && swappy.allocate(data_len)){
for (uint32_t i = 0; i < data_len; i+=2){
swappyPointer[i] = tmpData[i+1];
swappyPointer[i+1] = tmpData[i];
swappy[i] = tmpData[i+1];
swappy[i+1] = tmpData[i];
}
tmpData = swappyPointer;
tmpData = swappy;
}
dataheader[0] |= 0x30;
}