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
4f21763a
Commit
4f21763a
authored
Jan 13, 2003
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* mp4: added parsing of some mov boxes (alternate movies).
parent
66b4ecfa
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
168 additions
and
10 deletions
+168
-10
modules/demux/mp4/libmp4.c
modules/demux/mp4/libmp4.c
+102
-5
modules/demux/mp4/libmp4.h
modules/demux/mp4/libmp4.h
+66
-5
No files found.
modules/demux/mp4/libmp4.c
View file @
4f21763a
...
...
@@ -2,7 +2,7 @@
* libmp4.c : LibMP4 library for mp4 module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: libmp4.c,v 1.1
1 2002/12/18 14:17:10 sam
Exp $
* $Id: libmp4.c,v 1.1
2 2003/01/13 02:30:11 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -1899,12 +1899,102 @@ int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
#endif
/* HAVE_ZLIB_H */
}
int
MP4_ReadBox_rdrf
(
MP4_Stream_t
*
p_stream
,
MP4_Box_t
*
p_box
)
{
uint32_t
i_len
;
MP4_READBOX_ENTER
(
MP4_Box_data_rdrf_t
);
MP4_GETVERSIONFLAGS
(
p_box
->
data
.
p_rdrf
);
MP4_GETFOURCC
(
p_box
->
data
.
p_rdrf
->
i_ref_type
);
MP4_GET4BYTES
(
i_len
);
if
(
i_len
>
0
)
{
uint32_t
i
;
p_box
->
data
.
p_rdrf
->
psz_ref
=
malloc
(
i_len
);
for
(
i
=
0
;
i
<
i_len
;
i
++
)
{
MP4_GET1BYTE
(
p_box
->
data
.
p_rdrf
->
psz_ref
[
i
]
);
}
p_box
->
data
.
p_rdrf
->
psz_ref
[
i_len
]
=
'\0'
;
}
else
{
p_box
->
data
.
p_rdrf
->
psz_ref
=
NULL
;
}
#ifdef MP4_VERBOSE
msg_Dbg
(
p_stream
->
p_input
,
"Read Box:
\"
rdrf
\"
type:%c%c%c%c ref %s"
,
p_box
->
data
.
p_rdrf
->
i_ref_type
&
0xff
,
(
p_box
->
data
.
p_rdrf
->
i_ref_type
>>
8
)
&
0xff
,
(
p_box
->
data
.
p_rdrf
->
i_ref_type
>>
16
)
&
0xff
,
(
p_box
->
data
.
p_rdrf
->
i_ref_type
>>
24
)
&
0xff
,
p_box
->
data
.
p_rdrf
->
psz_ref
);
#endif
MP4_READBOX_EXIT
(
1
);
}
void
MP4_FreeBox_rdrf
(
input_thread_t
*
p_input
,
MP4_Box_t
*
p_box
)
{
FREE
(
p_box
->
data
.
p_rdrf
->
psz_ref
)
}
int
MP4_ReadBox_rmdr
(
MP4_Stream_t
*
p_stream
,
MP4_Box_t
*
p_box
)
{
MP4_READBOX_ENTER
(
MP4_Box_data_rmdr_t
);
MP4_GETVERSIONFLAGS
(
p_box
->
data
.
p_rmdr
);
MP4_GET4BYTES
(
p_box
->
data
.
p_rmdr
->
i_rate
);
#ifdef MP4_VERBOSE
msg_Dbg
(
p_stream
->
p_input
,
"Read Box:
\"
rmdr
\"
rate:%d"
,
p_box
->
data
.
p_rmdr
->
i_rate
);
#endif
MP4_READBOX_EXIT
(
1
);
}
int
MP4_ReadBox_rmqu
(
MP4_Stream_t
*
p_stream
,
MP4_Box_t
*
p_box
)
{
MP4_READBOX_ENTER
(
MP4_Box_data_rmqu_t
);
MP4_GET4BYTES
(
p_box
->
data
.
p_rmqu
->
i_quality
);
#ifdef MP4_VERBOSE
msg_Dbg
(
p_stream
->
p_input
,
"Read Box:
\"
rmqu
\"
quality:%d"
,
p_box
->
data
.
p_rmqu
->
i_quality
);
#endif
MP4_READBOX_EXIT
(
1
);
}
int
MP4_ReadBox_rmvc
(
MP4_Stream_t
*
p_stream
,
MP4_Box_t
*
p_box
)
{
MP4_READBOX_ENTER
(
MP4_Box_data_rmvc_t
);
MP4_GETVERSIONFLAGS
(
p_box
->
data
.
p_rmvc
);
MP4_GETFOURCC
(
p_box
->
data
.
p_rmvc
->
i_gestaltType
);
MP4_GET4BYTES
(
p_box
->
data
.
p_rmvc
->
i_val1
);
MP4_GET4BYTES
(
p_box
->
data
.
p_rmvc
->
i_val2
);
MP4_GET2BYTES
(
p_box
->
data
.
p_rmvc
->
i_checkType
);
#ifdef MP4_VERBOSE
msg_Dbg
(
p_stream
->
p_input
,
"Read Box:
\"
rmvc
\"
gestaltType:%c%c%c%c val1:0x%x val2:0x%x checkType:0x%x"
,
p_box
->
data
.
p_rmvc
->
i_gestaltType
&
0xff
,
(
p_box
->
data
.
p_rmvc
->
i_gestaltType
>>
8
)
&
0xff
,
(
p_box
->
data
.
p_rmvc
->
i_gestaltType
>>
16
)
&
0xff
,(
p_box
->
data
.
p_rmvc
->
i_gestaltType
>>
24
)
&
0xff
,
p_box
->
data
.
p_rmvc
->
i_val1
,
p_box
->
data
.
p_rmvc
->
i_val2
,
p_box
->
data
.
p_rmvc
->
i_checkType
);
#endif
MP4_READBOX_EXIT
(
1
);
}
/**** ------------------------------------------------------------------- ****/
/**** "Higher level" Functions ****/
/**** ------------------------------------------------------------------- ****/
static
struct
static
struct
{
uint32_t
i_type
;
int
(
*
MP4_ReadBox_function
)(
MP4_Stream_t
*
p_stream
,
MP4_Box_t
*
p_box
);
...
...
@@ -1923,6 +2013,8 @@ static struct
{
FOURCC_udta
,
MP4_ReadBoxContainer
,
MP4_FreeBox_Common
},
{
FOURCC_nmhd
,
MP4_ReadBoxContainer
,
MP4_FreeBox_Common
},
{
FOURCC_hnti
,
MP4_ReadBoxContainer
,
MP4_FreeBox_Common
},
{
FOURCC_rmra
,
MP4_ReadBoxContainer
,
MP4_FreeBox_Common
},
{
FOURCC_rmda
,
MP4_ReadBoxContainer
,
MP4_FreeBox_Common
},
/* specific box */
{
FOURCC_ftyp
,
MP4_ReadBox_ftyp
,
MP4_FreeBox_ftyp
},
...
...
@@ -1991,12 +2083,17 @@ static struct
{
FOURCC_dpnd
,
NULL
,
NULL
},
{
FOURCC_ipir
,
NULL
,
NULL
},
{
FOURCC_mpod
,
NULL
,
NULL
},
/* found in hnti */
{
FOURCC_rtp
,
NULL
,
NULL
},
/* found in rmra */
{
FOURCC_rdrf
,
MP4_ReadBox_rdrf
,
MP4_FreeBox_rdrf
},
{
FOURCC_rmdr
,
MP4_ReadBox_rmdr
,
MP4_FreeBox_Common
},
{
FOURCC_rmqu
,
MP4_ReadBox_rmqu
,
MP4_FreeBox_Common
},
{
FOURCC_rmvc
,
MP4_ReadBox_rmvc
,
MP4_FreeBox_Common
},
/* Last entry */
{
0
,
NULL
,
NULL
}
};
...
...
modules/demux/mp4/libmp4.h
View file @
4f21763a
...
...
@@ -2,7 +2,7 @@
* libmp4.h : LibMP4 library for mp4 module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: libmp4.h,v 1.
4 2002/11/17 06:46:56
fenrir Exp $
* $Id: libmp4.h,v 1.
5 2003/01/13 02:30:11
fenrir Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -105,9 +105,19 @@
#define FOURCC_mjpb VLC_FOURCC( 'm', 'j', 'q', 't' )
#define FOURCC_mjqt VLC_FOURCC( 'm', 'j', 'h', 't' )
#define FOURCC_mjht VLC_FOURCC( 'm', 'j', 'p', 'b' )
#define FOURCC_jpeg VLC_FOURCC( 'j', 'p', 'e', 'g' )
#define FOURCC_rmra VLC_FOURCC( 'r', 'm', 'r', 'a' )
#define FOURCC_rmda VLC_FOURCC( 'r', 'm', 'd', 'a' )
#define FOURCC_rdrf VLC_FOURCC( 'r', 'd', 'r', 'f' )
#define FOURCC_rmdr VLC_FOURCC( 'r', 'm', 'd', 'r' )
#define FOURCC_rmvc VLC_FOURCC( 'r', 'm', 'v', 'c' )
#define FOURCC_rmcd VLC_FOURCC( 'r', 'm', 'c', 'd' )
#define FOURCC_rmqu VLC_FOURCC( 'r', 'm', 'q', 'u' )
#define FOURCC_alis VLC_FOURCC( 'a', 'l', 'i', 's' )
/* Do you want some debug information on all read boxes ? */
#define MP4_VERBOSE 1
...
...
@@ -578,11 +588,57 @@ typedef struct MP4_Box_data_cmvd_s
typedef
struct
MP4_Box_data_cmov_s
{
struct
MP4_Box_s
*
p_moov
;
/* uncompressed moov */
}
MP4_Box_data_cmov_t
;
typedef
struct
MP4_Box_data_rdrf_s
{
uint8_t
i_version
;
uint32_t
i_flags
;
uint32_t
i_ref_type
;
char
*
psz_ref
;
}
MP4_Box_data_rdrf_t
;
typedef
struct
MP4_Box_data_rmdr_s
{
uint8_t
i_version
;
uint32_t
i_flags
;
uint32_t
i_rate
;
}
MP4_Box_data_rmdr_t
;
typedef
struct
MP4_Box_data_rmvc_s
{
uint8_t
i_version
;
uint32_t
i_flags
;
uint32_t
i_gestaltType
;
uint32_t
i_val1
;
uint32_t
i_val2
;
uint16_t
i_checkType
;
/* 0: val1 is version min
1: gestalt value & val2 == val1 */
}
MP4_Box_data_rmvc_t
;
typedef
struct
MP4_Box_data_rmcd_s
{
uint8_t
i_version
;
uint32_t
i_flags
;
}
MP4_Box_data_rmcd_t
;
typedef
struct
MP4_Box_data_rmqu_s
{
uint32_t
i_quality
;
}
MP4_Box_data_rmqu_t
;
/*
typedef struct MP4_Box_data_
cmov
_s
typedef struct MP4_Box_data__s
{
uint8_t i_version;
uint32_t i_flags;
...
...
@@ -629,7 +685,12 @@ typedef union MP4_Box_data_s
MP4_Box_data_cmov_t
*
p_cmov
;
MP4_Box_data_moviehintinformation_rtp_t
p_moviehintinformation_rtp
;
MP4_Box_data_rdrf_t
*
p_rdrf
;
MP4_Box_data_rmdr_t
*
p_rmdr
;
MP4_Box_data_rmqu_t
*
p_rmqu
;
MP4_Box_data_rmvc_t
*
p_rmvc
;
void
*
p_data
;
/* for unknow type */
}
MP4_Box_data_t
;
...
...
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