winlin

for #738, add doc, moov box.

@@ -23,23 +23,54 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -23,23 +23,54 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 23
24 #include <srs_kernel_mp4.hpp> 24 #include <srs_kernel_mp4.hpp>
25 25
26 -SrsMp4Box::SrsMp4Box(uint32_t bt) 26 +SrsMp4Box::SrsMp4Box()
27 { 27 {
28 size = 0; 28 size = 0;
29 - type = bt; 29 + type = 0;
30 } 30 }
31 31
32 SrsMp4Box::~SrsMp4Box() 32 SrsMp4Box::~SrsMp4Box()
33 { 33 {
34 } 34 }
35 35
36 -SrsMp4FullBox::SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f) : SrsMp4Box(bt) 36 +SrsMp4FullBox::SrsMp4FullBox()
37 { 37 {
38 - version = v;  
39 - flags = f; 38 + version = 0;
  39 + flags = 0;
40 } 40 }
41 41
42 SrsMp4FullBox::~SrsMp4FullBox() 42 SrsMp4FullBox::~SrsMp4FullBox()
43 { 43 {
44 } 44 }
45 45
  46 +SrsMp4FileTypeBox::SrsMp4FileTypeBox()
  47 +{
  48 + type = 0x66747970; // 'ftyp'
  49 + nb_compatible_brands = 0;
  50 + compatible_brands = NULL;
  51 + major_brand = minor_version = 0;
  52 +}
  53 +
  54 +SrsMp4FileTypeBox::~SrsMp4FileTypeBox()
  55 +{
  56 + srs_freepa(compatible_brands);
  57 +}
  58 +
  59 +SrsMp4MovieBox::SrsMp4MovieBox()
  60 +{
  61 + type = 0x6d6f6f76; // 'moov'
  62 +}
  63 +
  64 +SrsMp4MovieBox::~SrsMp4MovieBox()
  65 +{
  66 +}
  67 +
  68 +SrsMp4MovieHeaderBox::SrsMp4MovieHeaderBox()
  69 +{
  70 + type = 0x6d766864; // 'mvhd'
  71 +}
  72 +
  73 +SrsMp4MovieHeaderBox::~SrsMp4MovieHeaderBox()
  74 +{
  75 +}
  76 +
@@ -42,7 +42,7 @@ public: @@ -42,7 +42,7 @@ public:
42 uint32_t size; 42 uint32_t size;
43 uint32_t type; 43 uint32_t type;
44 public: 44 public:
45 - SrsMp4Box(uint32_t bt); 45 + SrsMp4Box();
46 virtual ~SrsMp4Box(); 46 virtual ~SrsMp4Box();
47 }; 47 };
48 48
@@ -58,10 +58,51 @@ public: @@ -58,10 +58,51 @@ public:
58 // a map of flags 58 // a map of flags
59 uint32_t flags; 59 uint32_t flags;
60 public: 60 public:
61 - SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f); 61 + SrsMp4FullBox();
62 virtual ~SrsMp4FullBox(); 62 virtual ~SrsMp4FullBox();
63 }; 63 };
64 64
  65 +/**
  66 + * 4.3 File Type Box
  67 + * ISO_IEC_14496-12-base-format-2012.pdf, page 17
  68 + */
  69 +class SrsMp4FileTypeBox : public SrsMp4Box
  70 +{
  71 +public:
  72 + // a brand identifier
  73 + uint32_t major_brand;
  74 + // an informative integer for the minor version of the major brand
  75 + uint32_t minor_version;
  76 +private:
  77 + // a list, to the end of the box, of brands
  78 + int nb_compatible_brands;
  79 + uint32_t* compatible_brands;
  80 +public:
  81 + SrsMp4FileTypeBox();
  82 + virtual ~SrsMp4FileTypeBox();
  83 +};
  84 +
  85 +/**
  86 + * 8.2.1 Movie Box
  87 + * ISO_IEC_14496-12-base-format-2012.pdf, page 31
  88 + */
  89 +class SrsMp4MovieBox : public SrsMp4Box
  90 +{
  91 +public:
  92 + SrsMp4MovieBox();
  93 + virtual ~SrsMp4MovieBox();
  94 +};
  95 +
  96 +/**
  97 + * 8.2.2 Movie Header Box
  98 + * ISO_IEC_14496-12-base-format-2012.pdf, page 31
  99 + */
  100 +class SrsMp4MovieHeaderBox : public SrsMp4Box
  101 +{
  102 +public:
  103 + SrsMp4MovieHeaderBox();
  104 + virtual ~SrsMp4MovieHeaderBox();
  105 +};
65 106
66 #endif 107 #endif
67 108