Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
4683e7ed
Commit
4683e7ed
authored
Sep 18, 2002
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* all: fix endian issue with new definition of VLC_FOURCC, but
untested. Meuuh, could you test it ?
parent
35b47400
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
89 additions
and
87 deletions
+89
-87
modules/demux/avi/avi.c
modules/demux/avi/avi.c
+41
-42
modules/demux/avi/avi.h
modules/demux/avi/avi.h
+36
-34
modules/demux/avi/libioRIFF.c
modules/demux/avi/libioRIFF.c
+4
-5
modules/demux/avi/libioRIFF.h
modules/demux/avi/libioRIFF.h
+5
-4
modules/demux/mp4/libmp4.c
modules/demux/mp4/libmp4.c
+3
-2
No files found.
modules/demux/avi/avi.c
View file @
4683e7ed
...
...
@@ -2,7 +2,7 @@
* avi.c : AVI file Stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: avi.c,v 1.
3 2002/08/08 22:28:22 sam
Exp $
* $Id: avi.c,v 1.
4 2002/09/18 23:34:28 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -59,24 +59,23 @@ vlc_module_end();
*****************************************************************************/
static
u16
GetWLE
(
byte_t
*
p_buff
)
{
u16
i
;
i
=
(
*
p_buff
)
+
(
*
(
p_buff
+
1
)
<<
8
);
return
(
i
);
return
(
p_buff
[
0
]
+
(
p_buff
[
1
]
<<
8
)
);
}
static
u32
GetDWLE
(
byte_t
*
p_buff
)
{
u32
i
;
i
=
(
*
p_buff
)
+
(
*
(
p_buff
+
1
)
<<
8
)
+
(
*
(
p_buff
+
2
)
<<
16
)
+
(
*
(
p_buff
+
3
)
<<
24
);
return
(
i
);
return
(
p_buff
[
0
]
+
(
p_buff
[
1
]
<<
8
)
+
(
p_buff
[
2
]
<<
16
)
+
(
p_buff
[
3
]
<<
24
)
);
}
static
u32
GetDWBE
(
byte_t
*
p_buff
)
{
u32
i
;
i
=
((
*
p_buff
)
<<
24
)
+
(
*
(
p_buff
+
1
)
<<
16
)
+
(
*
(
p_buff
+
2
)
<<
8
)
+
(
*
(
p_buff
+
3
)
);
return
(
i
);
return
(
p_buff
[
3
]
+
(
p_buff
[
2
]
<<
8
)
+
(
p_buff
[
1
]
<<
16
)
+
(
p_buff
[
0
]
<<
24
)
);
}
static
vlc_fourcc_t
GetFOURCC
(
byte_t
*
p_buff
)
{
return
(
VLC_FOURCC
(
p_buff
[
0
],
p_buff
[
1
],
p_buff
[
2
],
p_buff
[
3
]
)
);
}
static
inline
off_t
__EVEN
(
off_t
i
)
{
return
(
(
i
&
1
)
?
i
+
1
:
i
);
...
...
@@ -105,8 +104,8 @@ static void AVI_Parse_avih( MainAVIHeader_t *p_avih, byte_t *p_buff )
}
static
void
AVI_Parse_Header
(
AVIStreamHeader_t
*
p_strh
,
byte_t
*
p_buff
)
{
p_strh
->
i_type
=
Get
DWLE
(
p_buff
);
p_strh
->
i_handler
=
Get
DWLE
(
p_buff
+
4
);
p_strh
->
i_type
=
Get
FOURCC
(
p_buff
);
p_strh
->
i_handler
=
Get
FOURCC
(
p_buff
+
4
);
p_strh
->
i_flags
=
GetDWLE
(
p_buff
+
8
);
p_strh
->
i_reserved1
=
GetDWLE
(
p_buff
+
12
);
p_strh
->
i_initialframes
=
GetDWLE
(
p_buff
+
16
);
...
...
@@ -125,7 +124,7 @@ static void AVI_Parse_BitMapInfoHeader( bitmapinfoheader_t *h, byte_t *p_data )
h
->
i_height
=
GetDWLE
(
p_data
+
8
);
h
->
i_planes
=
GetWLE
(
p_data
+
12
);
h
->
i_bitcount
=
GetWLE
(
p_data
+
14
);
h
->
i_compression
=
Get
DWLE
(
p_data
+
16
);
h
->
i_compression
=
Get
FOURCC
(
p_data
+
16
);
h
->
i_sizeimage
=
GetDWLE
(
p_data
+
20
);
h
->
i_xpelspermeter
=
GetDWLE
(
p_data
+
24
);
h
->
i_ypelspermeter
=
GetDWLE
(
p_data
+
28
);
...
...
@@ -147,10 +146,10 @@ static inline int AVI_GetESTypeFromTwoCC( u16 i_type )
{
switch
(
i_type
)
{
case
(
TWOCC_wb
):
case
(
AVI
TWOCC_wb
):
return
(
AUDIO_ES
);
case
(
TWOCC_dc
):
case
(
TWOCC_db
):
case
(
AVI
TWOCC_dc
):
case
(
AVI
TWOCC_db
):
return
(
VIDEO_ES
);
default:
return
(
UNKNOWN_ES
);
...
...
@@ -335,7 +334,7 @@ static void AVI_PESBuffer_Flush( input_buffers_t *p_method_data,
static
void
AVI_ParseStreamHeader
(
u32
i_id
,
int
*
i_number
,
int
*
i_type
)
{
int
c1
,
c2
;
/* XXX i_id have to be read using MKFOURCC and NOT VLC_FOURCC */
c1
=
(
i_id
)
&
0xFF
;
c2
=
(
i_id
>>
8
)
&
0xFF
;
...
...
@@ -435,7 +434,7 @@ static void __AVI_GetIndex( input_thread_t *p_input )
if
(
RIFF_FindAndGotoDataChunk
(
p_input
,
p_avi
->
p_riff
,
&
p_idx1
,
FOURCC_idx1
)
!=
0
)
AVI
FOURCC_idx1
)
!=
0
)
{
msg_Warn
(
p_input
,
"cannot find index"
);
RIFF_GoToChunk
(
p_input
,
p_avi
->
p_hdrl
);
...
...
@@ -582,7 +581,7 @@ static int AVIInit( vlc_object_t * p_this )
p_input
->
i_bufsize
=
INPUT_DEFAULT_BUFSIZE
;
}
if
(
RIFF_TestFileHeader
(
p_input
,
&
p_riff
,
FOURCC_AVI
)
!=
0
)
if
(
RIFF_TestFileHeader
(
p_input
,
&
p_riff
,
AVI
FOURCC_AVI
)
!=
0
)
{
AVIEnd
(
p_input
);
msg_Warn
(
p_input
,
"RIFF-AVI module discarded"
);
...
...
@@ -598,7 +597,7 @@ static int AVIInit( vlc_object_t * p_this )
}
/* it's a riff-avi file, so search for LIST-hdrl */
if
(
RIFF_FindListChunk
(
p_input
,
&
p_hdrl
,
p_riff
,
FOURCC_hdrl
)
!=
0
)
if
(
RIFF_FindListChunk
(
p_input
,
&
p_hdrl
,
p_riff
,
AVI
FOURCC_hdrl
)
!=
0
)
{
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
LIST-hdrl
\"
"
);
...
...
@@ -614,7 +613,7 @@ static int AVIInit( vlc_object_t * p_this )
}
/* in LIST-hdrl search avih */
if
(
RIFF_FindAndLoadChunk
(
p_input
,
p_hdrl
,
&
p_avih
,
FOURCC_avih
)
!=
0
)
&
p_avih
,
AVI
FOURCC_avih
)
!=
0
)
{
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
avih
\"
chunk"
);
...
...
@@ -667,7 +666,7 @@ static int AVIInit( vlc_object_t * p_this )
memset
(
p_info
,
0
,
sizeof
(
AVIStreamInfo_t
)
);
if
(
(
RIFF_FindListChunk
(
p_input
,
&
p_strl
,
p_hdrl
,
FOURCC_strl
)
!=
0
)
&
p_strl
,
p_hdrl
,
AVI
FOURCC_strl
)
!=
0
)
||
(
RIFF_DescendChunk
(
p_input
)
!=
0
))
{
AVIEnd
(
p_input
);
...
...
@@ -677,7 +676,7 @@ static int AVIInit( vlc_object_t * p_this )
/* in LIST-strl search strh */
if
(
RIFF_FindAndLoadChunk
(
p_input
,
p_hdrl
,
&
p_strh
,
FOURCC_strh
)
!=
0
)
&
p_strh
,
AVI
FOURCC_strh
)
!=
0
)
{
RIFF_DeleteChunk
(
p_input
,
p_strl
);
AVIEnd
(
p_input
);
...
...
@@ -690,7 +689,7 @@ static int AVIInit( vlc_object_t * p_this )
/* in LIST-strl search strf */
if
(
RIFF_FindAndLoadChunk
(
p_input
,
p_hdrl
,
&
p_strf
,
FOURCC_strf
)
!=
0
)
&
p_strf
,
AVI
FOURCC_strf
)
!=
0
)
{
RIFF_DeleteChunk
(
p_input
,
p_strl
);
AVIEnd
(
p_input
);
...
...
@@ -717,7 +716,7 @@ static int AVIInit( vlc_object_t * p_this )
switch
(
p_info
->
header
.
i_type
)
{
case
(
FOURCC_auds
):
case
(
AVI
FOURCC_auds
):
p_es
->
i_cat
=
AUDIO_ES
;
AVI_Parse_WaveFormatEx
(
&
p_info
->
audio_format
,
p_strf
->
p_data
->
p_payload_start
);
...
...
@@ -725,7 +724,7 @@ static int AVIInit( vlc_object_t * p_this )
p_info
->
audio_format
.
i_formattag
);
break
;
case
(
FOURCC_vids
):
case
(
AVI
FOURCC_vids
):
p_es
->
i_cat
=
VIDEO_ES
;
AVI_Parse_BitMapInfoHeader
(
&
p_info
->
video_format
,
p_strf
->
p_data
->
p_payload_start
);
...
...
@@ -762,7 +761,7 @@ static int AVIInit( vlc_object_t * p_this )
}
/* go to movi chunk to get it*/
if
(
RIFF_FindListChunk
(
p_input
,
&
p_movi
,
p_riff
,
FOURCC_movi
)
!=
0
)
if
(
RIFF_FindListChunk
(
p_input
,
&
p_movi
,
p_riff
,
AVI
FOURCC_movi
)
!=
0
)
{
msg_Err
(
p_input
,
"cannot find
\"
LIST-movi
\"
"
);
AVIEnd
(
p_input
);
...
...
@@ -1275,7 +1274,7 @@ static int __AVI_GetChunk( input_thread_t *p_input,
}
/* msg_Dbg( p_input, "ck: %4.4s len %d", &p_ck->i_id, p_ck->i_size ); */
/* special case for LIST-rec chunk */
if
(
(
p_ck
->
i_id
==
FOURCC_LIST
)
&&
(
p_ck
->
i_type
==
FOURCC_rec
)
)
if
(
(
p_ck
->
i_id
==
AVIFOURCC_LIST
)
&&
(
p_ck
->
i_type
==
AVI
FOURCC_rec
)
)
{
RIFF_DescendChunk
(
p_input
);
RIFF_DeleteChunk
(
p_input
,
p_ck
);
...
...
@@ -1879,12 +1878,12 @@ static int __AVIDemux_ChunkAction( int i_streams_max,
switch
(
p_ck
->
i_id
)
{
case
(
FOURCC_JUNK
):
case
(
AVI
FOURCC_JUNK
):
return
(
1
);
case
(
FOURCC_idx1
):
case
(
AVI
FOURCC_idx1
):
return
(
3
);
case
(
FOURCC_LIST
):
if
(
p_ck
->
i_type
==
FOURCC_rec
)
case
(
AVI
FOURCC_LIST
):
if
(
p_ck
->
i_type
==
AVI
FOURCC_rec
)
{
return
(
2
);
}
...
...
@@ -1897,7 +1896,7 @@ static int __AVIDemux_ChunkAction( int i_streams_max,
}
/* test for ix?? */
if
(
(
p_ck
->
i_id
&
0xFFFF
)
==
VLC_
TWOCC
(
'i'
,
'x'
)
)
if
(
(
p_ck
->
i_id
&
0xFFFF
)
==
MK
TWOCC
(
'i'
,
'x'
)
)
{
return
(
1
);
}
...
...
@@ -1921,9 +1920,9 @@ static int AVI_NotSeekableRecover( input_thread_t *p_input )
i_id
=
GetDWLE
(
p_id
);
switch
(
i_id
)
{
case
(
FOURCC_idx1
):
case
(
FOURCC_JUNK
):
case
(
FOURCC_LIST
):
case
(
AVI
FOURCC_idx1
):
case
(
AVI
FOURCC_JUNK
):
case
(
AVI
FOURCC_LIST
):
return
(
1
);
default:
AVI_ParseStreamHeader
(
i_id
,
&
i_number
,
&
i_type
);
...
...
@@ -1931,10 +1930,10 @@ static int AVI_NotSeekableRecover( input_thread_t *p_input )
{
switch
(
i_type
)
{
case
(
TWOCC_wb
):
case
(
TWOCC_db
):
case
(
TWOCC_dc
):
case
(
TWOCC_pc
):
case
(
AVI
TWOCC_wb
):
case
(
AVI
TWOCC_db
):
case
(
AVI
TWOCC_dc
):
case
(
AVI
TWOCC_pc
):
return
(
1
);
}
}
...
...
modules/demux/avi/avi.h
View file @
4683e7ed
...
...
@@ -2,7 +2,7 @@
* avi.h : AVI file Stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: avi.h,v 1.
2 2002/08/07 00:29:36 sam
Exp $
* $Id: avi.h,v 1.
3 2002/09/18 23:34:28 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -40,31 +40,36 @@
the keyframe flag isn't a true flag
but have to be verified */
/* AVI stuff */
#define FOURCC_RIFF VLC_FOURCC('R','I','F','F')
#define FOURCC_LIST VLC_FOURCC('L','I','S','T')
#define FOURCC_JUNK VLC_FOURCC('J','U','N','K')
#define FOURCC_AVI VLC_FOURCC('A','V','I',' ')
#define FOURCC_WAVE VLC_FOURCC('W','A','V','E')
#define MKTWOCC( a, b ) \
( (u16)(a) | ( (u16)(b) << 8 ) )
#define FOURCC_avih VLC_FOURCC('a','v','i','h')
#define FOURCC_hdrl VLC_FOURCC('h','d','r','l')
#define FOURCC_movi VLC_FOURCC('m','o','v','i')
#define FOURCC_idx1 VLC_FOURCC('i','d','x','1')
/* *** avi stuff *** */
#define FOURCC_strl VLC_FOURCC('s','t','r','l')
#define FOURCC_strh VLC_FOURCC('s','t','r','h')
#define FOURCC_strf VLC_FOURCC('s','t','r','f')
#define FOURCC_strd VLC_FOURCC('s','t','r','d')
#define AVIFOURCC_RIFF MKFOURCC('R','I','F','F')
#define AVIFOURCC_LIST MKFOURCC('L','I','S','T')
#define AVIFOURCC_JUNK MKFOURCC('J','U','N','K')
#define AVIFOURCC_AVI MKFOURCC('A','V','I',' ')
#define AVIFOURCC_WAVE MKFOURCC('W','A','V','E')
#define FOURCC_rec VLC_FOURCC('r','e','c',' ')
#define FOURCC_auds VLC_FOURCC('a','u','d','s')
#define FOURCC_vids VLC_FOURCC('v','i','d','s')
#define AVIFOURCC_avih MKFOURCC('a','v','i','h')
#define AVIFOURCC_hdrl MKFOURCC('h','d','r','l')
#define AVIFOURCC_movi MKFOURCC('m','o','v','i')
#define AVIFOURCC_idx1 MKFOURCC('i','d','x','1')
#define TWOCC_wb VLC_TWOCC('w','b')
#define TWOCC_db VLC_TWOCC('d','b')
#define TWOCC_dc VLC_TWOCC('d','c')
#define TWOCC_pc VLC_TWOCC('p','c')
#define AVIFOURCC_strl MKFOURCC('s','t','r','l')
#define AVIFOURCC_strh MKFOURCC('s','t','r','h')
#define AVIFOURCC_strf MKFOURCC('s','t','r','f')
#define AVIFOURCC_strd MKFOURCC('s','t','r','d')
#define AVIFOURCC_rec MKFOURCC('r','e','c',' ')
#define AVIFOURCC_auds MKFOURCC('a','u','d','s')
#define AVIFOURCC_vids MKFOURCC('v','i','d','s')
#define AVITWOCC_wb MKTWOCC('w','b')
#define AVITWOCC_db MKTWOCC('d','b')
#define AVITWOCC_dc MKTWOCC('d','c')
#define AVITWOCC_pc MKTWOCC('p','c')
/* *** codex stuff *** */
/* MPEG4 video */
#define FOURCC_DIVX VLC_FOURCC('D','I','V','X')
...
...
@@ -142,12 +147,12 @@ typedef struct bitmapinfoheader_s
typedef
struct
waveformatex_s
{
u16
i_formattag
;
u16
i_channels
;
u32
i_samplespersec
;
u32
i_avgbytespersec
;
u16
i_blockalign
;
u16
i_bitspersample
;
u16
i_formattag
;
// + 0x00
u16
i_channels
;
// + 0x02
u32
i_samplespersec
;
// + 0x04
u32
i_avgbytespersec
;
// + 0x08
u16
i_blockalign
;
// + 0x0c
u16
i_bitspersample
;
// + 0x0e
u16
i_size
;
/* the extra size in bytes */
}
waveformatex_t
;
...
...
@@ -210,15 +215,12 @@ typedef struct AVIESBuffer_s
typedef
struct
AVIStreamInfo_s
{
riffchunk_t
*
p_strl
;
riffchunk_t
*
p_strh
;
riffchunk_t
*
p_strf
;
riffchunk_t
*
p_strd
;
/* not used */
int
i_cat
;
/* AUDIO_ES, VIDEO_ES */
vlc_fourcc_t
i_fourcc
;
vlc_fourcc_t
i_codec
;
AVIStreamHeader_t
header
;
u8
i_cat
;
/* AUDIO_ES, VIDEO_ES */
bitmapinfoheader_t
video_format
;
waveformatex_t
audio_format
;
es_descriptor_t
*
p_es
;
...
...
modules/demux/avi/libioRIFF.c
View file @
4683e7ed
...
...
@@ -2,7 +2,7 @@
* libioRIFF.c : AVI file Stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: libioRIFF.c,v 1.
1 2002/08/04 17:23:42 sam
Exp $
* $Id: libioRIFF.c,v 1.
2 2002/09/18 23:34:28 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -31,7 +31,6 @@
#include "video.h"
#include "libioRIFF.h"
static
inline
u16
__GetWLE
(
byte_t
*
p_buff
)
{
return
(
(
*
p_buff
)
+
(
*
(
p_buff
+
1
)
<<
8
)
);
...
...
@@ -355,7 +354,7 @@ int RIFF_TestFileHeader( input_thread_t * p_input, riffchunk_t ** pp_riff, u32
{
return
(
-
1
);
}
if
(
(
*
pp_riff
)
->
i_id
!=
VLC_
FOURCC
(
'R'
,
'I'
,
'F'
,
'F'
)
if
(
(
*
pp_riff
)
->
i_id
!=
MK
FOURCC
(
'R'
,
'I'
,
'F'
,
'F'
)
||
(
*
pp_riff
)
->
i_type
!=
i_type
)
{
free
(
*
pp_riff
);
...
...
@@ -416,7 +415,7 @@ int RIFF_FindListChunk( input_thread_t *p_input, riffchunk_t **pp_riff, riffch
free
(
*
pp_riff
);
}
if
(
RIFF_FindChunk
(
p_input
,
VLC_
FOURCC
(
'L'
,
'I'
,
'S'
,
'T'
),
p_rifffather
)
!=
0
)
MK
FOURCC
(
'L'
,
'I'
,
'S'
,
'T'
),
p_rifffather
)
!=
0
)
{
return
(
-
1
);
}
...
...
modules/demux/avi/libioRIFF.h
View file @
4683e7ed
...
...
@@ -2,7 +2,7 @@
* libioRIFF.h : AVI file Stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: libioRIFF.h,v 1.
1 2002/08/04 17:23:42 sam
Exp $
* $Id: libioRIFF.h,v 1.
2 2002/09/18 23:34:28 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -19,12 +19,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#define MKFOURCC( a, b, c, d ) \
( ((u32)a) | ( ((u32)b) << 8 ) | ( ((u32)c) << 16 ) | ( ((u32)d) << 24 ) )
typedef
struct
riffchunk_s
{
u32
i_id
;
vlc_fourcc_t
i_id
;
u32
i_size
;
u32
i_type
;
vlc_fourcc_t
i_type
;
u32
i_pos
;
data_packet_t
*
p_data
;
u64
i_8bytes
;
/* it's the first 8 bytes after header
...
...
modules/demux/mp4/libmp4.c
View file @
4683e7ed
...
...
@@ -2,7 +2,7 @@
* libmp4.c : LibMP4 library for mp4 module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: libmp4.c,v 1.
5 2002/09/17 11:57:3
8 fenrir Exp $
* $Id: libmp4.c,v 1.
6 2002/09/18 23:34:2
8 fenrir Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -61,7 +61,8 @@
dst = GetDWBE( p_peek ); p_peek += 4; i_read -= 4
#define MP4_GETFOURCC( dst ) \
dst = GetDWLE( p_peek ); p_peek += 4; i_read -= 4
dst = VLC_FOURCC( p_peek[0], p_peek[1], p_peek[2], p_peek[3] ); \
p_peek += 4; i_read -= 4
#define MP4_GET8BYTES( dst ) \
dst = GetQWBE( p_peek ); p_peek += 8; i_read -= 8
...
...
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