MistServer  2.5.3-Pro-19-gf5e75b1 ( Generic_64)
mp4_generic.h
Go to the documentation of this file.
1 #pragma once
2 #include "mp4.h"
3 
4 namespace MP4 {
5  class MFHD: public Box {
6  public:
7  MFHD();
8  void setSequenceNumber(uint32_t newSequenceNumber);
9  uint32_t getSequenceNumber();
10  std::string toPrettyString(uint32_t indent = 0);
11  };
12  //MFHD Box
13 
14  class MOOF: public containerBox {
15  public:
16  MOOF();
17  };
18  //MOOF Box
19 
20  class TRAF: public Box {
21  public:
22  TRAF();
23  uint32_t getContentCount();
24  void setContent(Box & newContent, uint32_t no);
25  Box & getContent(uint32_t no);
26  std::string toPrettyString(uint32_t indent = 0);
27  };
28  //TRAF Box
29 
31  uint32_t sampleDuration;
32  uint32_t sampleSize;
33  uint32_t sampleFlags;
34  uint32_t sampleOffset;
35  };
36  enum trunflags {
37  trundataOffset = 0x00000001,
38  trunfirstSampleFlags = 0x00000004,
39  trunsampleDuration = 0x00000100,
40  trunsampleSize = 0x00000200,
41  trunsampleFlags = 0x00000400,
42  trunsampleOffsets = 0x00000800
43  };
44  enum sampleflags {
45  noIPicture = 0x01000000,
46  isIPicture = 0x02000000,
47  noDisposable = 0x00400000,
48  isDisposable = 0x00800000,
49  isRedundant = 0x00100000,
50  noRedundant = 0x00200000,
51  noKeySample = 0x00010000,
52  isKeySample = 0x00000000,
54  };
55  std::string prettySampleFlags(uint32_t flag);
56  class TRUN: public Box {
57  public:
58  TRUN();
59  void setFlags(uint32_t newFlags);
60  uint32_t getFlags();
61  void setDataOffset(uint32_t newOffset);
62  uint32_t getDataOffset();
63  void setFirstSampleFlags(uint32_t newSampleFlags);
64  uint32_t getFirstSampleFlags();
65  uint32_t getSampleInformationCount();
66  void setSampleInformation(trunSampleInformation newSample, uint32_t no);
67  trunSampleInformation getSampleInformation(uint32_t no);
68  std::string toPrettyString(uint32_t indent = 0);
69  };
70 
71  enum tfhdflags {
72  tfhdBaseOffset = 0x000001,
73  tfhdSampleDesc = 0x000002,
74  tfhdSampleDura = 0x000008,
75  tfhdSampleSize = 0x000010,
76  tfhdSampleFlag = 0x000020,
77  tfhdNoDuration = 0x010000,
78  };
79  class TFHD: public Box {
80  public:
81  TFHD();
82  void setFlags(uint32_t newFlags);
83  uint32_t getFlags();
84  void setTrackID(uint32_t newID);
85  uint32_t getTrackID();
86  void setBaseDataOffset(uint64_t newOffset);
87  uint64_t getBaseDataOffset();
88  void setSampleDescriptionIndex(uint32_t newIndex);
89  uint32_t getSampleDescriptionIndex();
90  void setDefaultSampleDuration(uint32_t newDuration);
91  uint32_t getDefaultSampleDuration();
92  void setDefaultSampleSize(uint32_t newSize);
93  uint32_t getDefaultSampleSize();
94  void setDefaultSampleFlags(uint32_t newFlags);
95  uint32_t getDefaultSampleFlags();
96  std::string toPrettyString(uint32_t indent = 0);
97  };
98 
99 
100  class AVCC: public Box {
101  public:
102  AVCC();
103  void setVersion(uint32_t newVersion);
104  uint32_t getVersion();
105  void setProfile(uint32_t newProfile);
106  uint32_t getProfile();
107  void setCompatibleProfiles(uint32_t newCompatibleProfiles);
108  uint32_t getCompatibleProfiles();
109  void setLevel(uint32_t newLevel);
110  uint32_t getLevel();
111  void setSPSNumber(uint32_t newSPSNumber);
112  uint32_t getSPSNumber();
113  void setSPS(std::string newSPS);
114  uint32_t getSPSLen();
115  char * getSPS();
116  void setPPSNumber(uint32_t newPPSNumber);
117  uint32_t getPPSNumber();
118  void setPPS(std::string newPPS);
119  uint32_t getPPSLen();
120  char * getPPS();
121  std::string asAnnexB();
122  void setPayload(std::string newPayload);
123  std::string toPrettyString(uint32_t indent = 0);
124  };
125 
126  struct HVCCArrayEntry {
129  std::deque<std::string> nalUnits;
130  };
131 
132  class HVCC: public Box {
133  public:
134  HVCC();
135  void setConfigurationVersion(char newVersion);
136  char getConfigurationVersion();
137  void setGeneralProfileSpace(char newGeneral);
138  char getGeneralProfileSpace();
139  void setGeneralTierFlag(char newGeneral);
140  char getGeneralTierFlag();
141  void setGeneralProfileIdc(char newGeneral);
142  char getGeneralProfileIdc();
143  void setGeneralProfileCompatibilityFlags(unsigned long newGeneral);
144  unsigned long getGeneralProfileCompatibilityFlags();
145  void setGeneralConstraintIndicatorFlags(unsigned long long newGeneral);
146  unsigned long long getGeneralConstraintIndicatorFlags();
147  void setGeneralLevelIdc(char newGeneral);
148  char getGeneralLevelIdc();
149  void setMinSpatialSegmentationIdc(short newIdc);
150  short getMinSpatialSegmentationIdc();
151  void setParallelismType(char newType);
152  char getParallelismType();
153  void setChromaFormat(char newFormat);
154  char getChromaFormat();
155  void setBitDepthLumaMinus8(char newBitDepthLumaMinus8);
156  char getBitDepthLumaMinus8();
157  void setBitDepthChromaMinus8(char newBitDepthChromaMinus8);
158  char getBitDepthChromaMinus8();
159  void setAverageFramerate(short newFramerate);
160  short getAverageFramerate();
161  void setConstantFramerate(char newFramerate);
162  char getConstantFramerate();
163  void setNumberOfTemporalLayers(char newNumber);
164  char getNumberOfTemporalLayers();
165  void setTemporalIdNested(char newNested);
166  char getTemporalIdNested();
167  void setLengthSizeMinus1(char newLengthSizeMinus1);
168  char getLengthSizeMinus1();
170  void setArrays(std::deque<HVCCArrayEntry> & arrays);
171  std::deque<HVCCArrayEntry> getArrays();
172  std::string asAnnexB();
173  void setPayload(std::string newPayload);
174  std::string toPrettyString(uint32_t indent = 0);
175  };
176 
177  class Descriptor{
178  public:
179  Descriptor();
180  Descriptor(const char* pointer, const unsigned long length, const bool master = false);
181  char getTag();
182  void setTag(char t);
183  unsigned long getDataSize();
184  unsigned long getFullSize();
185  void resize(unsigned long t);
186  char* getData();
187  std::string toPrettyString(uint32_t indent = 0);
188  protected:
189  unsigned long size;
190  char* data;
191  bool master;
192  };
193 
195  class DSDescriptor: public Descriptor{
196  public:
197  DSDescriptor (const char* pointer, const unsigned long length, const bool master = false);
198  std::string toPrettyString(uint32_t indent = 0);
199  std::string toString();
200  };
201 
203  class DCDescriptor: public Descriptor{
204  public:
205  DCDescriptor (const char* pointer, const unsigned long length, const bool master = false);
206  bool isAAC();
207  std::string getCodec();
208  DSDescriptor getSpecific();
209  std::string toPrettyString(uint32_t indent = 0);
210  };
211 
213  class ESDescriptor: public Descriptor{
214  public:
215  ESDescriptor (const char* pointer, const unsigned long length, const bool master = false);
216  DCDescriptor getDecoderConfig();
217  std::string toPrettyString(uint32_t indent = 0);
218  };
219 
220 
221 
223  class SLCDescriptor: public Descriptor{
224  };
225 
226  class ESDS: public fullBox {
227  public:
228  ESDS();
229  ESDS(std::string init);
230  ESDescriptor getESDescriptor();
231  bool isAAC();
232  std::string getCodec();
233  std::string getInitData();
234  std::string toPrettyString(uint32_t indent = 0);
235  };
236 
237  class DAC3: public Box {
238  public:
239  DAC3(unsigned int rate, unsigned int channels);
240  char getSampleRateCode();//2bits
241  void setSampleRateCode(char newVal);//2bits
242  char getBitStreamIdentification();//5bits
243  void setBitStreamIdentification(char newVal);//5bits
244  char getBitStreamMode();//3 bits
245  void setBitStreamMode(char newVal);//3 bits
246  char getAudioConfigMode();//3 bits
247  void setAudioConfigMode(char newVal);//3 bits
248  bool getLowFrequencyEffectsChannelOn();//1bit
249  void setLowFrequencyEffectsChannelOn(bool newVal);//1bit
250  char getFrameSizeCode();//6bits
251  void setFrameSizeCode(char newVal);//6bits
252  std::string toPrettyString(uint32_t indent = 0);
253  };
254 
255  class FTYP: public Box {
256  public:
257  FTYP(bool fillDefaults = true);
258  void setMajorBrand(const char * newMajorBrand);
259  std::string getMajorBrand();
260  void setMinorVersion(const char * newMinorVersion);
261  std::string getMinorVersion();
262  size_t getCompatibleBrandsCount();
263  void setCompatibleBrands(const char * newCompatibleBrand, size_t index);
264  std::string getCompatibleBrands(size_t index);
265  std::string toPrettyString(uint32_t indent = 0);
266  };
267 
268  class STYP: public FTYP {
269  public:
270  STYP(bool fillDefaults = true);
271  std::string toPrettyString(uint32_t indent = 0);
272  };
273 
274  class MOOV: public containerBox {
275  public:
276  MOOV();
277  };
278 
279  class MVEX: public containerBox {
280  public:
281  MVEX();
282  };
283 
284  class TREX: public fullBox {
285  public:
286  TREX(unsigned int trackId = 0);
287  void setTrackID(uint32_t newTrackID);
288  uint32_t getTrackID();
289  void setDefaultSampleDescriptionIndex(uint32_t newDefaultSampleDescriptionIndex);
290  uint32_t getDefaultSampleDescriptionIndex();
291  void setDefaultSampleDuration(uint32_t newDefaultSampleDuration);
292  uint32_t getDefaultSampleDuration();
293  void setDefaultSampleSize(uint32_t newDefaultSampleSize);
294  uint32_t getDefaultSampleSize();
295  void setDefaultSampleFlags(uint32_t newDefaultSampleFlags);
296  uint32_t getDefaultSampleFlags();
297  std::string toPrettyString(uint32_t indent = 0);
298  };
299 
300 
301  class MFRA: public containerBox {
302  public:
303  MFRA();
304  };
305 
306  class TRAK: public containerBox {
307  public:
308  TRAK();
309  };
310 
311  class MDIA: public containerBox {
312  public:
313  MDIA();
314  };
315 
316  class MINF: public containerBox {
317  public:
318  MINF();
319  };
320 
321  class DINF: public containerBox {
322  public:
323  DINF();
324  };
325 
326  class MFRO: public Box {
327  public:
328  MFRO();
329  void setSize(uint32_t newSize);
330  uint32_t getSize();
331  std::string toPrettyString(uint32_t indent = 0);
332  };
333 
334  class HDLR: public Box {
335  public:
336  HDLR(std::string & type, std::string name);
337  void setHandlerType(const char * newHandlerType);
338  std::string getHandlerType();
339  void setName(std::string newName);
340  std::string getName();
341  std::string toPrettyString(uint32_t indent = 0);
342  };
343 
344  class VMHD: public fullBox {
345  public:
346  VMHD();
347  void setGraphicsMode(uint16_t newGraphicsMode);
348  uint16_t getGraphicsMode();
349  uint32_t getOpColorCount();
350  void setOpColor(uint16_t newOpColor, size_t index);
351  uint16_t getOpColor(size_t index);
352  std::string toPrettyString(uint32_t indent = 0);
353  };
354 
355  class SMHD: public fullBox {
356  public:
357  SMHD();
358  void setBalance(int16_t newBalance);
359  int16_t getBalance();
360  std::string toPrettyString(uint32_t indent = 0);
361  };
362 
363  class HMHD: public fullBox {
364  public:
365  HMHD();
366  void setMaxPDUSize(uint16_t newMaxPDUSize);
367  uint16_t getMaxPDUSize();
368  void setAvgPDUSize(uint16_t newAvgPDUSize);
369  uint16_t getAvgPDUSize();
370  void setMaxBitRate(uint32_t newMaxBitRate);
371  uint32_t getMaxBitRate();
372  void setAvgBitRate(uint32_t newAvgBitRate);
373  uint32_t getAvgBitRate();
374  std::string toPrettyString(uint32_t indent = 0);
375  };
376 
377  class NMHD: public fullBox {
378  public:
379  NMHD();
380  std::string toPrettyString(uint32_t indent = 0);
381  };
382 
383  class MEHD: public fullBox {
384  public:
385  MEHD();
386  void setFragmentDuration(uint64_t newFragmentDuration);
387  uint64_t getFragmentDuration();
388  std::string toPrettyString(uint32_t indent = 0);
389  };
390 
391  class STBL: public containerBox {
392  public:
393  STBL();
394  };
395 
396  class URL: public fullBox {
397  public:
398  URL();
399  void setLocation(std::string newLocation);
400  std::string getLocation();
401  std::string toPrettyString(uint32_t indent = 0);
402  };
403 
404  class URN: public fullBox {
405  public:
406  URN();
407  void setName(std::string newName);
408  std::string getName();
409  void setLocation(std::string newLocation);
410  std::string getLocation();
411  std::string toPrettyString(uint32_t indent = 0);
412  };
413 
414  class DREF: public fullBox {
415  public:
416  DREF();
417  uint32_t getEntryCount();
418  void setDataEntry(fullBox & newDataEntry, size_t index);
419  Box & getDataEntry(size_t index);
420  std::string toPrettyString(uint32_t indent = 0);
421  };
422 
423  class MVHD: public fullBox {
424  public:
425  MVHD(long long unsigned int duration);
426  void setCreationTime(uint64_t newCreationTime);
427  uint64_t getCreationTime();
428  void setModificationTime(uint64_t newModificationTime);
429  uint64_t getModificationTime();
430  void setTimeScale(uint32_t newTimeScale);
431  uint32_t getTimeScale();
432  void setDuration(uint64_t newDuration);
433  uint64_t getDuration();
434  void setRate(uint32_t newRate);
435  uint32_t getRate();
436  void setVolume(uint16_t newVolume);
437  uint16_t getVolume();
438  uint32_t getMatrixCount();
439  void setMatrix(int32_t newMatrix, size_t index);
440  int32_t getMatrix(size_t index);
441  void setTrackID(uint32_t newTrackID);
442  uint32_t getTrackID();
443  std::string toPrettyString(uint32_t indent = 0);
444  };
445 
446  struct TFRAEntry {
447  uint64_t time;
448  uint64_t moofOffset;
449  uint32_t trafNumber;
450  uint32_t trunNumber;
451  uint32_t sampleNumber;
452  };
453 
454  class TFRA: public fullBox {
455  public:
456  TFRA();
457  void setTrackID(uint32_t newTrackID);
458  uint32_t getTrackID();
459  void setLengthSizeOfTrafNum(char newVal);
460  char getLengthSizeOfTrafNum();
461  void setLengthSizeOfTrunNum(char newVal);
462  char getLengthSizeOfTrunNum();
463  void setLengthSizeOfSampleNum(char newVal);
464  char getLengthSizeOfSampleNum();
465  void setNumberOfEntry(uint32_t newNumberOfEntry);
466  uint32_t getNumberOfEntry();
467  void setTFRAEntry(TFRAEntry newTFRAEntry, uint32_t no);
468  TFRAEntry & getTFRAEntry(uint32_t no);
469  uint32_t getTFRAEntrySize();
470  std::string toPrettyString(uint32_t indent = 0);
471  };
472 
473  class TKHD: public fullBox {
474  public:
475  TKHD(uint32_t trackId, uint64_t duration, uint32_t width, uint32_t height);
476  TKHD(DTSC::Track & track, bool fragmented);
477 
478  void setCreationTime(uint64_t newCreationTime);
479  uint64_t getCreationTime();
480  void setModificationTime(uint64_t newModificationTime);
481  uint64_t getModificationTime();
482  void setTrackID(uint32_t newTrackID);
483  uint32_t getTrackID();
484  void setDuration(uint64_t newDuration);
485  uint64_t getDuration();
486 
487  void setLayer(uint16_t newLayer);
488  uint16_t getLayer();
489  void setAlternateGroup(uint16_t newAlternateGroup);
490  uint16_t getAlternateGroup();
491 
492  void setVolume(uint16_t newVolume);
493  uint16_t getVolume();
494  uint32_t getMatrixCount();
495  void setMatrix(int32_t newMatrix, size_t index);
496  int32_t getMatrix(size_t index);
497 
498  void setWidth(double newWidth);
499  double getWidth();
500  void setHeight(double newHeight);
501  double getHeight();
502  std::string toPrettyString(uint32_t indent = 0);
503  protected:
504  void initialize();
505  };
506 
507  class MDHD: public fullBox {
508  public:
509  MDHD(uint64_t duration);
510  void setCreationTime(uint64_t newCreationTime);
511  uint64_t getCreationTime();
512  void setModificationTime(uint64_t newModificationTime);
513  uint64_t getModificationTime();
514  void setTimeScale(uint32_t newTimeScale);
515  uint32_t getTimeScale();
516  void setDuration(uint64_t newDuration);
517  uint64_t getDuration();
519  void setLanguage(uint16_t newLanguage);
520  uint16_t getLanguage();
521  std::string toPrettyString(uint32_t indent = 0);
522  };
523 
524  struct STTSEntry {
525  uint32_t sampleCount;
526  uint32_t sampleDelta;
527  };
528 
529  class STTS: public fullBox {
530  public:
531  STTS(char v = 1, uint32_t f = 0);
532  void setEntryCount(uint32_t newEntryCount);
533  uint32_t getEntryCount();
534  void setSTTSEntry(STTSEntry newSTTSEntry, uint32_t no);
535  STTSEntry getSTTSEntry(uint32_t no);
536  std::string toPrettyString(uint32_t indent = 0);
537  };
538 
539  struct CTTSEntry {
540  uint32_t sampleCount;
541  uint32_t sampleOffset;
542  };
543 
544  class CTTS: public fullBox {
545  public:
546  CTTS();
547  void setEntryCount(uint32_t newEntryCount);
548  uint32_t getEntryCount();
549  void setCTTSEntry(CTTSEntry newCTTSEntry, uint32_t no);
550  CTTSEntry getCTTSEntry(uint32_t no);
551  std::string toPrettyString(uint32_t indent = 0);
552  };
553 
554  class STSCEntry {
555  public:
556  STSCEntry(unsigned int _first = 0, unsigned int _count = 0, unsigned int _index = 0);
557  uint32_t firstChunk;
558  uint32_t samplesPerChunk;
560  };
561 
562  class STSC: public fullBox {
563  public:
564  STSC(char v = 1, uint32_t f = 0);
565  void setEntryCount(uint32_t newEntryCount);
566  uint32_t getEntryCount();
567  void setSTSCEntry(STSCEntry newSTSCEntry, uint32_t no);
568  STSCEntry getSTSCEntry(uint32_t no);
569  std::string toPrettyString(uint32_t indent = 0);
570  };
571 
572  class STCO: public fullBox {
573  public:
574  STCO(char v = 1, uint32_t f = 0);
575  void setEntryCount(uint32_t newEntryCount);
576  uint32_t getEntryCount();
577  void setChunkOffset(uint32_t newChunkOffset, uint32_t no);
578  uint32_t getChunkOffset(uint32_t no);
579  std::string toPrettyString(uint32_t indent = 0);
580  };
581 
582  class CO64: public fullBox {
583  public:
584  CO64(char v = 1, uint32_t f = 0);
585  void setEntryCount(uint32_t newEntryCount);
586  uint32_t getEntryCount();
587  void setChunkOffset(uint64_t newChunkOffset, uint32_t no);
588  uint64_t getChunkOffset(uint32_t no);
589  std::string toPrettyString(uint32_t indent = 0);
590  };
591 
592  class STSZ: public fullBox {
593  public:
594  STSZ(char v = 1, uint32_t f = 0);
595  void setSampleSize(uint32_t newSampleSize);
596  uint32_t getSampleSize();
597  void setSampleCount(uint32_t newSampleCount);
598  uint32_t getSampleCount();
599  void setEntrySize(uint32_t newEntrySize, uint32_t no);
600  uint32_t getEntrySize(uint32_t no);
601  std::string toPrettyString(uint32_t indent = 0);
602  };
603 
604  class SampleEntry: public Box {
605  public:
606  SampleEntry();
607  void setDataReferenceIndex(uint16_t newDataReferenceIndex);
608  uint16_t getDataReferenceIndex();
609  std::string toPrettySampleString(uint32_t index);
610  };
611 
612  class CLAP: public Box { //CleanApertureBox
613  public:
614  CLAP();
615  void setCleanApertureWidthN(uint32_t newVal);
616  uint32_t getCleanApertureWidthN();
617  void setCleanApertureWidthD(uint32_t newVal);
618  uint32_t getCleanApertureWidthD();
619  void setCleanApertureHeightN(uint32_t newVal);
620  uint32_t getCleanApertureHeightN();
621  void setCleanApertureHeightD(uint32_t newVal);
622  uint32_t getCleanApertureHeightD();
623  void setHorizOffN(uint32_t newVal);
624  uint32_t getHorizOffN();
625  void setHorizOffD(uint32_t newVal);
626  uint32_t getHorizOffD();
627  void setVertOffN(uint32_t newVal);
628  uint32_t getVertOffN();
629  void setVertOffD(uint32_t newVal);
630  uint32_t getVertOffD();
631  std::string toPrettyString(uint32_t indent = 0);
632  };
633 
634  class PASP: public Box { //PixelAspectRatioBox
635  public:
636  PASP();
637  void setHSpacing(uint32_t newVal);
638  uint32_t getHSpacing();
639  void setVSpacing(uint32_t newVal);
640  uint32_t getVSpacing();
641  std::string toPrettyString(uint32_t indent = 0);
642  };
643 
646  public:
649  void initialize();
650  void setCodec(const char * newCodec);
651  void setWidth(uint16_t newWidth);
652  uint16_t getWidth();
653  void setHeight(uint16_t newHeight);
654  uint16_t getHeight();
655  void setHorizResolution(uint32_t newHorizResolution);
656  uint32_t getHorizResolution();
657  void setVertResolution(uint32_t newVertResolution);
658  uint32_t getVertResolution();
659  void setFrameCount(uint16_t newFrameCount);
660  uint16_t getFrameCount();
661  void setCompressorName(std::string newCompressorName);
662  std::string getCompressorName();
663  void setDepth(uint16_t newDepth);
664  uint16_t getDepth();
665  Box & getCLAP();
666  void setCLAP(Box & clap);
667  Box & getPASP();
668  void setPASP(Box & pasp);
669  std::string toPrettyVisualString(uint32_t index = 0, std::string = "");
670  };
671 
673  public:
676  AudioSampleEntry(DTSC::Track & track);
677  void initialize();
678  void setCodec(const char * newCodec);
679  void setChannelCount(uint16_t newChannelCount);
680  uint16_t getChannelCount();
681  void setSampleSize(uint16_t newSampleSize);
682  uint16_t getSampleSize();
683  void setPreDefined(uint16_t newPreDefined);
684  uint16_t getPreDefined();
685  void setSampleRate(uint32_t newSampleRate);
686  uint16_t toAACInit();
687  uint32_t getSampleRate();
688  void setCodecBox(Box & newBox);
689  Box & getCodecBox();
690  Box & getSINFBox(); /*LTS*/
691  std::string toPrettyAudioString(uint32_t indent = 0, std::string name = "");
692  };
693 
694  class MP4A: public AudioSampleEntry {
695  public:
696  MP4A();
697  std::string toPrettyString(uint32_t indent = 0);
698  };
699 
700  class AAC: public AudioSampleEntry {
701  public:
702  AAC();
703  std::string toPrettyString(uint32_t indent = 0);
704  };
705 
706  class HEV1: public VisualSampleEntry {
707  public:
708  HEV1();
709  std::string toPrettyString(uint32_t indent = 0);
710  };
711 
712  class AVC1: public VisualSampleEntry {
713  public:
714  AVC1();
715  std::string toPrettyString(uint32_t indent = 0);
716  };
717 
718  class H264: public VisualSampleEntry {
719  public:
720  H264();
721  std::string toPrettyString(uint32_t indent = 0);
722  };
723 
724  class FIEL: public Box {
725  public:
726  FIEL();
727  void setTotal(char newTotal);
728  char getTotal();
729  void setOrder(char newOrder);
730  char getOrder();
731  std::string toPrettyString(uint32_t indent = 0);
732  };
733 
734  class STSD: public fullBox {
735  public:
736  STSD(char v = 1, uint32_t f = 0);
737  void setEntryCount(uint32_t newEntryCount);
738  uint32_t getEntryCount();
739  void setEntry(Box & newContent, uint32_t no);
740  Box & getEntry(uint32_t no);
741  std::string toPrettyString(uint32_t indent = 0);
742  };
743 
744  class GMHD: public containerBox {
745  public:
746  GMHD();
747  };
748 
749  class TREF: public containerBox {
750  public:
751  TREF();
752  };
753 
754  class EDTS: public containerBox {
755  public:
756  EDTS();
757  };
758 
759  class UDTA: public containerBox {
760  public:
761  UDTA();
762  };
763 
764  class STSS: public fullBox {
765  public:
766  STSS(char v = 1, uint32_t f = 0);
767  void setEntryCount(uint32_t newVal);
768  uint32_t getEntryCount();
769  void setSampleNumber(uint32_t newVal, uint32_t index);
770  uint32_t getSampleNumber(uint32_t index);
771  std::string toPrettyString(uint32_t indent = 0);
772  };
773 
774  class META: public containerFullBox {
775  public:
776  META();
777  std::string toPrettyString(uint32_t indent = 0);
778  };
779 
780  class ELST: public fullBox {
781  public:
782  ELST();
783  void setCount(uint32_t newVal);
784  uint32_t getCount();
785  void setSegmentDuration(uint64_t newVal);
786  uint64_t getSegmentDuration();
787  void setMediaTime(uint64_t newVal);
788  uint64_t getMediaTime();
789  void setMediaRateInteger(uint16_t newVal);
790  uint16_t getMediaRateInteger();
791  void setMediaRateFraction(uint16_t newVal);
792  uint16_t getMediaRateFraction();
793  std::string toPrettyString(uint32_t indent = 0);
794  };
795 }
796 
uint64_t time
Definition: mp4_generic.h:447
Definition: mp4_generic.h:14
Definition: mp4_generic.h:446
Definition: mp4_generic.h:524
Definition: ts_stream.h:12
Definition: mp4_generic.h:539
std::string toPrettyString(uint32_t indent=0)
Definition: mp4_generic.cpp:18
Definition: mp4_generic.h:334
Definition: mp4_generic.h:50
Definition: ts_stream.h:13
Definition: mp4_generic.h:37
Definition: mp4_generic.h:700
uint32_t sampleFlags
Definition: mp4_generic.h:33
uint32_t sampleOffset
Definition: mp4_generic.h:34
Definition: mp4_generic.h:672
Definition: mp4_generic.h:473
Definition: mp4_generic.h:79
uint32_t sampleCount
Definition: mp4_generic.h:540
Class for storage of track data.
Definition: dtsc.h:285
Contains all MP4 format related code.
Definition: mp4.cpp:15
std::string prettySampleFlags(uint32_t flag)
Definition: mp4_generic.cpp:288
uint32_t sampleSize
Definition: mp4_generic.h:32
char * data
Pointer to data in memory.
Definition: mp4_generic.h:190
Definition: mp4_generic.h:396
Definition: mp4_generic.h:712
Definition: mp4_generic.h:268
Definition: mp4_generic.h:38
Definition: mp4_generic.h:694
Definition: mp4_generic.h:774
Definition: mp4_generic.h:321
std::deque< std::string > nalUnits
Definition: mp4_generic.h:129
Definition: mp4_generic.h:344
Definition: mp4_generic.h:48
Definition: mp4_generic.h:644
Definition: mp4_generic.h:132
Implements ISO 14496-1 DecoderConfigDescrTag.
Definition: mp4_generic.h:203
Definition: mp4_generic.h:391
Definition: mp4.h:88
Definition: mp4_generic.h:40
Definition: mp4_generic.h:529
Definition: mp4_generic.h:30
void setSequenceNumber(uint32_t newSequenceNumber)
Definition: mp4_generic.cpp:10
uint64_t moofOffset
Definition: mp4_generic.h:448
Definition: mp4_generic.h:39
Definition: mp4_generic.h:604
uint32_t sampleNumber
Definition: mp4_generic.h:451
Stream Metadata.
Definition: dtsc.h:28
char arrayCompleteness
Definition: mp4_generic.h:127
uint32_t sampleDescriptionIndex
Definition: mp4_generic.h:559
Definition: mp4_generic.h:780
uint32_t samplesPerChunk
Definition: mp4_generic.h:558
Definition: mp4_generic.h:592
uint32_t sampleCount
Definition: mp4_generic.h:525
Definition: mp4_generic.h:52
uint32_t sampleDelta
Definition: mp4_generic.h:526
Definition: mp4_generic.h:759
uint32_t sampleOffset
Definition: mp4_generic.h:541
Definition: mp4.h:69
Definition: mp4_generic.h:572
Definition: mp4_generic.h:414
Definition: mp4_generic.h:279
Definition: mp4_generic.h:53
uint32_t getSequenceNumber()
Definition: mp4_generic.cpp:14
Definition: mp4_generic.h:706
Definition: mp4_generic.h:744
Definition: mp4_generic.h:255
Definition: mp4_generic.h:76
Definition: mp4_generic.h:75
Definition: mp4.h:22
Definition: mp4_generic.h:316
Definition: mp4_generic.h:74
Definition: mp4.h:79
Definition: mp4_generic.h:73
Definition: mp4_generic.h:363
Definition: mp4_generic.h:404
Implements ISO 14496-1 DecSpecificInfoTag.
Definition: mp4_generic.h:195
uint32_t firstChunk
Definition: mp4_generic.h:557
Definition: mp4_generic.h:126
Definition: mp4_generic.h:20
char nalUnitType
Definition: mp4_generic.h:128
Definition: mp4_generic.h:237
Definition: mp4_generic.h:226
Canvas prototype resize
Definition: jquery.flot.min.js:1
tfhdflags
Definition: mp4_generic.h:71
Definition: mp4_generic.h:41
Implements ISO 14496-1 SLConfigDescrTag.
Definition: mp4_generic.h:223
Definition: mp4_generic.h:754
Definition: mp4_generic.h:326
Definition: mp4_generic.h:724
uint32_t sampleDuration
Definition: mp4_generic.h:31
Definition: mp4_generic.h:77
Definition: mp4_generic.h:301
Definition: mp4_generic.h:544
Definition: mp4_generic.h:284
Definition: mp4_generic.h:554
Definition: mp4_generic.h:51
Definition: mp4_generic.h:46
Definition: mp4_generic.h:764
uint32_t trunNumber
Definition: mp4_generic.h:450
function init(plot)
Definition: jquery.flot.time.min.js:1
Definition: mp4_generic.h:562
Definition: mp4_generic.h:582
Definition: mp4_generic.h:274
Definition: mp4_generic.h:718
Definition: mp4_generic.h:612
bool master
Definition: mp4_generic.h:191
Definition: mp4_generic.h:72
Definition: mp4_generic.h:56
Definition: mp4_generic.h:47
Definition: mp4_generic.h:423
Definition: mp4_generic.h:306
MFHD()
Definition: mp4_generic.cpp:5
Definition: mp4_generic.h:5
Definition: mp4_generic.h:383
Definition: mp4_generic.h:507
Definition: mp4_generic.h:454
trunflags
Definition: mp4_generic.h:36
Definition: mp4_generic.h:311
Implements ISO 14496-1 ES_DescrTag.
Definition: mp4_generic.h:213
Definition: mp4_generic.h:734
Definition: mp4_generic.h:634
Definition: mp4_generic.h:42
Definition: mp4_generic.h:355
uint32_t trafNumber
Definition: mp4_generic.h:449
Definition: mp4_generic.h:177
Definition: mp4_generic.h:49
Definition: mp4_generic.h:100
Definition: mp4_generic.h:377
sampleflags
Definition: mp4_generic.h:44
Definition: mp4_generic.h:45
Definition: mp4_generic.h:749
unsigned long size
Length of data.
Definition: mp4_generic.h:189