Fixed messed up merge. Really, guys?
This commit is contained in:
parent
80f3588b56
commit
6890632e9d
3 changed files with 36 additions and 30 deletions
|
@ -112,8 +112,37 @@ namespace Mist {
|
|||
cfg->addBasicConnectorOptions(capa);
|
||||
config = cfg;
|
||||
}
|
||||
//HIER
|
||||
|
||||
///this function generates the PMT packet
|
||||
std::string OutHLS::createPMT(){
|
||||
TS::ProgramMappingTable PMT;
|
||||
PMT.PID(4096);
|
||||
PMT.setTableId(2);
|
||||
PMT.setSectionLength(0xB017);
|
||||
PMT.setProgramNumber(1);
|
||||
PMT.setVersionNumber(0);
|
||||
PMT.setCurrentNextIndicator(0);
|
||||
PMT.setSectionNumber(0);
|
||||
PMT.setLastSectionNumber(0);
|
||||
PMT.setPCRPID(0x100 + (*(selectedTracks.begin())) - 1);
|
||||
PMT.setProgramInfoLength(0);
|
||||
short id = 0;
|
||||
//for all selected tracks
|
||||
for (std::set<long unsigned int>::iterator it = selectedTracks.begin(); it != selectedTracks.end(); it++){
|
||||
if (myMeta.tracks[*it].codec == "H264"){
|
||||
PMT.setStreamType(0x1B,id);
|
||||
}else if (myMeta.tracks[*it].codec == "AAC"){
|
||||
PMT.setStreamType(0x0F,id);
|
||||
}else if (myMeta.tracks[*it].codec == "MP3"){
|
||||
PMT.setStreamType(0x03,id);
|
||||
}
|
||||
PMT.setElementaryPID(0x100 + (*it) - 1, id);
|
||||
PMT.setESInfoLength(0,id);
|
||||
id++;
|
||||
}
|
||||
PMT.calcCRC();
|
||||
return PMT.getStrBuf();
|
||||
}
|
||||
|
||||
void OutHLS::fillPacket(bool & first, const char * data, size_t dataLen, char & ContCounter){
|
||||
|
||||
|
@ -123,7 +152,8 @@ namespace Mist {
|
|||
PackData.Clear();
|
||||
if (PacketNumber % 42 == 0){
|
||||
HTTP_S.Chunkify(TS::PAT, 188, myConn);
|
||||
HTTP_S.Chunkify(TS::PMT, 188, myConn);
|
||||
std::string PMT = createPMT();
|
||||
HTTP_S.Chunkify(PMT, myConn);
|
||||
PacketNumber += 2;
|
||||
}
|
||||
}
|
||||
|
@ -131,11 +161,7 @@ namespace Mist {
|
|||
if (!dataLen){return;}
|
||||
|
||||
if (PackData.BytesFree() == 184){
|
||||
if (myMeta.tracks[currentPacket.getTrackId()].type == "video"){
|
||||
PackData.PID(0x100);
|
||||
}else{
|
||||
PackData.PID(0x101);
|
||||
}
|
||||
PackData.PID(0x100 - 1 + currentPacket.getTrackId());
|
||||
PackData.ContinuityCounter(ContCounter++);
|
||||
if (first){
|
||||
PackData.UnitStart(1);
|
||||
|
|
|
@ -10,13 +10,13 @@ namespace Mist {
|
|||
OutHLS(Socket::Connection & conn);
|
||||
~OutHLS();
|
||||
static void init(Util::Config * cfg);
|
||||
|
||||
void onRequest();
|
||||
void onFail();
|
||||
void sendNext();
|
||||
protected:
|
||||
HTTP::Parser HTTP_S;
|
||||
HTTP::Parser HTTP_R;
|
||||
std::string createPMT();
|
||||
void fillPacket(bool & first, const char * data, size_t dataLen, char & ContCounter);
|
||||
std::string liveIndex();
|
||||
std::string liveIndex(int tid);
|
||||
|
|
|
@ -67,11 +67,7 @@ namespace Mist {
|
|||
if (!dataLen){return;}
|
||||
|
||||
if (PackData.BytesFree() == 184){
|
||||
if (myMeta.tracks[currentPacket.getTrackId()].type == "video"){
|
||||
PackData.PID(0x100);
|
||||
}else{
|
||||
PackData.PID(0x101);
|
||||
}
|
||||
PackData.PID(0x100 - 1 + currentPacket.getTrackId());
|
||||
PackData.ContinuityCounter(ContCounter++);
|
||||
if (first){
|
||||
PackData.UnitStart(1);
|
||||
|
@ -138,21 +134,6 @@ namespace Mist {
|
|||
|
||||
///this function generates the PMT packet
|
||||
std::string OutTS::createPMT(){
|
||||
//0x02 = table ID = 2 = PMT
|
||||
//0xB017 = section syntax(1) = 1, 0(1)=0, reserved(2) = 3, section_len(12) = 23
|
||||
//0x0001 = ProgNo = 1
|
||||
//0xC1 = reserved(2) = 3, version(5)=0, curr_next_indi(1) = 1
|
||||
//0x00 = section_number = 0
|
||||
//0x00 = last_section_no = 0
|
||||
//0xE100 = reserved(3) = 7, PCR_PID(13) = 0x100
|
||||
//0xF000 = reserved(4) = 15, proginfolen = 0
|
||||
//0x1B = streamtype = 27 = H264
|
||||
//0xE100 = reserved(3) = 7, elem_ID(13) = 0x100
|
||||
//0xF000 = reserved(4) = 15, es_info_len = 0
|
||||
//0x0F = streamtype = 15 = audio with ADTS transport syntax
|
||||
//0xE101 = reserved(3) = 7, elem_ID(13) = 0x101
|
||||
//0xF000 = reserved(4) = 15, es_info_len = 0
|
||||
//0x2F44B99B = CRC32
|
||||
TS::ProgramMappingTable PMT;
|
||||
PMT.PID(4096);
|
||||
PMT.setTableId(2);
|
||||
|
@ -179,7 +160,6 @@ namespace Mist {
|
|||
id++;
|
||||
}
|
||||
PMT.calcCRC();
|
||||
INFO_MSG("stringsize: %d %s", PMT.getStrBuf().size(), PMT.toPrettyString(0).c_str());
|
||||
return PMT.getStrBuf();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue