MistServer  2.5.3-Pro-19-gf5e75b1 ( Generic_64)
Todo List
Global AMF::parseOne3 (const unsigned char *&data, unsigned int &len, unsigned int &i, std::string name)

Fix references?

Implement traits by reference. Or references in general, of course...

Read in arrsize sealed member names, then arrsize sealed members.

Fix references?

Implement traits by reference. Or references in general, of course...

Read in arrsize sealed member names, then arrsize sealed members.

Fix references?

Implement traits by reference. Or references in general, of course...

Read in arrsize sealed member names, then arrsize sealed members.

Fix references?

Namespace Analysers
rewrite this analyser.
Global Analysers::printPES (const std::string &d, unsigned long PID, int detailLevel)
Implement this. Complicated field, bah.
Global binToInt (std::string &binary)
Maybe move to util?
Global Bit::setMSB (char *pointer, unsigned int offsetBits, unsigned int dataBits, unsigned long long value)
Finish writing this - untested atm.
Global Controller::CheckProtocols (JSON::Value &p, const JSON::Value &capabilities)
Check dependencies?
Global Controller::fillTotals (JSON::Value &req, JSON::Value &rep)
Make the interval configurable instead of 1 second
Global Controller::handleAPIConnection (Socket::Connection &conn)
Re-enable conversion API at some point.
Global Controller::statStorage::update (IPC::statExchange &data)
Remove least interesting data first.
Global Controller::streamsEqual (JSON::Value &one, JSON::Value &two)

Change this to use capabilities["inputs"] and only compare required/optional parameters.

Maybe change this to check for correct source and/or required parameters.

Maybe change this to check for correct source and/or required parameters.

Maybe change this to check for correct source and/or required parameters.

Global DTSC::hex2c (char c)
Move this function to some generic area. Duplicate from json.cpp
Global DTSC::Meta::Meta ()

Make toJSON().toNetpacked() shorter

Make toJSON().toNetpacked() shorter

Global DTSC::string_escape (const std::string val)
Move this function to some generic area. Duplicate from json.cpp
Global FLV::Tag::needsInitData ()
Check if MP3 does or does not require init data...
Global HTTP::Parser::BuildRequest ()
Include GET/POST variable parsing?
Global HTTP::Parser::BuildResponse (std::string code, std::string message)
Include GET/POST variable parsing?
Global HTTP::Parser::parse (std::string &HTTPbuffer)
Make this not resize HTTPbuffer in parts, but read all at once and then remove the entire request, like doxygen claims it does?
Global HTTP::Parser::SendRequest (Socket::Connection &conn)
Include GET/POST variable parsing?
Global HTTP::Parser::SendResponse (std::string code, std::string message, Socket::Connection &conn)
Include GET/POST variable parsing?
Global IPC::sharedFile::init (std::string name_, unsigned int len_, bool master_=false, bool autoBackoff=true)
Use ACCESSPERMS instead of 0600?
Namespace Mist

Whar be Opus support?

Implement this trigger equivalent...

Global Mist::inputBuffer::removeKey (unsigned int tid)
Fix recording
Global Mist::inputBuffer::removeUnused ()
Consider replacing with eraseTrackDataPages(it->first)?
Global Mist::inputBuffer::userCallback (char *data, size_t len, unsigned int id)

Optimize this part. Find a way to not have to store the metadata in JSON first, but read it from the page immediately

Maybe switch to a new form of detecting collisions, especially with regards to multiple audio languages and camera angles.

Global Mist::inputMP4::readHeader ()

: this can be done with casting

more stuff here

this might be nice to calculate from mp4 file;

note: set this to begin time

Fix this. This makes no sense whatsoever. This isn't frame per kilosecond, but milli-STCO-entries per second.

Global Mist::inputOGG::parseBeginOfStream (OGG::Page &bosPage)
check if all trackID (tid) instances are replaced with bitstream serial numbers
Global Mist::inputOGG::readHeader ()
make sure the header is ffmpeg compatible
Global Mist::inputTS::getNext (bool smart=true)
Finish the implementation
Global Mist::inputTS::readHeader ()
Find errors, perhaps parts can be made more modular
Global Mist::inputTS::trackSelect (std::string trackSpec)
test whether selecting a subset of tracks work
Global Mist::mp4TrackHeader::read (MP4::TRAK &trakBox)

more stuff here

this box should not have to be read, since its information is taken from the DTSH

