winlin

for #738, add box and fullbox.

@@ -156,7 +156,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR}) @@ -156,7 +156,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR})
156 MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_buffer" 156 MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_buffer"
157 "srs_kernel_utility" "srs_kernel_flv" "srs_kernel_codec" "srs_kernel_file" 157 "srs_kernel_utility" "srs_kernel_flv" "srs_kernel_codec" "srs_kernel_file"
158 "srs_kernel_consts" "srs_kernel_aac" "srs_kernel_mp3" "srs_kernel_ts" 158 "srs_kernel_consts" "srs_kernel_aac" "srs_kernel_mp3" "srs_kernel_ts"
159 - "srs_kernel_stream" "srs_kernel_balance") 159 + "srs_kernel_stream" "srs_kernel_balance" "srs_kernel_mp4")
160 KERNEL_INCS="src/kernel"; MODULE_DIR=${KERNEL_INCS} . auto/modules.sh 160 KERNEL_INCS="src/kernel"; MODULE_DIR=${KERNEL_INCS} . auto/modules.sh
161 KERNEL_OBJS="${MODULE_OBJS[@]}" 161 KERNEL_OBJS="${MODULE_OBJS[@]}"
162 # 162 #
@@ -167,7 +167,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR} ${LibSSLRoot}) @@ -167,7 +167,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR} ${LibSSLRoot})
167 MODULE_FILES=("srs_protocol_amf0" "srs_protocol_io" "srs_rtmp_stack" 167 MODULE_FILES=("srs_protocol_amf0" "srs_protocol_io" "srs_rtmp_stack"
168 "srs_rtmp_handshake" "srs_protocol_utility" "srs_rtmp_msg_array" "srs_protocol_stream" 168 "srs_rtmp_handshake" "srs_protocol_utility" "srs_rtmp_msg_array" "srs_protocol_stream"
169 "srs_raw_avc" "srs_rtsp_stack" "srs_http_stack" "srs_protocol_kbps" "srs_protocol_json" 169 "srs_raw_avc" "srs_rtsp_stack" "srs_http_stack" "srs_protocol_kbps" "srs_protocol_json"
170 - "srs_kafka_stack" "srs_kernel_mp4") 170 + "srs_kafka_stack")
171 PROTOCOL_INCS="src/protocol"; MODULE_DIR=${PROTOCOL_INCS} . auto/modules.sh 171 PROTOCOL_INCS="src/protocol"; MODULE_DIR=${PROTOCOL_INCS} . auto/modules.sh
172 PROTOCOL_OBJS="${MODULE_OBJS[@]}" 172 PROTOCOL_OBJS="${MODULE_OBJS[@]}"
173 # 173 #
@@ -23,3 +23,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -23,3 +23,23 @@ 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)
  27 +{
  28 + size = 0;
  29 + type = bt;
  30 +}
  31 +
  32 +SrsMp4Box::~SrsMp4Box()
  33 +{
  34 +}
  35 +
  36 +SrsMp4FullBox::SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f) : SrsMp4Box(bt)
  37 +{
  38 + version = v;
  39 + flags = f;
  40 +}
  41 +
  42 +SrsMp4FullBox::~SrsMp4FullBox()
  43 +{
  44 +}
  45 +
@@ -29,5 +29,39 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -29,5 +29,39 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 */ 29 */
30 #include <srs_core.hpp> 30 #include <srs_core.hpp>
31 31
  32 +/**
  33 + * 4.2 Object Structure
  34 + * ISO_IEC_14496-12-base-format-2012.pdf, page 16
  35 + */
  36 +class SrsMp4Box
  37 +{
  38 +public:
  39 + // if size is 1 then the actual size is in the field largesize;
  40 + // if size is 0, then this box is the last one in the file, and its contents
  41 + // extend to the end of the file (normally only used for a Media Data Box)
  42 + uint32_t size;
  43 + uint32_t type;
  44 +public:
  45 + SrsMp4Box(uint32_t bt);
  46 + virtual ~SrsMp4Box();
  47 +};
  48 +
  49 +/**
  50 + * 4.2 Object Structure
  51 + * ISO_IEC_14496-12-base-format-2012.pdf, page 16
  52 + */
  53 +class SrsMp4FullBox : public SrsMp4Box
  54 +{
  55 +public:
  56 + // an integer that specifies the version of this format of the box.
  57 + uint8_t version;
  58 + // a map of flags
  59 + uint32_t flags;
  60 +public:
  61 + SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f);
  62 + virtual ~SrsMp4FullBox();
  63 +};
  64 +
  65 +
32 #endif 66 #endif
33 67