From 86fd8c59e8545463605d13889c26085c338e5ca3 Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Sat, 22 Jan 2011 21:47:50 +0100 Subject: [PATCH] [STABLE] MP4 boxes finished, started on the interface, big part of the constructor and destructer are finished --- MP4/Makefile | 2 +- MP4/box_dinf.cpp | 2 +- MP4/box_dinf.h | 2 +- MP4/box_includes.h | 23 +++++++++++++++ MP4/interface.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++ MP4/interface.h | 47 +++++++++++++++++++++++++++++ MP4/main.cpp | 22 +++++--------- 7 files changed, 153 insertions(+), 18 deletions(-) create mode 100644 MP4/box_includes.h create mode 100644 MP4/interface.cpp create mode 100644 MP4/interface.h diff --git a/MP4/Makefile b/MP4/Makefile index 1e4587bd..2691494a 100644 --- a/MP4/Makefile +++ b/MP4/Makefile @@ -1,4 +1,4 @@ -SRC = box_avcC.cpp box.cpp box_dinf.cpp box_dref.cpp box_esds.cpp box_ftyp.cpp box_hdlr.cpp box_hmhd.cpp box_mdhd.cpp box_mdia.cpp box_minf.cpp box_moov.cpp box_mvhd.cpp box_nmhd.cpp box_smhd.cpp box_stbl.cpp box_stco.cpp box_stsc.cpp box_stsd.cpp box_stts.cpp box_tkhd.cpp box_trak.cpp box_url.cpp box_vmhd.cpp main.cpp +SRC = box_avcC.cpp box.cpp box_dinf.cpp box_dref.cpp box_esds.cpp box_ftyp.cpp box_hdlr.cpp box_hmhd.cpp box_mdhd.cpp box_mdia.cpp box_minf.cpp box_moov.cpp box_mvhd.cpp box_nmhd.cpp box_smhd.cpp box_stbl.cpp box_stco.cpp box_stsc.cpp box_stsd.cpp box_stts.cpp box_tkhd.cpp box_trak.cpp box_url.cpp box_vmhd.cpp main.cpp interface.cpp OBJ = $(SRC:.cpp=.o) OUT = Boxtest INCLUDES = diff --git a/MP4/box_dinf.cpp b/MP4/box_dinf.cpp index 7e3dddec..c33a94f3 100644 --- a/MP4/box_dinf.cpp +++ b/MP4/box_dinf.cpp @@ -12,7 +12,7 @@ Box * Box_dinf::GetBox() { return Container; } -void Box_dinf::AddContent( Box * newcontent, uint32_t offset ) { +void Box_dinf::AddContent( Box * newcontent ) { if(Content) { delete Content; Content = NULL; diff --git a/MP4/box_dinf.h b/MP4/box_dinf.h index 815f1d34..8e1c15b8 100644 --- a/MP4/box_dinf.h +++ b/MP4/box_dinf.h @@ -7,7 +7,7 @@ class Box_dinf { Box_dinf(); ~Box_dinf(); Box * GetBox(); - void AddContent( Box * newcontent, uint32_t offset = 0 ); + void AddContent( Box * newcontent ); private: Box * Container; diff --git a/MP4/box_includes.h b/MP4/box_includes.h new file mode 100644 index 00000000..c83d6e0f --- /dev/null +++ b/MP4/box_includes.h @@ -0,0 +1,23 @@ +#include "box_avcC.h" +#include "box_dinf.h" +#include "box_dref.h" +#include "box_esds.h" +#include "box_ftyp.h" +#include "box_hdlr.h" +#include "box_hmhd.h" +#include "box_mdhd.h" +#include "box_mdia.h" +#include "box_minf.h" +#include "box_moov.h" +#include "box_mvhd.h" +#include "box_nmhd.h" +#include "box_smhd.h" +#include "box_stbl.h" +#include "box_stco.h" +#include "box_stsc.h" +#include "box_stsd.h" +#include "box_stts.h" +#include "box_tkhd.h" +#include "box_trak.h" +#include "box_url.h" +#include "box_vmhd.h" diff --git a/MP4/interface.cpp b/MP4/interface.cpp new file mode 100644 index 00000000..1abfe7cd --- /dev/null +++ b/MP4/interface.cpp @@ -0,0 +1,73 @@ +#include "interface.h" + +Interface::Interface() { + ftyp = new Box_ftyp(); + moov = new Box_moov(); + mvhd = new Box_mvhd(); + trak_vide = new Box_trak(); + tkhd_vide = new Box_tkhd(); + mdia_vide = new Box_mdia(); + mdhd_vide = new Box_mdhd(); + hdlr_vide = new Box_hdlr(); + minf_vide = new Box_minf(); + dinf_vide = new Box_dinf(); + dref_vide = new Box_dref(); + url_vide = new Box_url(); + stbl_vide = new Box_stbl(); + stts_vide = new Box_stts(); + stsc_vide = new Box_stsc(); + stco_vide = new Box_stco(); + stsd_vide = new Box_stsd(); + avcC_vide = new Box_avcC(); + trak_soun = new Box_trak(); + tkhd_soun = new Box_tkhd(); + mdia_soun = new Box_mdia(); + mdhd_soun = new Box_mdhd(); + hdlr_soun = new Box_hdlr(); + minf_soun = new Box_minf(); + dinf_soun = new Box_dinf(); + dref_soun = new Box_dref(); + url_soun = new Box_url(); + stbl_soun = new Box_stbl(); + stts_soun = new Box_stts(); + stsc_soun = new Box_stsc(); + stco_soun = new Box_stco(); + stsd_soun = new Box_stsd(); + esds_soun = new Box_esds(); +} + +Interface::~Interface() { + if( esds_soun ) { delete esds_soun; esds_soun = NULL; } + if( stsd_soun ) { delete stsd_soun; stsd_soun = NULL; } + if( stco_soun ) { delete stco_soun; stco_soun = NULL; } + if( stsc_soun ) { delete stsc_soun; stsc_soun = NULL; } + if( stts_soun ) { delete stts_soun; stts_soun = NULL; } + if( stbl_soun ) { delete stbl_soun; stbl_soun = NULL; } + if( url_soun ) { delete url_soun; url_soun = NULL; } + if( dref_soun ) { delete dref_soun; dref_soun = NULL; } + if( dinf_soun ) { delete dinf_soun; dinf_soun = NULL; } + if( minf_soun ) { delete minf_soun; minf_soun = NULL; } + if( hdlr_soun ) { delete hdlr_soun; hdlr_soun = NULL; } + if( mdhd_soun ) { delete mdhd_soun; mdhd_soun = NULL; } + if( mdia_soun ) { delete mdia_soun; mdia_soun = NULL; } + if( tkhd_soun ) { delete tkhd_soun; tkhd_soun = NULL; } + if( trak_soun ) { delete trak_soun; trak_soun = NULL; } + if( avcC_vide ) { delete avcC_vide; avcC_vide = NULL; } + if( stsd_vide ) { delete stsd_vide; stsd_vide = NULL; } + if( stco_vide ) { delete stco_vide; stco_vide = NULL; } + if( stsc_vide ) { delete stsc_vide; stsc_vide = NULL; } + if( stts_vide ) { delete stts_vide; stts_vide = NULL; } + if( stbl_vide ) { delete stbl_vide; stbl_vide = NULL; } + if( url_vide ) { delete url_vide; url_vide = NULL; } + if( dref_vide ) { delete dref_vide; dref_vide = NULL; } + if( dinf_vide ) { delete dinf_vide; dinf_vide = NULL; } + if( minf_vide ) { delete minf_vide; minf_vide = NULL; } + if( hdlr_vide ) { delete hdlr_vide; hdlr_vide = NULL; } + if( mdhd_vide ) { delete mdhd_vide; mdhd_vide = NULL; } + if( mdia_vide ) { delete mdia_vide; mdia_vide = NULL; } + if( tkhd_vide ) { delete tkhd_vide; tkhd_vide = NULL; } + if( trak_vide ) { delete trak_vide; trak_vide = NULL; } + if( mvhd ) { delete mvhd; mvhd = NULL; } + if( moov ) { delete moov; moov = NULL; } + if( ftyp ) { delete ftyp; ftyp = NULL; } +} diff --git a/MP4/interface.h b/MP4/interface.h new file mode 100644 index 00000000..5607e8da --- /dev/null +++ b/MP4/interface.h @@ -0,0 +1,47 @@ +#include "box_includes.h" + +class Interface { + public: + Interface(); + ~Interface(); + void link(); + private: + Box_ftyp * ftyp; + Box_moov * moov; + Box_mvhd * mvhd; + + Box_trak * trak_vide; + Box_tkhd * tkhd_vide; + Box_mdia * mdia_vide; + Box_mdhd * mdhd_vide; + Box_hdlr * hdlr_vide; + Box_minf * minf_vide; + Box_vmhd * vmhd_vide; + Box_dinf * dinf_vide; + Box_dref * dref_vide; + Box_url * url_vide; + Box_stbl * stbl_vide; + Box_stts * stts_vide; + Box_stsc * stsc_vide; + Box_stco * stco_vide; + Box_stsd * stsd_vide; + Box_avcC * avcC_vide; + + Box_trak * trak_soun; + Box_tkhd * tkhd_soun; + Box_mdia * mdia_soun; + Box_mdhd * mdhd_soun; + Box_hdlr * hdlr_soun; + Box_minf * minf_soun; + Box_smhd * smhd_soun; + Box_dinf * dinf_soun; + Box_dref * dref_soun; + Box_url * url_soun; + Box_stbl * stbl_soun; + Box_stts * stts_soun; + Box_stsc * stsc_soun; + Box_stco * stco_soun; + Box_stsd * stsd_soun; + Box_esds * esds_soun; +};//Interface class + diff --git a/MP4/main.cpp b/MP4/main.cpp index 9e7c44a8..3f45a598 100644 --- a/MP4/main.cpp +++ b/MP4/main.cpp @@ -1,19 +1,11 @@ #include -#include "box_avcC.h" -#include "box_stsd.h" -#include +#include "interface.h" -int main() { - Box_avcC * Testing = new Box_avcC(); - Testing->SetCompressorName( "Test123" ); - std::cout << "H264::Size: " << Testing->GetBox()->GetHeader().TotalSize << "\n"; - Box_stsd * Testsample = new Box_stsd(); - std::cout << "STSD::Before Content: " << Testsample->GetBox()->GetHeader().TotalSize << "\n"; - Testsample->AddContent( Testing->GetBox() ); - std::cout << "STSD::After 1 Content: " << Testsample->GetBox()->GetHeader().TotalSize << "\n"; - Testsample->AddContent( Testing->GetBox(), 1 ); - std::cout << "STSD::After 2 Content: " << Testsample->GetBox()->GetHeader().TotalSize << "\n"; - delete Testsample; - delete Testing; +int main( ) { + std::cout << "Creating Interface\n"; + Interface * file = new Interface(); + std::cout << "Interface created, deleting it again\n"; + delete file; + std::cout << "Interface deleted\n"; return 0; }