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
2fc62e06
Commit
2fc62e06
authored
Jun 28, 2002
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
plugins/avi/avi.c : audio seems to be better.
parent
660db6d8
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
107 additions
and
130 deletions
+107
-130
plugins/avi/avi.c
plugins/avi/avi.c
+107
-130
No files found.
plugins/avi/avi.c
View file @
2fc62e06
...
...
@@ -2,7 +2,7 @@
* avi.c : AVI file Stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: avi.c,v 1.2
4 2002/06/27 19:05:17 sam
Exp $
* $Id: avi.c,v 1.2
5 2002/06/28 19:31:40 fenrir
Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -161,7 +161,7 @@ static void AVI_Parse_WaveFormatEx( waveformatex_t *h, byte_t *p_data )
static
inline
int
__
AVI_GetESTypeFromTwoCC
(
u16
i_type
)
static
inline
int
AVI_GetESTypeFromTwoCC
(
u16
i_type
)
{
switch
(
i_type
)
{
...
...
@@ -170,8 +170,9 @@ static inline int __AVI_GetESTypeFromTwoCC( u16 i_type )
case
(
TWOCC_dc
):
case
(
TWOCC_db
):
return
(
VIDEO_ES
);
}
default:
return
(
UNKNOWN_ES
);
}
}
static
int
AVI_AudioGetType
(
u32
i_type
)
...
...
@@ -221,7 +222,6 @@ static int AVI_VideoGetType( u32 i_type )
case
(
FOURCC_3IV1
):
return
(
MSMPEG4v3_VIDEO_ES
);
case
(
FOURCC_DIVX
):
case
(
FOURCC_divx
):
case
(
FOURCC_MP4S
):
...
...
@@ -331,43 +331,6 @@ static void AVI_PESBuffer_Flush( input_buffers_t *p_method_data,
static
void
__AVIFreeDemuxData
(
input_thread_t
*
p_input
)
{
int
i
;
demux_data_avi_file_t
*
p_avi_demux
;
p_avi_demux
=
(
demux_data_avi_file_t
*
)
p_input
->
p_demux_data
;
if
(
p_avi_demux
->
p_riff
!=
NULL
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_riff
);
if
(
p_avi_demux
->
p_hdrl
!=
NULL
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_hdrl
);
if
(
p_avi_demux
->
p_movi
!=
NULL
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_movi
);
if
(
p_avi_demux
->
p_idx1
!=
NULL
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_idx1
);
if
(
p_avi_demux
->
pp_info
!=
NULL
)
{
for
(
i
=
0
;
i
<
p_avi_demux
->
i_streams
;
i
++
)
{
if
(
p_avi_demux
->
pp_info
[
i
]
!=
NULL
)
{
if
(
p_avi_demux
->
pp_info
[
i
]
->
p_index
!=
NULL
)
{
free
(
p_avi_demux
->
pp_info
[
i
]
->
p_index
);
AVI_PESBuffer_Flush
(
p_input
->
p_method_data
,
p_avi_demux
->
pp_info
[
i
]
);
}
free
(
p_avi_demux
->
pp_info
[
i
]
);
}
}
free
(
p_avi_demux
->
pp_info
);
}
}
static
void
AVI_ParseStreamHeader
(
u32
i_id
,
int
*
i_number
,
int
*
i_type
)
{
int
c1
,
c2
,
c3
,
c4
;
...
...
@@ -502,7 +465,7 @@ static void __AVI_GetIndex( input_thread_t *p_input )
if
(
(
i_number
<
p_avi_demux
->
i_streams
)
&&
(
p_avi_demux
->
pp_info
[
i_number
]
->
i_cat
==
__
AVI_GetESTypeFromTwoCC
(
i_type
)))
AVI_GetESTypeFromTwoCC
(
i_type
)))
{
__AVI_AddEntryIndex
(
p_avi_demux
->
pp_info
[
i_number
],
&
index
);
...
...
@@ -551,10 +514,41 @@ static void __AVI_UpdateIndexOffset( input_thread_t *p_input )
#undef p_info
}
/*****************************************************************************
* AVIEnd: frees unused data
*****************************************************************************/
static
void
AVIEnd
(
input_thread_t
*
p_input
)
{
int
i
;
demux_data_avi_file_t
*
p_avi_demux
;
p_avi_demux
=
(
demux_data_avi_file_t
*
)
p_input
->
p_demux_data
;
#if 0
FILE *DumpAudio;
#endif
if
(
p_avi_demux
->
p_riff
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_riff
);
if
(
p_avi_demux
->
p_hdrl
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_hdrl
);
if
(
p_avi_demux
->
p_movi
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_movi
);
if
(
p_avi_demux
->
p_idx1
)
RIFF_DeleteChunk
(
p_input
,
p_avi_demux
->
p_idx1
);
if
(
p_avi_demux
->
pp_info
)
{
for
(
i
=
0
;
i
<
p_avi_demux
->
i_streams
;
i
++
)
{
if
(
p_avi_demux
->
pp_info
[
i
]
)
{
if
(
p_avi_demux
->
pp_info
[
i
]
->
p_index
)
{
free
(
p_avi_demux
->
pp_info
[
i
]
->
p_index
);
AVI_PESBuffer_Flush
(
p_input
->
p_method_data
,
p_avi_demux
->
pp_info
[
i
]
);
}
free
(
p_avi_demux
->
pp_info
[
i
]
);
}
}
free
(
p_avi_demux
->
pp_info
);
}
}
/*****************************************************************************
* AVIInit: check file and initializes AVI structures
...
...
@@ -589,7 +583,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
RIFF_TestFileHeader
(
p_input
,
&
p_riff
,
FOURCC_AVI
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Warn
(
p_input
,
"RIFF-AVI module discarded"
);
return
(
-
1
);
}
...
...
@@ -597,7 +591,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
RIFF_DescendChunk
(
p_input
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot look for subchunk"
);
return
(
-
1
);
}
...
...
@@ -605,7 +599,7 @@ static int AVIInit( input_thread_t *p_input )
/* it's a riff-avi file, so search for LIST-hdrl */
if
(
RIFF_FindListChunk
(
p_input
,
&
p_hdrl
,
p_riff
,
FOURCC_hdrl
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
LIST-hdrl
\"
"
);
return
(
-
1
);
}
...
...
@@ -613,7 +607,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
RIFF_DescendChunk
(
p_input
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot look for subchunk"
);
return
(
-
1
);
}
...
...
@@ -621,7 +615,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
RIFF_FindAndLoadChunk
(
p_input
,
p_hdrl
,
&
p_avih
,
FOURCC_avih
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
avih
\"
chunk"
);
return
(
-
1
);
}
...
...
@@ -631,7 +625,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
p_avi_demux
->
avih
.
i_streams
==
0
)
/* no stream found, perhaps it would be cool to find it */
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"no stream defined!"
);
return
(
-
1
);
}
...
...
@@ -641,14 +635,14 @@ static int AVIInit( input_thread_t *p_input )
if
(
input_InitStream
(
p_input
,
0
)
==
-
1
)
{
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot init stream"
);
return
(
-
1
);
}
if
(
input_AddProgram
(
p_input
,
0
,
0
)
==
NULL
)
{
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot add program"
);
return
(
-
1
);
}
...
...
@@ -661,7 +655,8 @@ static int AVIInit( input_thread_t *p_input )
p_avi_demux
->
pp_info
=
calloc
(
p_avi_demux
->
i_streams
,
sizeof
(
AVIStreamInfo_t
*
)
);
memset
(
p_avi_demux
->
pp_info
,
0
,
memset
(
p_avi_demux
->
pp_info
,
0
,
sizeof
(
AVIStreamInfo_t
*
)
*
p_avi_demux
->
i_streams
);
for
(
i
=
0
;
i
<
p_avi_demux
->
i_streams
;
i
++
)
...
...
@@ -674,7 +669,7 @@ static int AVIInit( input_thread_t *p_input )
&
p_strl
,
p_hdrl
,
FOURCC_strl
)
!=
0
)
||
(
RIFF_DescendChunk
(
p_input
)
!=
0
))
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
LIST-strl
\"
"
);
return
(
-
1
);
}
...
...
@@ -684,7 +679,7 @@ static int AVIInit( input_thread_t *p_input )
&
p_strh
,
FOURCC_strh
)
!=
0
)
{
RIFF_DeleteChunk
(
p_input
,
p_strl
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
strh
\"
"
);
return
(
-
1
);
}
...
...
@@ -697,7 +692,7 @@ static int AVIInit( input_thread_t *p_input )
&
p_strf
,
FOURCC_strf
)
!=
0
)
{
RIFF_DeleteChunk
(
p_input
,
p_strl
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot find
\"
strf
\"
"
);
return
(
-
1
);
}
...
...
@@ -706,7 +701,7 @@ static int AVIInit( input_thread_t *p_input )
{
RIFF_DeleteChunk
(
p_input
,
p_strf
);
RIFF_DeleteChunk
(
p_input
,
p_strl
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot go out (
\"
strl
\"
)"
);
return
(
-
1
);
}
...
...
@@ -771,7 +766,7 @@ static int AVIInit( input_thread_t *p_input )
/* go out of p_hdrl */
if
(
RIFF_AscendChunk
(
p_input
,
p_hdrl
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot go out (
\"
hdrl
\"
)"
);
return
(
-
1
);
}
...
...
@@ -780,7 +775,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
RIFF_FindListChunk
(
p_input
,
&
p_movi
,
p_riff
,
FOURCC_movi
)
!=
0
)
{
msg_Err
(
p_input
,
"cannot find
\"
LIST-movi
\"
"
);
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
return
(
-
1
);
}
p_avi_demux
->
p_movi
=
p_movi
;
...
...
@@ -797,7 +792,7 @@ static int AVIInit( input_thread_t *p_input )
RIFF_GoToChunk
(
p_input
,
p_avi_demux
->
p_movi
);
if
(
RIFF_DescendChunk
(
p_input
)
!=
0
)
{
__AVIFreeDemuxData
(
p_input
);
AVIEnd
(
p_input
);
msg_Err
(
p_input
,
"cannot go in (
\"
movi
\"
)"
);
return
(
-
1
);
}
...
...
@@ -832,7 +827,7 @@ static int AVIInit( input_thread_t *p_input )
if
(
(
p_avi_demux
->
p_info_video
==
NULL
)
)
{
p_avi_demux
->
p_info_video
=
p_info
;
/* TODO add test to see if a decoder has been foud */
/* TODO add test to see if a decoder has been fou
n
d */
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
input_SelectES
(
p_input
,
p_info
->
p_es
);
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
...
...
@@ -840,7 +835,7 @@ static int AVIInit( input_thread_t *p_input )
break
;
case
(
AUDIO_ES
):
msg_Dbg
(
p_input
,
"audio(0x%x) %d channels %dHz %dbits
%d bytes
"
,
msg_Dbg
(
p_input
,
"audio(0x%x) %d channels %dHz %dbits
(unit %d)
"
,
p_info
->
audio_format
.
i_formattag
,
p_info
->
audio_format
.
i_channels
,
p_info
->
audio_format
.
i_samplespersec
,
...
...
@@ -874,25 +869,12 @@ static int AVIInit( input_thread_t *p_input )
}
p_input
->
stream
.
p_selected_program
->
b_is_ok
=
1
;
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
#if 0
DumpAudio = fopen( "tmp.mp3", "w+" );
#endif
return
(
0
);
}
/*****************************************************************************
* AVIEnd: frees unused data
*****************************************************************************/
static
void
AVIEnd
(
input_thread_t
*
p_input
)
{
#if 0
fclose( DumpAudio );
#endif
__AVIFreeDemuxData
(
p_input
);
return
;
}
...
...
@@ -903,19 +885,19 @@ static void AVIEnd( input_thread_t *p_input )
static
inline
mtime_t
AVI_PTSToChunk
(
AVIStreamInfo_t
*
p_info
,
mtime_t
i_pts
)
{
return
(
(
mtime_t
)((
double
)
i_pts
*
(
double
)
p_info
->
header
.
i_rate
/
(
double
)
p_info
->
header
.
i_scale
/
(
double
)
1000000
.
0
)
);
return
(
(
mtime_t
)((
s64
)
i_pts
*
(
s64
)
p_info
->
header
.
i_rate
/
(
s64
)
p_info
->
header
.
i_scale
/
(
s64
)
100000
0
)
);
}
static
inline
mtime_t
AVI_PTSToByte
(
AVIStreamInfo_t
*
p_info
,
mtime_t
i_pts
)
{
return
(
(
mtime_t
)((
double
)
i_pts
*
(
double
)
p_info
->
header
.
i_samplesize
*
(
double
)
p_info
->
header
.
i_rate
/
(
double
)
p_info
->
header
.
i_scale
/
(
double
)
1000000
.
0
)
);
return
(
(
mtime_t
)((
s64
)
i_pts
*
(
s64
)
p_info
->
header
.
i_samplesize
*
(
s64
)
p_info
->
header
.
i_rate
/
(
s64
)
p_info
->
header
.
i_scale
/
(
s64
)
100000
0
)
);
}
static
mtime_t
AVI_GetPTS
(
AVIStreamInfo_t
*
p_info
)
...
...
@@ -924,19 +906,19 @@ static mtime_t AVI_GetPTS( AVIStreamInfo_t *p_info )
/* be careful to *1000000 before round ! */
if
(
p_info
->
header
.
i_samplesize
!=
0
)
{
return
(
(
mtime_t
)(
(
double
)
1000000
.
0
*
(
double
)(
p_info
->
p_index
[
p_info
->
i_idxposc
].
i_lengthtotal
+
return
(
(
mtime_t
)(
(
s64
)
100000
0
*
(
s64
)(
p_info
->
p_index
[
p_info
->
i_idxposc
].
i_lengthtotal
+
p_info
->
i_idxposb
)
*
(
double
)
p_info
->
header
.
i_scale
/
(
double
)
p_info
->
header
.
i_rate
/
(
double
)
p_info
->
header
.
i_samplesize
)
);
(
s64
)
p_info
->
header
.
i_scale
/
(
s64
)
p_info
->
header
.
i_rate
/
(
s64
)
p_info
->
header
.
i_samplesize
)
);
}
else
{
return
(
(
mtime_t
)(
(
double
)
1000000
.
0
*
(
double
)(
p_info
->
i_idxposc
)
*
(
double
)
p_info
->
header
.
i_scale
/
(
double
)
p_info
->
header
.
i_rate
)
);
return
(
(
mtime_t
)(
(
s64
)
100000
0
*
(
s64
)(
p_info
->
i_idxposc
)
*
(
s64
)
p_info
->
header
.
i_scale
/
(
s64
)
p_info
->
header
.
i_rate
)
);
}
}
...
...
@@ -1034,9 +1016,9 @@ static int __AVI_GetChunk( input_thread_t *p_input,
while
(
p_info
->
p_pes_first
)
{
if
(
(
p_info
->
p_pes_first
->
i_posc
==
p_info
->
i_idxposc
)
/* &&( p_info->i_idxposb == p_info->p_pes_first->i_posb ) ) */
&&
(
p_info
->
i_idxposb
>=
p_info
->
p_pes_first
->
i_posb
)
&&
(
p_info
->
i_idxposb
<
p_info
->
p_pes_first
->
i_posb
+
p_info
->
p_pes_first
->
p_pes
->
i_pes_size
)
)
&&
(
p_info
->
i_idxposb
<
p_info
->
p_pes_first
->
i_posb
+
p_info
->
p_pes_first
->
p_pes
->
i_pes_size
)
)
{
return
(
1
);
...
...
@@ -1051,7 +1033,8 @@ static int __AVI_GetChunk( input_thread_t *p_input,
p_other
=
(
p_info
==
p_video
)
?
p_audio
:
p_video
;
if
(
p_other
)
{
i_other_ck
=
p_other
->
p_pes_last
?
p_other
->
p_pes_last
->
i_posc
:
p_other
->
i_idxposc
-
1
;
i_other_ck
=
p_other
->
p_pes_last
?
p_other
->
p_pes_last
->
i_posc
:
p_other
->
i_idxposc
-
1
;
}
else
{
...
...
@@ -1185,7 +1168,7 @@ static int __AVI_GetChunk( input_thread_t *p_input,
AVI_ParseStreamHeader
(
p_ck
->
i_id
,
&
i
,
&
i_type
);
// msg_Dbg( p_input, "ck: %4.4s", &p_ck->i_id );
if
(
(
i
>=
p_avi_demux
->
i_streams
)
||
(
__
AVI_GetESTypeFromTwoCC
(
i_type
)
!=
p_info_i
->
i_cat
)
)
||
(
AVI_GetESTypeFromTwoCC
(
i_type
)
!=
p_info_i
->
i_cat
)
)
{
if
(
RIFF_NextChunk
(
p_input
,
p_avi_demux
->
p_movi
)
!=
0
)
{
...
...
@@ -1424,9 +1407,6 @@ static pes_packet_t *AVI_ReadStreamBytesInPES( input_thread_t *p_input,
p_info
->
i_idxposc
++
;
}
}
#if 0
fwrite( p_data->p_payload_start, 1, i_count, DumpAudio );
#endif
return
(
p_pes
);
}
...
...
@@ -1509,27 +1489,25 @@ static void AVI_SynchroReInit( input_thread_t *p_input )
#define p_info_video p_avi_demux->p_info_video
#define p_info_audio p_avi_demux->p_info_audio
if
(
(
p_info_video
)
&&
(
p_info_audi
o
)
)
if
(
(
!
p_info_audio
)
||
(
!
p_info_vide
o
)
)
{
return
;
}
/* now resynch audio video video */
/*don't care of AVIF_KEYFRAME */
if
(
!
p_info_audio
->
header
.
i_samplesize
)
{
int
i_chunk
=
AVI_PTSToChunk
(
p_info_audio
,
AVI_GetPTS
(
p_info_video
));
AVI_SetStreamChunk
(
p_input
,
p_info_audio
,
i_chunk
);
AVI_PTSToChunk
(
p_info_audio
,
AVI_GetPTS
(
p_info_video
)
)
);
}
else
{
int
i_byte
=
AVI_PTSToByte
(
p_info_audio
,
AVI_GetPTS
(
p_info_video
)
)
;
AVI_SetStreamBytes
(
p_input
,
p_info_audio
,
i_byte
);
}
AVI_PTSToByte
(
p_info_audio
,
AVI_GetPTS
(
p_info_video
)
)
);
}
#undef p_info_video
#undef p_info_audio
...
...
@@ -1613,7 +1591,6 @@ static inline void AVI_DecodePES( input_thread_t *p_input,
pes_packet_t
*
p_pes_next
;
/* input_decode want only one pes, but AVI_GetFrameInPES give
multiple pes so send one by one */
/* we now that p_info != NULL */
while
(
p_pes
)
{
p_pes_next
=
p_pes
->
p_next
;
...
...
@@ -1632,6 +1609,7 @@ static inline void AVI_DecodePES( input_thread_t *p_input,
*****************************************************************************
* Returns -1 in case of error, 0 in case of EOF, 1 otherwise
*****************************************************************************/
static
int
AVIDemux
(
input_thread_t
*
p_input
)
{
int
i
;
...
...
@@ -1651,7 +1629,7 @@ static int AVIDemux( input_thread_t *p_input )
for
(
i
=
0
;
i
<
p_avi_demux
->
i_streams
;
i
++
)
{
if
(
(
p_avi_demux
->
pp_info
[
i
]
->
i_cat
==
VIDEO_ES
)
&&
(
p_avi_demux
->
pp_info
[
i
]
->
p_es
->
p_decoder_fifo
!=
NULL
)
)
&&
(
p_avi_demux
->
pp_info
[
i
]
->
p_es
->
p_decoder_fifo
)
)
{
p_avi_demux
->
p_info_video
=
p_avi_demux
->
pp_info
[
i
];
p_avi_demux
->
p_info_video
->
b_selected
=
1
;
...
...
@@ -1666,7 +1644,7 @@ static int AVIDemux( input_thread_t *p_input )
for
(
i
=
0
;
i
<
p_avi_demux
->
i_streams
;
i
++
)
{
if
(
(
p_avi_demux
->
pp_info
[
i
]
->
i_cat
==
AUDIO_ES
)
&&
(
p_avi_demux
->
pp_info
[
i
]
->
p_es
->
p_decoder_fifo
!=
NULL
)
)
&&
(
p_avi_demux
->
pp_info
[
i
]
->
p_es
->
p_decoder_fifo
)
)
{
p_avi_demux
->
p_info_audio
=
p_avi_demux
->
pp_info
[
i
];
p_avi_demux
->
p_info_audio
->
b_selected
=
1
;
...
...
@@ -1736,7 +1714,7 @@ static int AVIDemux( input_thread_t *p_input )
/* wait for the good time */
input_ClockManageRef
(
p_input
,
p_input
->
stream
.
p_selected_program
,
p_avi_demux
->
i_pcr
);
p_avi_demux
->
i_pcr
/*- DEFAULT_PTS_DELAY / 2 */
);
/* calculate pcr, time when we must read the next data */
/* 9/100 kludge ->need to convert to 1/1000000 clock unit to 1/90000 */
if
(
p_info_slave
)
...
...
@@ -1774,6 +1752,5 @@ static int AVIDemux( input_thread_t *p_input )
/* at the end ? */
return
(
p_pes
?
1
:
0
);
/* return( p_info_master->i_idxposc > p_info_master->i_idxnb ? 0 : 1 );*/
}
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