Commit 54355637 authored by Sam Hocevar's avatar Sam Hocevar

  * Fixed a segfault in the SPU decoder initialization.
parent a70f8bb3
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
HEAD HEAD
* Fixed a segfault in the SPU decoder initialization.
* Mandatory step for video output IV and the audio output quality * Mandatory step for video output IV and the audio output quality
fix: the output threads are now spawned when a decoder needs one, fix: the output threads are now spawned when a decoder needs one,
so it can decide the audio frequency or the video window size. so it can decide the audio frequency or the video window size.
......
...@@ -21,7 +21,7 @@ If you intend to debug stuff, you may want to disable optimizations: ...@@ -21,7 +21,7 @@ If you intend to debug stuff, you may want to disable optimizations:
make distclean && ./configure --prefix=/usr --enable-gnome \ make distclean && ./configure --prefix=/usr --enable-gnome \
--enable-fb --with-glide --with-ggi --with-sdl --enable-esd \ --enable-fb --with-glide --with-ggi --with-sdl --enable-esd \
--enable-mga --enable-gtk --enable-qt --enable-xvideo \ --enable-mga --enable-gtk --enable-qt --enable-xvideo \
--disable-optimizatons --enable-debug
Building VideoLAN Building VideoLAN
......
...@@ -61,6 +61,7 @@ The following teachers were involved in the VideoLAN project : ...@@ -61,6 +61,7 @@ The following teachers were involved in the VideoLAN project :
The following students were members of the VideoLAN team : The following students were members of the VideoLAN team :
1996-1997:
Pierre Almeras <almeras@via.ecp.fr> Pierre Almeras <almeras@via.ecp.fr>
Christophe Arnaud <christophe.arnaud@tps.fr> Christophe Arnaud <christophe.arnaud@tps.fr>
Antoine Brenner <brenner@via.ecp.fr> Antoine Brenner <brenner@via.ecp.fr>
...@@ -69,11 +70,12 @@ The following students were members of the VideoLAN team : ...@@ -69,11 +70,12 @@ The following students were members of the VideoLAN team :
Christian Gross <gross@via.ecp.fr> Christian Gross <gross@via.ecp.fr>
Hugo Haas <hugo@via.ecp.fr> Hugo Haas <hugo@via.ecp.fr>
Mikael Journo <mj32@cornell.edu> Mikael Journo <mj32@cornell.edu>
Michel Lespinasse <walken@wrs.com> Michel Lespinasse <walken@zoy.org>
Christophe Ulses <mowgli@laotseu.via.ecp.fr> Christophe Ulses <mowgli@laotseu.via.ecp.fr>
Pierre Vandecasteele <pabv2@hermes.cam.ac.uk> Pierre Vandecasteele <pabv2@hermes.cam.ac.uk>
Guillaume Vergnaud <vergnaud@via.ecp.fr> Guillaume Vergnaud <vergnaud@via.ecp.fr>
1997-1998:
Olivier Baxa <oli@via.ecp.fr> Olivier Baxa <oli@via.ecp.fr>
Patrice Bazerque <patrice.bazerque@via.ecp.fr> Patrice Bazerque <patrice.bazerque@via.ecp.fr>
Arnaud Bienvenu <arnaud.bienvenu@via.ecp.fr> Arnaud Bienvenu <arnaud.bienvenu@via.ecp.fr>
...@@ -83,6 +85,7 @@ The following students were members of the VideoLAN team : ...@@ -83,6 +85,7 @@ The following students were members of the VideoLAN team :
Sbastien Kurz <seb@tao.via.ecp.fr> Sbastien Kurz <seb@tao.via.ecp.fr>
Olivier Pomel <pomel@via.ecp.fr> Olivier Pomel <pomel@via.ecp.fr>
1998-1999:
Pierre Baillet <octplane@via.ecp.fr> Pierre Baillet <octplane@via.ecp.fr>
Alban Fonrouge <alban@via.ecp.fr> Alban Fonrouge <alban@via.ecp.fr>
Jean-Philippe Grimaldi <jeanphi@via.ecp.fr> Jean-Philippe Grimaldi <jeanphi@via.ecp.fr>
...@@ -93,18 +96,22 @@ The following students were members of the VideoLAN team : ...@@ -93,18 +96,22 @@ The following students were members of the VideoLAN team :
Vincent Seguin <seguin@via.ecp.fr> Vincent Seguin <seguin@via.ecp.fr>
Benoit Steiner <benny@via.ecp.fr> Benoit Steiner <benny@via.ecp.fr>
1999-2000:
Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr> Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>
Jean-Marc Dressler <polux@via.ecp.fr> Jean-Marc Dressler <polux@via.ecp.fr>
Gal Hendryckx <jimmy@via.ecp.fr> Gal Hendryckx <jimmy@via.ecp.fr>
Samuel Hocevar <sam@via.ecp.fr> Samuel Hocevar <sam@zoy.org>
Brieuc Jeunhomme <bbp@via.ecp.fr> Brieuc Jeunhomme <bbp@via.ecp.fr>
Michel Kaempf <maxx@via.ecp.fr> Michel Kaempf <maxx@via.ecp.fr>
Florent Rougon <flo@via.ecp.fr> Florent Rougon <flo@via.ecp.fr>
2000-2001:
Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>
Stphane Borel <stef@via.ecp.fr> Stphane Borel <stef@via.ecp.fr>
Renaud Dartus <reno@via.ecp.fr> Renaud Dartus <reno@via.ecp.fr>
Henri Fallon <henri@via.ecp.fr> Henri Fallon <henri@via.ecp.fr>
Jean-Michel Grimaldi <jm@via.ecp.fr> Jean-Michel Grimaldi <jm@via.ecp.fr>
Samuel Hocevar <sam@zoy.org>
Damien Lucas <nitrox@via.ecp.fr> Damien Lucas <nitrox@via.ecp.fr>
Rmi Peyronnet <remi@via.ecp.fr> Rmi Peyronnet <remi@via.ecp.fr>
Laurent Rossier <gunther@via.ecp.fr> Laurent Rossier <gunther@via.ecp.fr>
......
...@@ -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, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-dec.h,v 1.31 2001/05/01 04:18:17 sam Exp $ * $Id: input_ext-dec.h,v 1.32 2001/05/01 12:22:18 sam 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>
...@@ -515,8 +515,6 @@ struct vout_thread_s; ...@@ -515,8 +515,6 @@ struct vout_thread_s;
typedef struct vdec_config_s typedef struct vdec_config_s
{ {
struct vout_thread_s * p_vout;
struct picture_s * (* pf_create_picture)( struct vout_thread_s *, struct picture_s * (* pf_create_picture)( struct vout_thread_s *,
int i_type, int i_width, int i_type, int i_width,
int i_height ); int i_height );
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* control the pace of reading. * control the pace of reading.
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-intf.h,v 1.35 2001/05/01 04:18:17 sam Exp $ * $Id: input_ext-intf.h,v 1.36 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -132,9 +132,6 @@ typedef struct pgrm_descriptor_s ...@@ -132,9 +132,6 @@ typedef struct pgrm_descriptor_s
/* Demultiplexer data */ /* Demultiplexer data */
void * p_demux_data; void * p_demux_data;
/* Decoders control */
struct vout_thread_s * p_vout;
int i_es_number; /* size of the following array */ int i_es_number; /* size of the following array */
es_descriptor_t ** pp_es; /* array of pointers to ES */ es_descriptor_t ** pp_es; /* array of pointers to ES */
} pgrm_descriptor_t; } pgrm_descriptor_t;
...@@ -302,9 +299,6 @@ typedef struct input_thread_s ...@@ -302,9 +299,6 @@ typedef struct input_thread_s
/* General stream description */ /* General stream description */
stream_descriptor_t stream; /* PAT tables */ stream_descriptor_t stream; /* PAT tables */
/* For auto-launch of decoders */
struct vout_thread_s * p_default_vout;
#ifdef STATS #ifdef STATS
count_t c_loops; count_t c_loops;
count_t c_bytes; /* bytes read */ count_t c_bytes; /* bytes read */
......
...@@ -212,8 +212,7 @@ static void intf_Run( intf_thread_t *p_intf ) ...@@ -212,8 +212,7 @@ static void intf_Run( intf_thread_t *p_intf )
case 'f': case 'f':
case 'F': case 'F':
p_intf->p_input->p_default_vout->i_changes |= p_main->p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE;
VOUT_FULLSCREEN_CHANGE;
break; break;
case 'm': case 'm':
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* decoders. * decoders.
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input.c,v 1.104 2001/05/01 04:18:18 sam Exp $ * $Id: input.c,v 1.105 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -143,9 +143,6 @@ input_thread_t *input_CreateThread ( playlist_item_t *p_item, int *pi_status ) ...@@ -143,9 +143,6 @@ input_thread_t *input_CreateThread ( playlist_item_t *p_item, int *pi_status )
p_input->stream.control.b_mute = 0; p_input->stream.control.b_mute = 0;
p_input->stream.control.b_bw = 0; p_input->stream.control.b_bw = 0;
/* Initialize default settings for spawned decoders */
p_input->p_default_vout = p_main->p_vout;
/* Create thread and set locks. */ /* Create thread and set locks. */
vlc_mutex_init( &p_input->stream.stream_lock ); vlc_mutex_init( &p_input->stream.stream_lock );
vlc_cond_init( &p_input->stream.stream_wait ); vlc_cond_init( &p_input->stream.stream_wait );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_programs.c: es_descriptor_t, pgrm_descriptor_t management * input_programs.c: es_descriptor_t, pgrm_descriptor_t management
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_programs.c,v 1.54 2001/05/01 04:18:18 sam Exp $ * $Id: input_programs.c,v 1.55 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -172,9 +172,6 @@ pgrm_descriptor_t * input_AddProgram( input_thread_t * p_input, ...@@ -172,9 +172,6 @@ pgrm_descriptor_t * input_AddProgram( input_thread_t * p_input,
p_input->stream.pp_programs[i_pgrm_index]->i_synchro_state p_input->stream.pp_programs[i_pgrm_index]->i_synchro_state
= SYNCHRO_START; = SYNCHRO_START;
p_input->stream.pp_programs[i_pgrm_index]->p_vout
= p_input->p_default_vout;
if( i_data_len ) if( i_data_len )
{ {
p_input->stream.pp_programs[i_pgrm_index]->p_demux_data = p_input->stream.pp_programs[i_pgrm_index]->p_demux_data =
...@@ -554,7 +551,6 @@ static vdec_config_t * GetVdecConfig( input_thread_t * p_input, ...@@ -554,7 +551,6 @@ static vdec_config_t * GetVdecConfig( input_thread_t * p_input,
intf_ErrMsg( "Unable to allocate memory in GetVdecConfig" ); intf_ErrMsg( "Unable to allocate memory in GetVdecConfig" );
return( NULL ); return( NULL );
} }
p_config->p_vout = p_input->p_default_vout;
if( InitDecConfig( p_input, p_es, &p_config->decoder_config ) == -1 ) if( InitDecConfig( p_input, p_es, &p_config->decoder_config ) == -1 )
{ {
free( p_config ); free( p_config );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* spu_decoder.c : spu decoder thread * spu_decoder.c : spu decoder thread
***************************************************************************** *****************************************************************************
* Copyright (C) 2000 VideoLAN * Copyright (C) 2000 VideoLAN
* $Id: spu_decoder.c,v 1.38 2001/04/28 03:36:25 sam Exp $ * $Id: spu_decoder.c,v 1.39 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
#include "spu_decoder.h" #include "spu_decoder.h"
#include "main.h" /* XXX: remove this later */
/***************************************************************************** /*****************************************************************************
* Local prototypes * Local prototypes
*****************************************************************************/ *****************************************************************************/
...@@ -83,10 +85,20 @@ vlc_thread_t spudec_CreateThread( vdec_config_t * p_config ) ...@@ -83,10 +85,20 @@ vlc_thread_t spudec_CreateThread( vdec_config_t * p_config )
* Initialize the thread properties * Initialize the thread properties
*/ */
p_spudec->p_config = p_config; p_spudec->p_config = p_config;
p_spudec->p_fifo = p_config->decoder_config.p_decoder_fifo; p_spudec->p_fifo = p_config->decoder_config.p_decoder_fifo;
/* Get the video output informations */ /* XXX: The vout request and fifo opening will eventually be here */
p_spudec->p_vout = p_config->p_vout; if( p_spudec->p_vout == NULL )
{
if( p_main->p_vout == NULL )
{
intf_Msg( "vpar: no vout present, spawning one" );
p_main->p_vout = vout_CreateThread( NULL );
}
p_spudec->p_vout = p_main->p_vout;
}
/* Spawn the spu decoder thread */ /* Spawn the spu decoder thread */
if ( vlc_thread_create(&p_spudec->thread_id, "spu decoder", if ( vlc_thread_create(&p_spudec->thread_id, "spu decoder",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* video_parser.c : video parser thread * video_parser.c : video parser thread
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: video_parser.c,v 1.82 2001/05/01 04:18:18 sam Exp $ * $Id: video_parser.c,v 1.83 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr> * Samuel Hocevar <sam@via.ecp.fr>
...@@ -95,8 +95,6 @@ vlc_thread_t vpar_CreateThread( vdec_config_t * p_config ) ...@@ -95,8 +95,6 @@ vlc_thread_t vpar_CreateThread( vdec_config_t * p_config )
p_vpar->p_fifo = p_config->decoder_config.p_decoder_fifo; p_vpar->p_fifo = p_config->decoder_config.p_decoder_fifo;
p_vpar->p_config = p_config; p_vpar->p_config = p_config;
p_vpar->p_vout = p_config->p_vout;
/* /*
* Choose the best motion compensation module * Choose the best motion compensation module
*/ */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* vpar_headers.c : headers parsing * vpar_headers.c : headers parsing
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: vpar_headers.c,v 1.83 2001/05/01 04:18:18 sam Exp $ * $Id: vpar_headers.c,v 1.84 2001/05/01 12:22:18 sam Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Stphane Borel <stef@via.ecp.fr> * Stphane Borel <stef@via.ecp.fr>
...@@ -452,10 +452,15 @@ static void SequenceHeader( vpar_thread_t * p_vpar ) ...@@ -452,10 +452,15 @@ static void SequenceHeader( vpar_thread_t * p_vpar )
ExtensionAndUserData( p_vpar ); ExtensionAndUserData( p_vpar );
/* XXX: The vout request and fifo opening will eventually be here */ /* XXX: The vout request and fifo opening will eventually be here */
if( p_main->p_vout == NULL ) if( p_vpar->p_vout == NULL )
{ {
intf_Msg( "vpar: no vout present, spawning one" ); if( p_main->p_vout == NULL )
p_main->p_vout = p_vpar->p_vout = vout_CreateThread( NULL ); {
intf_Msg( "vpar: no vout present, spawning one" );
p_main->p_vout = vout_CreateThread( NULL );
}
p_vpar->p_vout = p_main->p_vout;
} }
} }
......
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