[vlc-commits] mux: mp4: simplify trackinit

Francois Cartegnie git at videolan.org
Sun Dec 4 10:19:32 CET 2016


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Dec  3 16:48:15 2016 +0100| [42e4c9cb99657a7a533f30ef16c7f6cff7681506] | committer: Francois Cartegnie

mux: mp4: simplify trackinit

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=42e4c9cb99657a7a533f30ef16c7f6cff7681506
---

 .../demux/smooth/playlist/ForgedInitSegment.cpp    |  9 ++++----
 modules/mux/mp4/libmp4mux.c                        | 27 ++++++----------------
 modules/mux/mp4/libmp4mux.h                        |  2 +-
 modules/mux/mp4/mp4.c                              |  4 ++--
 4 files changed, 14 insertions(+), 28 deletions(-)

diff --git a/modules/demux/smooth/playlist/ForgedInitSegment.cpp b/modules/demux/smooth/playlist/ForgedInitSegment.cpp
index 05319e5..e06ca2a 100644
--- a/modules/demux/smooth/playlist/ForgedInitSegment.cpp
+++ b/modules/demux/smooth/playlist/ForgedInitSegment.cpp
@@ -206,12 +206,11 @@ void ForgedInitSegment::setLanguage(const std::string &lang)
 
 block_t * ForgedInitSegment::buildMoovBox()
 {
-    mp4mux_trackinfo_t trackinfo;
-    mp4mux_trackinfo_Init(&trackinfo);
-
     const Timescale &trackTimescale = inheritTimescale();
-    trackinfo.i_track_id = 0x01; /* Will always be 1st and unique track; tfhd patched on block read */
-    trackinfo.i_timescale = (uint64_t) trackTimescale;
+    mp4mux_trackinfo_t trackinfo;
+    mp4mux_trackinfo_Init(&trackinfo,
+                          0x01, /* Will always be 1st and unique track; tfhd patched on block read */
+                          (uint32_t) trackTimescale);
     trackinfo.i_read_duration = duration.Get();
     trackinfo.i_trex_default_length = 1;
     trackinfo.i_trex_default_size = 1;
diff --git a/modules/mux/mp4/libmp4mux.c b/modules/mux/mp4/libmp4mux.c
index 18321e8..2f0a55b 100644
--- a/modules/mux/mp4/libmp4mux.c
+++ b/modules/mux/mp4/libmp4mux.c
@@ -36,35 +36,22 @@
 #include <assert.h>
 #include <time.h>
 
-bool mp4mux_trackinfo_Init(mp4mux_trackinfo_t *p_stream)
+bool mp4mux_trackinfo_Init(mp4mux_trackinfo_t *p_stream, unsigned i_id,
+                           uint32_t i_timescale)
 {
-    p_stream->i_track_id = 1;
-
-    es_format_Init(&p_stream->fmt, 0, 0);
+    memset(p_stream, 0, sizeof(*p_stream));
+    p_stream->i_track_id = i_id;
 
+    p_stream->i_timescale   = i_timescale;
     p_stream->i_entry_count = 0;
     p_stream->i_entry_max   = 1000;
+
     p_stream->entry         = calloc(p_stream->i_entry_max, sizeof(mp4mux_entry_t));
     if(!p_stream->entry)
-    {
-        es_format_Clean(&p_stream->fmt);
         return false;
-    }
 
-    p_stream->a52_frame       = NULL;
-
-    p_stream->i_read_duration = 0;
-    p_stream->i_timescale     = CLOCK_FREQ;
-    p_stream->i_firstdts     = 0;
-    p_stream->b_hasbframes    = false;
-
-    p_stream->i_stco_pos = 0;
-
-    p_stream->i_trex_default_length = 0;
-    p_stream->i_trex_default_size = 0;
+    es_format_Init(&p_stream->fmt, 0, 0);
 
-    p_stream->i_edits_count = 0;
-    p_stream->p_edits = NULL;
     return true;
 }
 
diff --git a/modules/mux/mp4/libmp4mux.h b/modules/mux/mp4/libmp4mux.h
index 91e6995..1a280a9 100644
--- a/modules/mux/mp4/libmp4mux.h
+++ b/modules/mux/mp4/libmp4mux.h
@@ -74,7 +74,7 @@ typedef struct
 
 } mp4mux_trackinfo_t;
 
-bool mp4mux_trackinfo_Init( mp4mux_trackinfo_t * );
+bool mp4mux_trackinfo_Init( mp4mux_trackinfo_t *, unsigned, uint32_t );
 void mp4mux_trackinfo_Clear( mp4mux_trackinfo_t * );
 
 bo_t *box_new     (const char *fcc);
diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c
index 7f89dd5..d9f2068 100644
--- a/modules/mux/mp4/mp4.c
+++ b/modules/mux/mp4/mp4.c
@@ -403,14 +403,14 @@ static int AddStream(sout_mux_t *p_mux, sout_input_t *p_input)
     }
 
     p_stream = malloc(sizeof(mp4_stream_t));
-    if (!p_stream || !mp4mux_trackinfo_Init(&p_stream->mux))
+    if (!p_stream ||
+        !mp4mux_trackinfo_Init(&p_stream->mux, p_sys->i_nb_streams + 1, CLOCK_FREQ))
     {
         free(p_stream);
         return VLC_ENOMEM;
     }
 
     es_format_Copy(&p_stream->mux.fmt, p_input->p_fmt);
-    p_stream->mux.i_track_id    = p_sys->i_nb_streams + 1;
     p_stream->i_length_neg  = 0;
     p_stream->i_first_dts   = VLC_TS_INVALID;
     switch( p_stream->mux.fmt.i_cat )



More information about the vlc-commits mailing list