Commit 0a883937 authored by Sam Hocevar's avatar Sam Hocevar

* added a few sanity checks in the audio mpeg and ac3 decoders.

  * temporarily got rid of vlc.channels.
  * added notice in debian/control about unencrypted DVDs.
  * fixed PowerPC .deb build.
parent 33f9e173
Tue, 22 Aug 2000 01:31:58 +0200
0.1.99h :
* fixed the sound issue under beos
......@@ -15,8 +16,12 @@
* fixed a Makefile bug which removed the CVS directory.
* removed the frame statistics output.
* removed a verbose message in intf_sdl.c.
* added a few sanity checks in the audio mpeg and ac3 decoders.
* temporarily got rid of vlc.channels.
* added notice in debian/control about unencrypted DVDs.
* fixed PowerPC .deb build.
Wed Aug 16 01:07:14 CEST 2000
Wed, 16 Aug 2000 01:07:14 +0200
0.1.99g :
* removed all "*vlc" aliases except "gvlc" and "fbvlc". The other sucked.
......@@ -35,7 +40,7 @@ Wed Aug 16 01:07:14 CEST 2000
* added request for ALSA support in the TODO list.
* changed "pentiumpro" to "ppro" in the ./configure, it was misleading.
Tue Aug 8 11:24:01 CEST 2000
Tue, 8 Aug 2000 11:24:01 +0200
0.1.99f :
* plugin detection now works
......@@ -47,14 +52,14 @@ Tue Aug 8 11:24:01 CEST 2000
* borrowed linuxvideo's MMX motion compensation
* fixed an undefined symbol in the MMX YUV plugin
Thu Jul 20 15:14:06 CEST 2000
Thu, 20 Jul 2000 15:14:06 +0200
0.1.99e :
* new bitstream syntax and slight performance increase
* BeOS build fix
* removed the sample code from the reference decoder
Wed Jul 12 01:24:40 CEST 2000
Wed, 12 Jul 2000 01:24:40 +0200
0.1.99d :
* fixed RPM build
......@@ -77,7 +82,7 @@ Wed Jul 12 01:24:40 CEST 2000
* fixed an endianness problem which occured on iMacs
* fixed the build for the Mandrake distribution
Sun Jun 18 18:54:48 CEST 2000
Sun, 18 Jun 2000 18:54:48 +0200
0.1.99c :
* fixed Makefile.in for debug version
......@@ -90,14 +95,14 @@ Sun Jun 18 18:54:48 CEST 2000
* fixed a warning in ac3_exponent.c
* automatic support for .rpm and .deb building
Sat Jun 17 03:35:02 CEST 2000
Sat, 17 Jun 2000 03:35:02 +0200
0.1.99b :
* fixed a bug preventing to quit when run with no arguments
* new VLAN changing code
* created the ChangeLog file :)
Thu Jun 15 20:48:54 CEST 2000
Thu, 15 Jun 2000 20:48:54 +0200
0.1.99a :
* first public release
......
......@@ -369,7 +369,7 @@ distclean: clean
rm -f config.status config.cache config.log
rm -f gmon.out core build-stamp
rm -rf .dep
rm -rf debian/tmp debian/*.debhelper debian/*.substvars
rm -rf debian/tmp debian/files debian/*.debhelper debian/*.substvars
find debian/* -type d -maxdepth 0 -name 'vlc-*' | xargs rm -rf
install:
......@@ -392,7 +392,7 @@ show:
snapshot:
rm -rf /tmp/${SNAPSHOTDIR}
mkdir /tmp/${SNAPSHOTDIR}
cp -r * /tmp/${SNAPSHOTDIR}
cp -a * /tmp/${SNAPSHOTDIR}
(cd /tmp/${SNAPSHOTDIR} ; \
make distclean ; \
find . -type d -name CVS | xargs rm -rf ; \
......
......@@ -3055,7 +3055,7 @@ fi
# Check whether --enable-mmx or --disable-mmx was given.
if test "${enable_mmx+set}" = set; then
enableval="$enable_mmx"
if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx "; fi
if test x`echo $ARCH | cut -b3-4` = x86 ; then if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx "; fi; fi
fi
......
......@@ -67,7 +67,7 @@ AC_ARG_ENABLE(ppro,
[ if test x$enableval = xyes; then ARCH=${ARCH}" ppro"; fi ])
AC_ARG_ENABLE(mmx,
[ --enable-mmx Enable MMX optimizations (default is no)],
[ if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx "; fi ])
[ if test x`echo $ARCH | cut -b3-4` = x86 ; then if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx "; fi; fi ])
SYS=${host_os}
......
vlc (0.1.99h) unstable; urgency=low
* added support for the SDL vout : the --display fullscreen allows
fullscreen when possible. Disabled by default.
* updated debian directory to build vlc-sdl.
* removed CCFLAGS flags which were improperly used.
* added hints for powerpc build.
* fixed the input_file exit bug.
* removed the frame statistics output.
* removed a verbose message in intf_sdl.c.
* added a few sanity checks in the audio mpeg and ac3 decoders.
* temporarily got rid of vlc.channels.
-- Samuel Hocevar <sam@via.ecp.fr> Tue, 22 Aug 2000 01:31:58 +0200
vlc (0.1.99g) unstable; urgency=low
* removed all "*vlc" aliases except "gvlc" and "fbvlc". The other sucked.
......
......@@ -10,8 +10,8 @@ Depends: ${shlibs:Depends}
Description: VideoLAN Client - a free MPEG2 and DVD player
VideoLAN is a free MPEG2 software solution.
.
This is the VideoLAN Client. It plays MPEG2 files, DVDs, or MPEG2
streams from a network source.
This is the VideoLAN Client. It plays MPEG2 files, unencrypted DVDs,
or MPEG2 streams from a network source.
Package: vlc-gnome
Architecture: any
......@@ -20,7 +20,7 @@ Description: Gnome VideoLAN Client - a free MPEG2 and DVD player for Gnome
VideoLAN is a free MPEG2 software solution.
.
This is the Gnome version of the VideoLAN Client. It plays MPEG2 files,
DVDs, or MPEG2 streams from a network source.
unencrypted DVDs, or MPEG2 streams from a network source.
Package: vlc-fb
Architecture: any
......@@ -29,7 +29,7 @@ Description: Framebuffer VideoLAN Client - a free MPEG2 and DVD player
VideoLAN is a free MPEG2 software solution.
.
This is the Linux framebuffer version of the VideoLAN Client. It plays
MPEG2 files, DVDs, or MPEG2 streams from a network source.
MPEG2 files, unencrypted DVDs, or MPEG2 streams from a network source.
Package: vlc-ggi
Architecture: any
......
......@@ -79,7 +79,8 @@ ac3dec_thread_t * ac3dec_CreateThread (input_thread_t * p_input)
intf_DbgMsg( "ac3dec debug: creating ac3 decoder thread\n" );
/* Allocate the memory needed to store the thread's structure */
if ((p_ac3dec = (ac3dec_thread_t *)malloc (sizeof(ac3dec_thread_t))) == NULL) {
if ((p_ac3dec = (ac3dec_thread_t *)malloc (sizeof(ac3dec_thread_t))) == NULL)
{
intf_ErrMsg ( "ac3dec error: not enough memory "
"for ac3dec_CreateThread() to create the new thread\n");
return NULL;
......@@ -114,7 +115,8 @@ ac3dec_thread_t * ac3dec_CreateThread (input_thread_t * p_input)
p_ac3dec->p_aout_fifo = NULL;
/* Spawn the ac3 decoder thread */
if (vlc_thread_create(&p_ac3dec->thread_id, "ac3 decoder", (vlc_thread_func_t)RunThread, (void *)p_ac3dec)) {
if (vlc_thread_create(&p_ac3dec->thread_id, "ac3 decoder", (vlc_thread_func_t)RunThread, (void *)p_ac3dec))
{
intf_ErrMsg( "ac3dec error: can't spawn ac3 decoder thread\n" );
free (p_ac3dec);
return NULL;
......@@ -159,8 +161,10 @@ static int InitThread (ac3dec_thread_t * p_ac3dec)
/* Our first job is to initialize the bit stream structure with the
* beginning of the input stream */
vlc_mutex_lock (&p_ac3dec->fifo.data_lock);
while (DECODER_FIFO_ISEMPTY(p_ac3dec->fifo)) {
if (p_ac3dec->b_die) {
while (DECODER_FIFO_ISEMPTY(p_ac3dec->fifo))
{
if (p_ac3dec->b_die)
{
vlc_mutex_unlock (&p_ac3dec->fifo.data_lock);
return -1;
}
......@@ -182,7 +186,8 @@ static int InitThread (ac3dec_thread_t * p_ac3dec)
aout_fifo.l_frame_size = AC3DEC_FRAME_SIZE;
/* Creating the audio output fifo */
if ((p_ac3dec->p_aout_fifo = aout_CreateFifo(p_ac3dec->p_aout, &aout_fifo)) == NULL) {
if ((p_ac3dec->p_aout_fifo = aout_CreateFifo(p_ac3dec->p_aout, &aout_fifo)) == NULL)
{
return -1;
}
......@@ -202,7 +207,8 @@ static void RunThread (ac3dec_thread_t * p_ac3dec)
msleep (INPUT_PTS_DELAY);
/* Initializing the ac3 decoder thread */
if (InitThread (p_ac3dec)) /* XXX?? */ {
if (InitThread (p_ac3dec)) /* XXX?? */
{
p_ac3dec->b_error = 1;
}
......@@ -211,7 +217,8 @@ static void RunThread (ac3dec_thread_t * p_ac3dec)
/* ac3 decoder thread's main loop */
/* FIXME : do we have enough room to store the decoded frames ?? */
while ((!p_ac3dec->b_die) && (!p_ac3dec->b_error)) {
while ((!p_ac3dec->b_die) && (!p_ac3dec->b_error))
{
s16 * buffer;
ac3_sync_info_t sync_info;
......@@ -224,35 +231,51 @@ static void RunThread (ac3dec_thread_t * p_ac3dec)
p_byte_stream = ac3_byte_stream (&p_ac3dec->ac3_decoder);
/* first read till next ac3 magic header */
do {
do
{
ac3_byte_stream_next (p_byte_stream);
} while ((!p_ac3dec->sync_ptr) &&
(!p_ac3dec->b_die) &&
(!p_ac3dec->b_error));
/* skip the specified number of bytes */
if( p_ac3dec->b_die || p_ac3dec->b_error )
{
goto bad_frame;
}
ptr = p_ac3dec->sync_ptr;
while (--ptr && (!p_ac3dec->b_die) && (!p_ac3dec->b_error)) {
if (p_byte_stream->p_byte >= p_byte_stream->p_end) {
while (--ptr && (!p_ac3dec->b_die) && (!p_ac3dec->b_error))
{
if (p_byte_stream->p_byte >= p_byte_stream->p_end)
{
ac3_byte_stream_next (p_byte_stream);
}
p_byte_stream->p_byte++;
}
/* we are in sync now */
if( p_ac3dec->b_die || p_ac3dec->b_error )
{
goto bad_frame;
}
/* we are in sync now */
sync = 1;
p_ac3dec->sync_ptr = 0;
}
if (DECODER_FIFO_START(p_ac3dec->fifo)->b_has_pts) {
if (DECODER_FIFO_START(p_ac3dec->fifo)->b_has_pts)
{
p_ac3dec->p_aout_fifo->date[p_ac3dec->p_aout_fifo->l_end_frame] = DECODER_FIFO_START(p_ac3dec->fifo)->i_pts;
DECODER_FIFO_START(p_ac3dec->fifo)->b_has_pts = 0;
} else {
}
else
{
p_ac3dec->p_aout_fifo->date[p_ac3dec->p_aout_fifo->l_end_frame] = LAST_MDATE;
}
if (ac3_sync_frame (&p_ac3dec->ac3_decoder, &sync_info)) {
if (ac3_sync_frame (&p_ac3dec->ac3_decoder, &sync_info))
{
sync = 0;
goto bad_frame;
}
......@@ -261,7 +284,8 @@ static void RunThread (ac3dec_thread_t * p_ac3dec)
buffer = ((s16 *)p_ac3dec->p_aout_fifo->buffer) + (p_ac3dec->p_aout_fifo->l_end_frame * AC3DEC_FRAME_SIZE);
if (ac3_decode_frame (&p_ac3dec->ac3_decoder, buffer)) {
if (ac3_decode_frame (&p_ac3dec->ac3_decoder, buffer))
{
sync = 0;
goto bad_frame;
}
......@@ -275,7 +299,8 @@ static void RunThread (ac3dec_thread_t * p_ac3dec)
}
/* If b_error is set, the ac3 decoder thread enters the error loop */
if (p_ac3dec->b_error) {
if (p_ac3dec->b_error)
{
ErrorThread (p_ac3dec);
}
......@@ -293,9 +318,11 @@ static void ErrorThread (ac3dec_thread_t * p_ac3dec)
vlc_mutex_lock (&p_ac3dec->fifo.data_lock);
/* Wait until a `die' order is sent */
while (!p_ac3dec->b_die) {
while (!p_ac3dec->b_die)
{
/* Trash all received PES packets */
while (!DECODER_FIFO_ISEMPTY(p_ac3dec->fifo)) {
while (!DECODER_FIFO_ISEMPTY(p_ac3dec->fifo))
{
input_NetlistFreePES (p_ac3dec->p_input, DECODER_FIFO_START(p_ac3dec->fifo));
DECODER_FIFO_INCSTART (p_ac3dec->fifo);
}
......@@ -316,7 +343,8 @@ static void EndThread (ac3dec_thread_t * p_ac3dec)
intf_DbgMsg ("ac3dec debug: destroying ac3 decoder thread %p\n", p_ac3dec);
/* If the audio output fifo was created, we destroy it */
if (p_ac3dec->p_aout_fifo != NULL) {
if (p_ac3dec->p_aout_fifo != NULL)
{
aout_DestroyFifo (p_ac3dec->p_aout_fifo);
/* Make sure the output thread leaves the NextFrame() function */
......@@ -337,10 +365,12 @@ void ac3_byte_stream_next (ac3_byte_stream_t * p_byte_stream)
/* We are looking for the next TS packet that contains real data,
* and not just a PES header */
do {
do
{
/* We were reading the last TS packet of this PES packet... It's
* time to jump to the next PES packet */
if (p_ac3dec->p_ts->p_next_ts == NULL) {
if (p_ac3dec->p_ts->p_next_ts == NULL)
{
int ptr;
/* We are going to read/write the start and end indexes of the
......@@ -349,7 +379,8 @@ void ac3_byte_stream_next (ac3_byte_stream_t * p_byte_stream)
vlc_mutex_lock (&p_ac3dec->fifo.data_lock);
/* Is the input thread dying ? */
if (p_ac3dec->p_input->b_die) {
if (p_ac3dec->p_input->b_die)
{
vlc_mutex_unlock (&(p_ac3dec->fifo.data_lock));
return;
}
......@@ -363,10 +394,12 @@ void ac3_byte_stream_next (ac3_byte_stream_t * p_byte_stream)
DECODER_FIFO_INCSTART (p_ac3dec->fifo);
while (DECODER_FIFO_ISEMPTY(p_ac3dec->fifo)) {
while (DECODER_FIFO_ISEMPTY(p_ac3dec->fifo))
{
vlc_cond_wait (&p_ac3dec->fifo.data_wait, &p_ac3dec->fifo.data_lock);
if (p_ac3dec->p_input->b_die) {
if (p_ac3dec->p_input->b_die)
{
vlc_mutex_unlock (&(p_ac3dec->fifo.data_lock));
return;
}
......@@ -385,10 +418,10 @@ void ac3_byte_stream_next (ac3_byte_stream_t * p_byte_stream)
/* We can release the fifo's data lock */
vlc_mutex_unlock (&p_ac3dec->fifo.data_lock);
}
/* Perhaps the next TS packet of the current PES packet contains
* real data (ie its payload's size is greater than 0) */
else {
else
{
p_ac3dec->p_ts = p_ac3dec->p_ts->p_next_ts;
}
} while (p_ac3dec->p_ts->i_payload_start == p_ac3dec->p_ts->i_payload_end);
......
......@@ -245,9 +245,14 @@ static void RunThread (adec_thread_t * p_adec)
do
{
adec_byte_stream_next ( p_byte_stream );
} while ( 0 && (!p_adec->align) && (!p_adec->b_die)
} while ( (!p_adec->align) && (!p_adec->b_die)
&& (!p_adec->b_error) );
if( p_adec->b_die || p_adec->b_error )
{
goto bad_frame;
}
sync = 1;
}
......
......@@ -509,6 +509,9 @@ static int LoadChannels( intf_thread_t *p_intf, char *psz_filename )
/* Set default value */
p_intf->p_channel = NULL;
/* FIXME: channels are disabled */
return( 0 );
/* Open file */
p_file = fopen( psz_filename, "r" );
if( p_file == NULL )
......
0;Ptyx (caribou);20;caribou.via.ecp.fr;
1;Sam (bofh);20;bofh.via.ecp.fr;
2;Polux (dressler);20;dressler.via.ecp.fr;
3;Stef (kim);20;kim.via.ecp.fr;
#4;File;10;/home/sam/videolan/flux/bandesannonce.vob;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment