Fixes and improvements to various MP4 library functions, by Oswald de Bruin.

This commit is contained in:
Thulinma 2015-09-03 21:36:09 +02:00
parent 17f3a37454
commit 97b8adf41e
2 changed files with 305 additions and 81 deletions

View file

@ -182,9 +182,27 @@ namespace MP4 {
std::string toPrettyString(uint32_t indent = 0);
};
class DAC3: public Box {
public:
DAC3(unsigned int rate, unsigned int channels);
char getSampleRateCode();//2bits
void setSampleRateCode(char newVal);//2bits
char getBitStreamIdentification();//5bits
void setBitStreamIdentification(char newVal);//5bits
char getBitStreamMode();//3 bits
void setBitStreamMode(char newVal);//3 bits
char getAudioConfigMode();//3 bits
void setAudioConfigMode(char newVal);//3 bits
bool getLowFrequencyEffectsChannelOn();//1bit
void setLowFrequencyEffectsChannelOn(bool newVal);//1bit
char getFrameSizeCode();//6bits
void setFrameSizeCode(char newVal);//6bits
std::string toPrettyString(uint32_t indent = 0);
};
class FTYP: public Box {
public:
FTYP();
FTYP(bool fillDefaults = true);
void setMajorBrand(const char * newMajorBrand);
std::string getMajorBrand();
void setMinorVersion(const char * newMinorVersion);
@ -195,6 +213,12 @@ namespace MP4 {
std::string toPrettyString(uint32_t indent = 0);
};
class STYP: public FTYP {
public:
STYP(bool fillDefaults = true);
std::string toPrettyString(uint32_t indent = 0);
};
class MOOV: public containerBox {
public:
MOOV();
@ -205,9 +229,9 @@ namespace MP4 {
MVEX();
};
class TREX: public Box {
class TREX: public fullBox {
public:
TREX();
TREX(unsigned int trackId = 0);
void setTrackID(uint32_t newTrackID);
uint32_t getTrackID();
void setDefaultSampleDescriptionIndex(uint32_t newDefaultSampleDescriptionIndex);
@ -397,6 +421,8 @@ namespace MP4 {
class TKHD: public fullBox {
public:
TKHD(uint32_t trackId, uint64_t duration, uint32_t width, uint32_t height);
TKHD(DTSC::Track & track, bool fragmented);
void setCreationTime(uint64_t newCreationTime);
uint64_t getCreationTime();
void setModificationTime(uint64_t newModificationTime);
@ -422,6 +448,8 @@ namespace MP4 {
void setHeight(uint32_t newHeight);
uint32_t getHeight();
std::string toPrettyString(uint32_t indent = 0);
protected:
void initialize();
};
class MDHD: public fullBox {
@ -471,10 +499,12 @@ namespace MP4 {
std::string toPrettyString(uint32_t indent = 0);
};
struct STSCEntry {
uint32_t firstChunk;
uint32_t samplesPerChunk;
uint32_t sampleDescriptionIndex;
class STSCEntry {
public:
STSCEntry(unsigned int _first = 0, unsigned int _count = 0, unsigned int _index = 0);
uint32_t firstChunk;
uint32_t samplesPerChunk;
uint32_t sampleDescriptionIndex;
};
class STSC: public fullBox {
@ -563,6 +593,8 @@ namespace MP4 {
///\todo set default values
public:
VisualSampleEntry();
VisualSampleEntry(DTSC::Track & track);
void initialize();
void setCodec(const char * newCodec);
void setWidth(uint16_t newWidth);
uint16_t getWidth();
@ -581,6 +613,7 @@ namespace MP4 {
Box & getCLAP();
void setCLAP(Box & clap);
Box & getPASP();
void setPASP(Box & pasp);
std::string toPrettyVisualString(uint32_t index = 0, std::string = "");
};
@ -588,6 +621,8 @@ namespace MP4 {
public:
///\todo set default values
AudioSampleEntry();
AudioSampleEntry(DTSC::Track & track);
void initialize();
void setCodec(const char * newCodec);
void setChannelCount(uint16_t newChannelCount);
uint16_t getChannelCount();
@ -666,6 +701,8 @@ namespace MP4 {
class ELST: public fullBox {
public:
ELST();
void setCount(uint32_t newVal);
uint32_t getCount();
void setSegmentDuration(uint64_t newVal);
uint64_t getSegmentDuration();
void setMediaTime(uint64_t newVal);