Global Mist::negotiationProxy::bufferLivePacket (DTSC::Packet &packet, DTSC::Meta &myMeta)
Figure out how to act with declined track here
Global Mist::OutDashMP4::buildManifest ()
Dash automatically selects the last audio and video track for manifest, maybe make this expandable/selectable?
Global Mist::OutDashMP4::buildMoof (unsigned int trackid, unsigned int keynum)
Determine index for live
Global Mist::OutDashMP4::buildMoov (unsigned int trackid)
Note: this code is copied, note for muxing seperation
Global Mist::OutHDS::getTracks ()
Why do we have only one audio track option?
Global Mist::OutHLS::onHTTP ()
Detection of out-of-range parts.
Global Mist::OutHSS::sendHeader ()

Rewrite to fragments

Select correct track (tid);

Check if this is a placeholder, or an actually correct number

Global Mist::OutProgressiveMP4::buildFragment (int fragNum)
See if we can use something more elegant than a member variable...
Global Mist::OutProgressiveMP4::DTSCMeta2MP4Header (long long &size, int fragmented=0)

This function does not indicate errors anywhere... maybe fix this...

Figure out if this box is really needed for anything.

rewrite for sanity

PLEASE rewrite this for sanity.... SHOULD be: index FIRST, value SECOND

rewrite for sanity

Again, rewrite for sanity. index FIRST, value SECOND

Update this thing for boxes >4G?

Global Mist::OutProgressiveMP4::init (Util::Config *cfg)
uncomment when we actually start implementing mp4 recording
Global Mist::OutProgressiveMP4::onHTTP ()

Should this happen here?

Do we really need this though?

Note: Not necessary, but we might want to think of a method that does not use seeking

Switch to chunked?

Switch to chunked?

Switch to chunked?

Global Mist::Output::Log (std::string type, std::string message)

These logs need to show up in the controller.

Additionally, the triggering and untriggering of limits should be recorded in the controller as well.

Global Mist::Output::run ()
generate payload
Global Mist::OutRTSP::handleDescribe ()
Make sure this works correctly for multibitrate streams.
Global Mist::OutRTSP::handlePlay ()
Add support for queuing multiple play ranges
Global Mist::OutRTSP::handleSetup ()

This needs error checking.

We should probably not allocate UDP sockets when using TCP.

Global Mist::OutRTSP::onRequest ()
Handle ANNOUNCE for push? Send out ANNOUNCE with stream length updates?
Global Mist::TSOutput::fillPacket (const char *data, const size_t dataLen)
only resend the PAT/PMT for HLS
Global Mist::TSOutput::packData
update constructors?
Global MP4::AudioSampleEntry::AudioSampleEntry ()

set default values

set default values

Global MP4::Box::toPrettyString (uint32_t indent=0)
Implement hexdump for unimplemented boxes?
Global MP4::calcBoxSize (char readVal[16])
make good working calcBoxSize with size and payloadoffset calculation
Global MP4::DAC3::DAC3 (unsigned int rate, unsigned int channels)
This is right now a default value. check the docs, this is a weird property
Global MP4::ESDS::ESDS (std::string init)
Do this better, in a non-hardcoded way.
Global MP4::HVCC::setArrays (std::deque< HVCCArrayEntry > &arrays)

Add setter for the array entries

Add setter for the array entries

Global MP4::MDHD::setLanguage (uint16_t newLanguage)

return language properly

return language properly

Global MP4::VisualSampleEntry::VisualSampleEntry ()

set default values

set default values

Global OGG::Page::sendTo (Socket::Connection &destination, int calcGranule=-2)
Rewrite this
Global pushFirstElement (std::string qId)
Make the dstConn "persistent" for each thread?
Global RTP::Packet::sendData (void *socket, void callBack(void *, char *, unsigned int, unsigned int), const char *payload, unsigned int payloadlen, unsigned int channel, std::string codec)
This function probably belongs in DMS somewhere.
Global RTP::Packet::sendH264 (void *socket, void callBack(void *, char *, unsigned int, unsigned int), const char *payload, unsigned int payloadlen, unsigned int channel)
This function probably belongs in DMS somewhere.
Global Socket::Connection::spool ()
Provide better mechanism to prevent overbuffering.
Global theora::header::datasize

put this back in pravate

put this back in pravate

put this back in pravate

Global Triggers::handleTrigger (const std::string &trigger, const std::string &value, const std::string &payload, int sync)

Handle errors!

Return true/false based on config here.

Return true/false based on config here.

Return true/false based on config here.

Return true/false based on config here.

Global TS::Packet::addStuffing ()
more stuffing required
Global TS::Stream::initializeMetadata (DTSC::Meta &meta, unsigned long tid=0)
Fix these 2 values
Global TS::Stream::parse (unsigned long tid)

Keep track of updates in PAT instead of keeping only the last PAT as a reference

Keep track of updates in PMT instead of keeping only the last PMT per program as a reference

Global TS::Stream::parsePES (unsigned long tid)
Determine keyframe-ness