From 6b6ac9a054cdb1d94399e9b9efcfaccbf8c777c3 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 27 Jan 2017 20:54:05 +0800 Subject: [PATCH] for #738, add box and fullbox. --- trunk/configure | 4 ++-- trunk/src/kernel/srs_kernel_mp4.cpp | 20 +++++++++++++++++ trunk/src/kernel/srs_kernel_mp4.hpp | 34 +++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/trunk/configure b/trunk/configure index c3663bade..b59c33ca9 100755 --- a/trunk/configure +++ b/trunk/configure @@ -156,7 +156,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR}) MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_buffer" "srs_kernel_utility" "srs_kernel_flv" "srs_kernel_codec" "srs_kernel_file" "srs_kernel_consts" "srs_kernel_aac" "srs_kernel_mp3" "srs_kernel_ts" - "srs_kernel_stream" "srs_kernel_balance") + "srs_kernel_stream" "srs_kernel_balance" "srs_kernel_mp4") KERNEL_INCS="src/kernel"; MODULE_DIR=${KERNEL_INCS} . auto/modules.sh KERNEL_OBJS="${MODULE_OBJS[@]}" # @@ -167,7 +167,7 @@ ModuleLibIncs=(${SRS_OBJS_DIR} ${LibSSLRoot}) MODULE_FILES=("srs_protocol_amf0" "srs_protocol_io" "srs_rtmp_stack" "srs_rtmp_handshake" "srs_protocol_utility" "srs_rtmp_msg_array" "srs_protocol_stream" "srs_raw_avc" "srs_rtsp_stack" "srs_http_stack" "srs_protocol_kbps" "srs_protocol_json" - "srs_kafka_stack" "srs_kernel_mp4") + "srs_kafka_stack") PROTOCOL_INCS="src/protocol"; MODULE_DIR=${PROTOCOL_INCS} . auto/modules.sh PROTOCOL_OBJS="${MODULE_OBJS[@]}" # diff --git a/trunk/src/kernel/srs_kernel_mp4.cpp b/trunk/src/kernel/srs_kernel_mp4.cpp index 77be9ab60..5e7a93859 100644 --- a/trunk/src/kernel/srs_kernel_mp4.cpp +++ b/trunk/src/kernel/srs_kernel_mp4.cpp @@ -23,3 +23,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include +SrsMp4Box::SrsMp4Box(uint32_t bt) +{ + size = 0; + type = bt; +} + +SrsMp4Box::~SrsMp4Box() +{ +} + +SrsMp4FullBox::SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f) : SrsMp4Box(bt) +{ + version = v; + flags = f; +} + +SrsMp4FullBox::~SrsMp4FullBox() +{ +} + diff --git a/trunk/src/kernel/srs_kernel_mp4.hpp b/trunk/src/kernel/srs_kernel_mp4.hpp index 9fd5f7457..ddca3c6ce 100644 --- a/trunk/src/kernel/srs_kernel_mp4.hpp +++ b/trunk/src/kernel/srs_kernel_mp4.hpp @@ -29,5 +29,39 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include +/** + * 4.2 Object Structure + * ISO_IEC_14496-12-base-format-2012.pdf, page 16 + */ +class SrsMp4Box +{ +public: + // if size is 1 then the actual size is in the field largesize; + // if size is 0, then this box is the last one in the file, and its contents + // extend to the end of the file (normally only used for a Media Data Box) + uint32_t size; + uint32_t type; +public: + SrsMp4Box(uint32_t bt); + virtual ~SrsMp4Box(); +}; + +/** + * 4.2 Object Structure + * ISO_IEC_14496-12-base-format-2012.pdf, page 16 + */ +class SrsMp4FullBox : public SrsMp4Box +{ +public: + // an integer that specifies the version of this format of the box. + uint8_t version; + // a map of flags + uint32_t flags; +public: + SrsMp4FullBox(uint32_t bt, uint8_t v, uint32_t f); + virtual ~SrsMp4FullBox(); +}; + + #endif