Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
ab6f01f9
Commit
ab6f01f9
authored
Jun 02, 2014
by
Francois Cartegnie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
demux: mp4: split declarations
things that does not belong to libmp4
parent
24876369
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
153 additions
and
117 deletions
+153
-117
modules/demux/Makefile.am
modules/demux/Makefile.am
+2
-1
modules/demux/mp4/libmp4.h
modules/demux/mp4/libmp4.h
+2
-104
modules/demux/mp4/mp4.c
modules/demux/mp4/mp4.c
+2
-12
modules/demux/mp4/mp4.h
modules/demux/mp4/mp4.h
+147
-0
No files found.
modules/demux/Makefile.am
View file @
ab6f01f9
...
...
@@ -186,7 +186,8 @@ endif
demux_LTLIBRARIES
+=
$(LTLIBmkv)
EXTRA_LTLIBRARIES
+=
libmkv_plugin.la
libmp4_plugin_la_SOURCES
=
demux/mp4/mp4.c demux/mp4/libmp4.c demux/mp4/libmp4.h demux/mp4/id3genres.h
libmp4_plugin_la_SOURCES
=
demux/mp4/mp4.c demux/mp4/mp4.h
\
demux/mp4/libmp4.c demux/mp4/libmp4.h demux/mp4/id3genres.h
libmp4_plugin_la_LIBADD
=
$(LIBM)
libmp4_plugin_la_LDFLAGS
=
$(AM_LDFLAGS)
if
HAVE_ZLIB
...
...
modules/demux/mp4/libmp4.h
View file @
ab6f01f9
...
...
@@ -20,8 +20,8 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _VLC_MP4_H
#define _VLC_MP4_H 1
#ifndef _VLC_
LIB
MP4_H
#define _VLC_
LIB
MP4_H 1
#include <vlc_es.h>
...
...
@@ -1291,108 +1291,6 @@ typedef struct MP4_Box_s
}
MP4_Box_t
;
/* Contain all information about a chunk */
typedef
struct
{
uint64_t
i_offset
;
/* absolute position of this chunk in the file */
uint32_t
i_sample_description_index
;
/* index for SampleEntry to use */
uint32_t
i_sample_count
;
/* how many samples in this chunk */
uint32_t
i_sample_first
;
/* index of the first sample in this chunk */
uint32_t
i_sample
;
/* index of the next sample to read in this chunk */
/* now provide way to calculate pts, dts, and offset without too
much memory and with fast access */
/* with this we can calculate dts/pts without waste memory */
uint64_t
i_first_dts
;
/* DTS of the first sample */
uint64_t
i_last_dts
;
/* DTS of the last sample */
uint32_t
*
p_sample_count_dts
;
uint32_t
*
p_sample_delta_dts
;
/* dts delta */
uint32_t
*
p_sample_count_pts
;
int32_t
*
p_sample_offset_pts
;
/* pts-dts */
uint8_t
**
p_sample_data
;
/* set when b_fragmented is true */
uint32_t
*
p_sample_size
;
/* TODO if needed add pts
but quickly *add* support for edts and seeking */
}
mp4_chunk_t
;
/* Contain all needed information for read all track with vlc */
typedef
struct
{
unsigned
int
i_track_ID
;
/* this should be unique */
int
b_ok
;
/* The track is usable */
int
b_enable
;
/* is the trak enable by default */
bool
b_selected
;
/* is the trak being played */
bool
b_chapter
;
/* True when used for chapter only */
bool
b_mac_encoding
;
es_format_t
fmt
;
es_out_id_t
*
p_es
;
/* display size only ! */
int
i_width
;
int
i_height
;
float
f_rotation
;
/* more internal data */
uint32_t
i_timescale
;
/* time scale for this track only */
uint16_t
current_qid
;
/* Smooth Streaming quality level ID */
/* elst */
int
i_elst
;
/* current elst */
int64_t
i_elst_time
;
/* current elst start time (in movie time scale)*/
MP4_Box_t
*
p_elst
;
/* elst (could be NULL) */
/* give the next sample to read, i_chunk is to find quickly where
the sample is located */
uint32_t
i_sample
;
/* next sample to read */
uint32_t
i_chunk
;
/* chunk where next sample is stored */
/* total count of chunk and sample */
uint32_t
i_chunk_count
;
uint32_t
i_sample_count
;
mp4_chunk_t
*
chunk
;
/* always defined for each chunk */
mp4_chunk_t
*
cchunk
;
/* current chunk if b_fragmented is true */
/* sample size, p_sample_size defined only if i_sample_size == 0
else i_sample_size is size for all sample */
uint32_t
i_sample_size
;
uint32_t
*
p_sample_size
;
/* XXX perhaps add file offset if take
too much time to do sumations each time*/
uint32_t
i_sample_first
;
/* i_sample_first value
of the next chunk */
uint64_t
i_first_dts
;
/* i_first_dts value
of the next chunk */
MP4_Box_t
*
p_stbl
;
/* will contain all timing information */
MP4_Box_t
*
p_stsd
;
/* will contain all data to initialize decoder */
MP4_Box_t
*
p_sample
;
/* point on actual sdsd */
bool
b_drms
;
bool
b_has_non_empty_cchunk
;
bool
b_codec_need_restart
;
void
*
p_drms
;
MP4_Box_t
*
p_skcr
;
mtime_t
i_time
;
struct
{
/* for moof parsing */
MP4_Box_t
*
p_traf
;
MP4_Box_t
*
p_tfhd
;
MP4_Box_t
*
p_trun
;
uint64_t
i_traf_base_offset
;
}
context
;
}
mp4_track_t
;
static
inline
size_t
mp4_box_headersize
(
MP4_Box_t
*
p_box
)
{
return
8
...
...
modules/demux/mp4/mp4.c
View file @
ab6f01f9
...
...
@@ -28,7 +28,8 @@
# include "config.h"
#endif
#include <vlc_common.h>
#include "mp4.h"
#include <vlc_plugin.h>
#include <vlc_demux.h>
...
...
@@ -37,7 +38,6 @@
#include <vlc_input.h>
#include <assert.h>
#include "libmp4.h"
#include "id3genres.h"
/* for ATOM_gnre */
/*****************************************************************************
...
...
@@ -65,16 +65,6 @@ static int DemuxAsLeaf( demux_t * );
static
int
Seek
(
demux_t
*
,
mtime_t
);
static
int
Control
(
demux_t
*
,
int
,
va_list
);
typedef
struct
mp4_fragment_t
mp4_fragment_t
;
struct
mp4_fragment_t
{
uint64_t
i_chunk_range_min_offset
;
uint64_t
i_chunk_range_max_offset
;
uint64_t
i_duration
;
MP4_Box_t
*
p_moox
;
mp4_fragment_t
*
p_next
;
};
struct
demux_sys_t
{
MP4_Box_t
*
p_root
;
/* container for the whole file */
...
...
modules/demux/mp4/mp4.h
0 → 100644
View file @
ab6f01f9
/*****************************************************************************
* mp4.h : MP4 file input module for vlc
*****************************************************************************
* Copyright (C) 2014-2004, 2010, 2014 VLC authors and VideoLAN
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _VLC_MP4_H
#define _VLC_MP4_H 1
/*****************************************************************************
* Preamble
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include "libmp4.h"
/* Contain all information about a chunk */
typedef
struct
{
uint64_t
i_offset
;
/* absolute position of this chunk in the file */
uint32_t
i_sample_description_index
;
/* index for SampleEntry to use */
uint32_t
i_sample_count
;
/* how many samples in this chunk */
uint32_t
i_sample_first
;
/* index of the first sample in this chunk */
uint32_t
i_sample
;
/* index of the next sample to read in this chunk */
/* now provide way to calculate pts, dts, and offset without too
much memory and with fast access */
/* with this we can calculate dts/pts without waste memory */
uint64_t
i_first_dts
;
/* DTS of the first sample */
uint64_t
i_last_dts
;
/* DTS of the last sample */
uint32_t
*
p_sample_count_dts
;
uint32_t
*
p_sample_delta_dts
;
/* dts delta */
uint32_t
*
p_sample_count_pts
;
int32_t
*
p_sample_offset_pts
;
/* pts-dts */
uint8_t
**
p_sample_data
;
/* set when b_fragmented is true */
uint32_t
*
p_sample_size
;
/* TODO if needed add pts
but quickly *add* support for edts and seeking */
}
mp4_chunk_t
;
/* Contain all needed information for read all track with vlc */
typedef
struct
{
unsigned
int
i_track_ID
;
/* this should be unique */
int
b_ok
;
/* The track is usable */
int
b_enable
;
/* is the trak enable by default */
bool
b_selected
;
/* is the trak being played */
bool
b_chapter
;
/* True when used for chapter only */
bool
b_mac_encoding
;
es_format_t
fmt
;
es_out_id_t
*
p_es
;
/* display size only ! */
int
i_width
;
int
i_height
;
float
f_rotation
;
/* more internal data */
uint32_t
i_timescale
;
/* time scale for this track only */
uint16_t
current_qid
;
/* Smooth Streaming quality level ID */
/* elst */
int
i_elst
;
/* current elst */
int64_t
i_elst_time
;
/* current elst start time (in movie time scale)*/
MP4_Box_t
*
p_elst
;
/* elst (could be NULL) */
/* give the next sample to read, i_chunk is to find quickly where
the sample is located */
uint32_t
i_sample
;
/* next sample to read */
uint32_t
i_chunk
;
/* chunk where next sample is stored */
/* total count of chunk and sample */
uint32_t
i_chunk_count
;
uint32_t
i_sample_count
;
mp4_chunk_t
*
chunk
;
/* always defined for each chunk */
mp4_chunk_t
*
cchunk
;
/* current chunk if b_fragmented is true */
/* sample size, p_sample_size defined only if i_sample_size == 0
else i_sample_size is size for all sample */
uint32_t
i_sample_size
;
uint32_t
*
p_sample_size
;
/* XXX perhaps add file offset if take
too much time to do sumations each time*/
uint32_t
i_sample_first
;
/* i_sample_first value
of the next chunk */
uint64_t
i_first_dts
;
/* i_first_dts value
of the next chunk */
MP4_Box_t
*
p_stbl
;
/* will contain all timing information */
MP4_Box_t
*
p_stsd
;
/* will contain all data to initialize decoder */
MP4_Box_t
*
p_sample
;
/* point on actual sdsd */
bool
b_drms
;
bool
b_has_non_empty_cchunk
;
bool
b_codec_need_restart
;
void
*
p_drms
;
MP4_Box_t
*
p_skcr
;
mtime_t
i_time
;
struct
{
/* for moof parsing */
MP4_Box_t
*
p_traf
;
MP4_Box_t
*
p_tfhd
;
MP4_Box_t
*
p_trun
;
uint64_t
i_traf_base_offset
;
}
context
;
}
mp4_track_t
;
typedef
struct
mp4_fragment_t
mp4_fragment_t
;
struct
mp4_fragment_t
{
uint64_t
i_chunk_range_min_offset
;
uint64_t
i_chunk_range_max_offset
;
uint64_t
i_duration
;
MP4_Box_t
*
p_moox
;
mp4_fragment_t
*
p_next
;
};
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment