Commit bfc4f0f5 authored by Gildas Bazin's avatar Gildas Bazin

* ALL: New ogg demux and vorbis codec modules for preliminary support of
   ogg/vorbis streams.
parent 0330bbed
...@@ -48,7 +48,8 @@ E: gbazin@netcourrier.com ...@@ -48,7 +48,8 @@ E: gbazin@netcourrier.com
C: gbazin C: gbazin
D: mingw32 port, various win32 fixes D: mingw32 port, various win32 fixes
D: DirectX audio and video output, win32 WaveOut audio output D: DirectX audio and video output, win32 WaveOut audio output
D: a52 decoder using liba52 D: a52 decoder using liba52 and vorbis decoder using libvorbis
D: ogg demultiplexer
D: Configuration file infrastructure D: Configuration file infrastructure
S: France S: France
......
# $Id: MAINTAINERS,v 1.2 2002/08/16 14:30:39 bozo Exp $ # $Id: MAINTAINERS,v 1.3 2002/10/23 23:17:45 gbazin Exp $
# #
# VLC MAINTAINERS # VLC MAINTAINERS
# #
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
- AC3 SPDIF : [stef] - AC3 SPDIF : [stef]
- A/52 : [gibalou] ([meuuh]) - A/52 : [gibalou] ([meuuh])
- SPU : [sam] - SPU : [sam]
- Ogg/Vorbis : Xavier Maillard - Ogg/Vorbis : [gibalou]
* DOCUMENTATION * DOCUMENTATION
......
# $Id: STATUS,v 1.4 2002/08/16 14:30:39 bozo Exp $ # $Id: STATUS,v 1.5 2002/10/23 23:17:45 gbazin Exp $
# #
# VLC STATUS # VLC STATUS
# #
...@@ -46,8 +46,6 @@ Jon Lech Johansen <jon-vl@nanocrew.net> : ...@@ -46,8 +46,6 @@ Jon Lech Johansen <jon-vl@nanocrew.net> :
Xavier Maillard <zedek@fxgsproject.org> : Xavier Maillard <zedek@fxgsproject.org> :
- Xinerama fullscreen support - Xinerama fullscreen support
ETA : completed ETA : completed
- Ogg/Vorbis decoder plug-in
ETA : soon
Christophe Massiot <massiot@via.ecp.fr> : Christophe Massiot <massiot@via.ecp.fr> :
- Audio output 3 - Audio output 3
......
...@@ -478,7 +478,7 @@ Description: Ogg/Vorbis audio decoder support ...@@ -478,7 +478,7 @@ Description: Ogg/Vorbis audio decoder support
The Ogg/Vorbis audio format is a free alternative to the patent-encumbered The Ogg/Vorbis audio format is a free alternative to the patent-encumbered
MP3 format. The system packets are quite different than the MPEG ones, so MP3 format. The system packets are quite different than the MPEG ones, so
adding support for it would require a lot of code rewrite. adding support for it would require a lot of code rewrite.
Status: In the works (Xavier Maillard) Status: Done 24 Nov 2002 (gbazin)
Task: 0x23 Task: 0x23
Difficulty: Guru Difficulty: Guru
......
...@@ -1071,6 +1071,19 @@ then ...@@ -1071,6 +1071,19 @@ then
PLUGINS="${PLUGINS} aac" PLUGINS="${PLUGINS} aac"
fi fi
dnl
dnl ogg plugin
dnl
AC_ARG_ENABLE(ogg,
[ --enable-ogg Ogg demux support (default enabled)])
if test "x${enable_ogg}" != "xno"
then
AC_CHECK_HEADERS(ogg/ogg.h, [
PLUGINS="${PLUGINS} ogg"
LDFLAGS_ogg="${LDFLAGS_ogg} -logg"
],[])
fi
dnl dnl
dnl Codec plugins dnl Codec plugins
dnl dnl
...@@ -1355,20 +1368,6 @@ then ...@@ -1355,20 +1368,6 @@ then
PLUGINS="${PLUGINS} cinepak" PLUGINS="${PLUGINS} cinepak"
fi fi
dnl
dnl ogg vorbis plugin
dnl
AC_ARG_ENABLE(vorbis,
[ --enable-vorbis Ogg/Vorbis decoder support (default enabled)])
if test "x${enable_vorbis}" != "xno"
then
AC_CHECK_HEADERS(ogg/ogg.h, [
dnl disabled for the moment
#PLUGINS="${PLUGINS} ogg vorbis"
LDFLAGS_vorbis="${LDFLAGS_vorbis} -lvorbis"
],[])
fi
dnl dnl
dnl DV plugin dnl DV plugin
dnl dnl
...@@ -1382,6 +1381,19 @@ then ...@@ -1382,6 +1381,19 @@ then
],[]) ],[])
fi fi
dnl
dnl Vorbis plugin
dnl
AC_ARG_ENABLE(vorbis,
[ --enable-vorbis Vorbis decoder support (default enabled)])
if test "x${enable_vorbis}" != "xno"
then
AC_CHECK_HEADERS(vorbis/codec.h, [
PLUGINS="${PLUGINS} vorbis"
LDFLAGS_vorbis="${LDFLAGS_vorbis} -lvorbis"
],[])
fi
dnl dnl
dnl Video plugins dnl Video plugins
dnl dnl
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ext-dec.h: structures exported to the VideoLAN decoders * input_ext-dec.h: structures exported to the VideoLAN decoders
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: input_ext-dec.h,v 1.72 2002/10/21 10:46:34 fenrir Exp $ * $Id: input_ext-dec.h,v 1.73 2002/10/23 23:17:45 gbazin Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Kaempf <maxx@via.ecp.fr> * Michel Kaempf <maxx@via.ecp.fr>
...@@ -209,6 +209,8 @@ struct bit_stream_t ...@@ -209,6 +209,8 @@ struct bit_stream_t
*****************************************************************************/ *****************************************************************************/
VLC_EXPORT( void, InitBitstream, ( bit_stream_t *, decoder_fifo_t *, void ( * )( bit_stream_t *, vlc_bool_t ), void * p_callback_arg ) ); VLC_EXPORT( void, InitBitstream, ( bit_stream_t *, decoder_fifo_t *, void ( * )( bit_stream_t *, vlc_bool_t ), void * p_callback_arg ) );
VLC_EXPORT( vlc_bool_t, NextDataPacket, ( decoder_fifo_t *, data_packet_t ** ) ); VLC_EXPORT( vlc_bool_t, NextDataPacket, ( decoder_fifo_t *, data_packet_t ** ) );
VLC_EXPORT( pes_packet_t *, GetPES, ( decoder_fifo_t * ) );
VLC_EXPORT( pes_packet_t *, NextPES, ( decoder_fifo_t * ) );
VLC_EXPORT( void, BitstreamNextDataPacket, ( bit_stream_t * ) ); VLC_EXPORT( void, BitstreamNextDataPacket, ( bit_stream_t * ) );
VLC_EXPORT( u32, UnalignedShowBits, ( bit_stream_t *, unsigned int ) ); VLC_EXPORT( u32, UnalignedShowBits, ( bit_stream_t *, unsigned int ) );
VLC_EXPORT( void, UnalignedRemoveBits, ( bit_stream_t * ) ); VLC_EXPORT( void, UnalignedRemoveBits, ( bit_stream_t * ) );
......
List of vlc plugins List of vlc plugins
$Id: LIST,v 1.2 2002/09/15 20:54:12 jpsaman Exp $ $Id: LIST,v 1.3 2002/10/23 23:17:45 gbazin Exp $
* a52_system: input module for A52 decapsulation. * a52_system: input module for A52 decapsulation.
...@@ -125,6 +125,8 @@ $Id: LIST,v 1.2 2002/09/15 20:54:12 jpsaman Exp $ ...@@ -125,6 +125,8 @@ $Id: LIST,v 1.2 2002/09/15 20:54:12 jpsaman Exp $
* null: a module with no capabilities. * null: a module with no capabilities.
* ogg: input module for OGG decapsulation.
* qt: interface module using the Qt widget set. * qt: interface module using the Qt widget set.
* qte: video output module for Qt Embedded. * qte: video output module for Qt Embedded.
...@@ -137,6 +139,8 @@ $Id: LIST,v 1.2 2002/09/15 20:54:12 jpsaman Exp $ ...@@ -137,6 +139,8 @@ $Id: LIST,v 1.2 2002/09/15 20:54:12 jpsaman Exp $
* vcd: input module for accessing Video CDs. * vcd: input module for accessing Video CDs.
* vorbis: a vorbis audio decoder using the libvorbis library.
* waveout: simple audio output module for Windows. * waveout: simple audio output module for Windows.
* x11: video output module using the X11 API. * x11: video output module using the X11 API.
......
SOURCES_a52 = modules/codec/a52.c SOURCES_a52 = modules/codec/a52.c
SOURCES_lpcm = modules/codec/lpcm.c SOURCES_lpcm = modules/codec/lpcm.c
SOURCES_araw = modules/codec/araw.c SOURCES_araw = modules/codec/araw.c
SOURCES_vorbis = modules/codec/vorbis.c
SOURCES_a52sys = modules/demux/a52sys.c SOURCES_a52sys = modules/demux/a52sys.c
SOURCES_ogg = modules/demux/ogg.c
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ext-dec.c: services to the decoders * input_ext-dec.c: services to the decoders
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2001 VideoLAN * Copyright (C) 1998-2001 VideoLAN
* $Id: input_ext-dec.c,v 1.35 2002/10/21 10:46:34 fenrir Exp $ * $Id: input_ext-dec.c,v 1.36 2002/10/23 23:17:44 gbazin Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -111,38 +111,25 @@ void DecoderError( decoder_fifo_t * p_fifo ) ...@@ -111,38 +111,25 @@ void DecoderError( decoder_fifo_t * p_fifo )
} }
/***************************************************************************** /*****************************************************************************
* NextDataPacket: go to the data packet after *pp_data, return 1 if we * GetPES: return the first PES from the fifo
* changed PES
*****************************************************************************/ *****************************************************************************/
static inline vlc_bool_t _NextDataPacket( decoder_fifo_t * p_fifo, static inline pes_packet_t *_GetPES( decoder_fifo_t * p_fifo )
data_packet_t ** pp_data )
{ {
vlc_bool_t b_new_pes; pes_packet_t * p_pes;
/* We are looking for the next data packet that contains real data,
* and not just a PES header */
do
{
/* We were reading the last data packet of this PES packet... It's
* time to jump to the next PES packet */
if( (*pp_data)->p_next == NULL )
{
pes_packet_t * p_next;
vlc_mutex_lock( &p_fifo->data_lock ); vlc_mutex_lock( &p_fifo->data_lock );
/* Free the previous PES packet. */
p_next = p_fifo->p_first->p_next;
p_fifo->p_first->p_next = NULL;
input_DeletePES( p_fifo->p_packets_mgt, p_fifo->p_first );
p_fifo->p_first = p_next;
p_fifo->i_depth--;
if( p_fifo->p_first == NULL ) if( p_fifo->p_first == NULL )
{ {
/* No PES in the FIFO. p_last is no longer valid. */ /* No PES in the FIFO. p_last is no longer valid. */
p_fifo->pp_last = &p_fifo->p_first; p_fifo->pp_last = &p_fifo->p_first;
if( p_fifo->b_die )
{
vlc_mutex_unlock( &p_fifo->data_lock );
return NULL;
}
/* Signal the input thread we're waiting. This is only /* Signal the input thread we're waiting. This is only
* needed in case of slave clock (ES plug-in) but it won't * needed in case of slave clock (ES plug-in) but it won't
* harm. */ * harm. */
...@@ -152,11 +139,64 @@ static inline vlc_bool_t _NextDataPacket( decoder_fifo_t * p_fifo, ...@@ -152,11 +139,64 @@ static inline vlc_bool_t _NextDataPacket( decoder_fifo_t * p_fifo,
vlc_cond_wait( &p_fifo->data_wait, &p_fifo->data_lock ); vlc_cond_wait( &p_fifo->data_wait, &p_fifo->data_lock );
} }
/* The next packet could be found in the next PES packet */ p_pes = p_fifo->p_first;
*pp_data = p_fifo->p_first->p_first;
vlc_mutex_unlock( &p_fifo->data_lock );
return p_pes;
}
pes_packet_t * GetPES( decoder_fifo_t * p_fifo )
{
return( _GetPES( p_fifo ) );
}
/*****************************************************************************
* NextPES: free the current PES and return the next one
*****************************************************************************/
static inline pes_packet_t * _NextPES( decoder_fifo_t * p_fifo )
{
pes_packet_t * p_next;
vlc_mutex_lock( &p_fifo->data_lock );
/* Free the previous PES packet. */
p_next = p_fifo->p_first->p_next;
p_fifo->p_first->p_next = NULL;
input_DeletePES( p_fifo->p_packets_mgt, p_fifo->p_first );
p_fifo->p_first = p_next;
p_fifo->i_depth--;
vlc_mutex_unlock( &p_fifo->data_lock ); vlc_mutex_unlock( &p_fifo->data_lock );
return _GetPES( p_fifo );
}
pes_packet_t * NextPES( decoder_fifo_t * p_fifo )
{
return( _NextPES( p_fifo ) );
}
/*****************************************************************************
* NextDataPacket: go to the data packet after *pp_data, return 1 if we
* changed PES
*****************************************************************************/
static inline vlc_bool_t _NextDataPacket( decoder_fifo_t * p_fifo,
data_packet_t ** pp_data )
{
vlc_bool_t b_new_pes;
/* We are looking for the next data packet that contains real data,
* and not just a PES header */
do
{
/* We were reading the last data packet of this PES packet... It's
* time to jump to the next PES packet */
if( (*pp_data)->p_next == NULL )
{
/* The next packet could be found in the next PES packet */
*pp_data = (_NextPES( p_fifo ))->p_first;
b_new_pes = 1; b_new_pes = 1;
} }
else else
......
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