V4L2 camera support, raw pixel video support, added MistProcAV, improved MistProcFFMPEG

Co-authored-by: Thulinma <jaron@vietors.com>
Co-authored-by: Balder <balder.vietor@ddvtech.com>
This commit is contained in:
Marco van Dijk 2023-11-22 16:33:45 +01:00 committed by Thulinma
parent c990f49b0e
commit f009856b64
35 changed files with 3934 additions and 633 deletions

View file

@ -8,13 +8,11 @@
#include "socket.h"
#include "timing.h"
#include "util.h"
#include <deque>
#include <iostream>
#include <set>
#include <stdint.h> //for uint64_t
#include <stdio.h> //for FILE
#include <string>
#include <vector>
#define DTSC_INT 0x01
#define DTSC_STR 0x02
@ -195,10 +193,12 @@ namespace DTSC{
uint32_t getIndexForTime(uint64_t timestamp);
void applyLimiter(uint64_t _min, uint64_t _max, DTSC::Parts _p);
void applyLimiter(uint64_t _min, uint64_t _max);
private:
bool isConst;
bool isLimited;
bool isFrames;
size_t limMin;
size_t limMax;
//Overrides for max key
@ -243,13 +243,12 @@ namespace DTSC{
class Track{
public:
Util::RelAccX track;
Util::RelAccX parts;
Util::RelAccX keys;
Util::RelAccX fragments;
Util::RelAccX pages;
Util::RelAccX track;
Util::RelAccX frames;
// Internal buffers so we don't always need to search for everything
Util::RelAccXFieldData trackIdField;
@ -286,6 +285,9 @@ namespace DTSC{
Util::RelAccXFieldData fragmentKeysField;
Util::RelAccXFieldData fragmentFirstKeyField;
Util::RelAccXFieldData fragmentSizeField;
Util::RelAccXFieldData framesTimeField;
Util::RelAccXFieldData framesDataField;
};
@ -334,11 +336,12 @@ namespace DTSC{
size_t partCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT);
size_t addTrack(size_t fragCount = DEFAULT_FRAGMENT_COUNT, size_t keyCount = DEFAULT_KEY_COUNT,
size_t partCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT,
bool setValid = true);
bool setValid = true, size_t frameSize = 0);
void resizeTrack(size_t source, size_t fragCount = DEFAULT_FRAGMENT_COUNT, size_t keyCount = DEFAULT_KEY_COUNT,
size_t partCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT, const char * reason = "");
size_t partCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT, const char * reason = "",
size_t frameSize = 0);
void initializeTrack(Track &t, size_t fragCount = DEFAULT_FRAGMENT_COUNT, size_t keyCount = DEFAULT_KEY_COUNT,
size_t parCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT);
size_t parCount = DEFAULT_PART_COUNT, size_t pageCount = DEFAULT_PAGE_COUNT, size_t frameSize = 0);
void merge(const DTSC::Meta &M, bool deleteTracks = true, bool copyData = true);
@ -422,6 +425,9 @@ namespace DTSC{
void claimTrack(size_t trackIdx);
bool isClaimed(size_t trackIdx) const;
void abandonTrack(size_t trackIdx);
bool hasEmbeddedFrames(size_t trackIdx) const;
bool getEmbeddedData(size_t trackIdx, size_t num, char * & dataPtr, size_t & dataLen) const;
bool getEmbeddedTime(size_t trackIdx, size_t num, uint64_t & time) const;
/*LTS-START*/
void setSourceTrack(size_t trackIdx, size_t sourceTrack);
@ -499,6 +505,8 @@ namespace DTSC{
const Keys getKeys(size_t trackIdx) const;
void storeFrame(size_t trackIdx, uint64_t time, const char * data, size_t dataSize);
std::string toPrettyString() const;
void remap(const std::string &_streamName = "");