Commit 1e67ea66 authored by Clément Stenac's avatar Clément Stenac

* String review, round one

* A few coding style fixes
* Doxygenized a few functions
parent f5932b75
......@@ -2,7 +2,7 @@
* demux.c
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: demux.c,v 1.9 2004/01/20 14:48:37 fenrir Exp $
* $Id: demux.c,v 1.10 2004/01/25 17:16:05 zorglub Exp $
*
* Author: Laurent Aimar <fenrir@via.ecp.fr>
*
......@@ -142,7 +142,7 @@ int demux_vaControlDefault( input_thread_t *p_input, int i_query,
break;
default:
msg_Err( p_input, "unknown query in demux_vaControlDefault !!!" );
msg_Err( p_input, "unknown query in demux_vaControlDefault" );
i_ret = VLC_EGENERIC;
break;
}
......
......@@ -2,7 +2,7 @@
* es_out.c: Es Out handler for input.
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id: es_out.c,v 1.20 2004/01/22 00:00:34 fenrir Exp $
* $Id: es_out.c,v 1.21 2004/01/25 17:16:05 zorglub Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
......@@ -78,9 +78,12 @@ static void EsOutDel ( es_out_t *, es_out_id_t * );
static int EsOutControl( es_out_t *, int i_query, va_list );
/*****************************************************************************
* input_EsOutNew:
*****************************************************************************/
/**
* Create a new es_out structure
*
* \param p_input The related input thread
* \return the new es_out_t
*/
es_out_t *input_EsOutNew( input_thread_t *p_input )
{
es_out_t *out = malloc( sizeof( es_out_t ) );
......@@ -121,9 +124,12 @@ es_out_t *input_EsOutNew( input_thread_t *p_input )
return out;
}
/*****************************************************************************
* input_EsOutDelete:
*****************************************************************************/
/**
* Deletes an es_out structure
*
* \param out the es_out structure to destroy
* \return nothing
*/
void input_EsOutDelete( es_out_t *out )
{
es_out_sys_t *p_sys = out->p_sys;
......@@ -140,9 +146,14 @@ void input_EsOutDelete( es_out_t *out )
free( p_sys );
free( out );
}
/*****************************************************************************
* EsOutAddProgram:
*****************************************************************************/
/**
* Add a program
*
* \param out the es_out
* \param i_group ...
* \return a program descriptor for the new program
*/
static pgrm_descriptor_t *EsOutAddProgram( es_out_t *out, int i_group )
{
input_thread_t *p_input = out->p_sys->p_input;
......@@ -158,7 +169,7 @@ static pgrm_descriptor_t *EsOutAddProgram( es_out_t *out, int i_group )
/* XXX welcome to kludge, add a dummy es, if you want to understand
* why have a look at input_SetProgram. Basicaly, it assume the first
* es to be the PMT, how that is stupide, nevertheless it is needed for
* es to be the PMT, how that is stupid, nevertheless it is needed for
* the old ts demuxer */
p_pmt = input_AddES( p_input, p_prgm, 0, UNKNOWN_ES, NULL, 0 );
p_pmt->i_fourcc = VLC_FOURCC( 'n', 'u', 'l', 'l' );
......@@ -173,10 +184,15 @@ static pgrm_descriptor_t *EsOutAddProgram( es_out_t *out, int i_group )
return p_prgm;
}
/*****************************************************************************
* EsOutSelect: Select an ES given the current mode
/**
* Select an ES given the current mode
* XXX: you need to take a the lock before (stream.stream_lock)
*****************************************************************************/
*
* \param out The es_out structure
* \param es es_out_id structure
* \param b_force ...
* \return nothing
*/
static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force )
{
es_out_sys_t *p_sys = out->p_sys;
......@@ -267,9 +283,13 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, vlc_bool_t b_force )
}
}
/*****************************************************************************
* EsOutAdd:
*****************************************************************************/
/**
* Add an es_out
*
* \param out the es_out to add
* \param fmt the es_format of the es_out
* \return an es_out id
*/
static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt )
{
es_out_sys_t *p_sys = out->p_sys;
......@@ -277,7 +297,7 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt )
input_thread_t *p_input = p_sys->p_input;
es_out_id_t *es = malloc( sizeof( es_out_id_t ) );
pgrm_descriptor_t *p_prgm = NULL;
char psz_cat[sizeof( "Stream " ) + 10];
char psz_cat[sizeof( _("Stream ") ) + 10];
input_info_category_t *p_cat;
vlc_mutex_lock( &p_input->stream.stream_lock );
......@@ -529,9 +549,13 @@ static es_out_id_t *EsOutAdd( es_out_t *out, es_format_t *fmt )
return es;
}
/*****************************************************************************
* EsOutSend:
*****************************************************************************/
/**
* Send a block for the given es_out
*
* \param out the es_out to send from
* \param es the es_out_id
* \param p_block the data block to send
*/
static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block )
{
es_out_sys_t *p_sys = out->p_sys;
......@@ -624,9 +648,14 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es )
free( es );
}
/*****************************************************************************
* EsOutControl:
*****************************************************************************/
/**
* Control query handler
*
* \param out the es_out to control
* \param i_query A es_out query as defined in include/ninput.h
* \param args a variable list of arguments for the query
* \return VLC_SUCCESS or an error code
*/
static int EsOutControl( es_out_t *out, int i_query, va_list args )
{
es_out_sys_t *p_sys = out->p_sys;
......
......@@ -4,7 +4,7 @@
* decoders.
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: input.c,v 1.276 2004/01/15 23:40:44 gbazin Exp $
* $Id: input.c,v 1.277 2004/01/25 17:16:05 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -99,7 +99,7 @@ input_thread_t *__input_CreateThread( vlc_object_t *p_parent,
/* Parse input options */
for( i = 0 ; i < p_item->i_categories ; i++ )
{
if( !strncmp( p_item->pp_categories[i]->psz_name, "Options", 7 ) )
if( !strncmp( p_item->pp_categories[i]->psz_name, _("Options"), 7 ) )
{
msg_Dbg(p_input,"Parsing %i options for item",
p_item->pp_categories[i]->i_infos );
......@@ -739,9 +739,9 @@ static int InitThread( input_thread_t * p_input )
p_input->s = stream_OpenInput( p_input );
if( p_input->s == NULL )
{
/* should nver occur yet */
/* should never occur yet */
msg_Err( p_input, "cannot create stream_t !" );
msg_Err( p_input, "cannot create stream_t" );
module_Unneed( p_input, p_input->p_access );
if ( p_input->stream.p_sout != NULL )
......@@ -819,7 +819,8 @@ static int InitThread( input_thread_t * p_input )
if( val.psz_string && *val.psz_string )
{
subtitle_demux_t *p_sub;
if( ( p_sub = subtitle_New( p_input, strdup(val.psz_string), i_microsecondperframe, 0 ) ) )
if( ( p_sub = subtitle_New( p_input, strdup(val.psz_string),
i_microsecondperframe, 0 ) ) )
{
p_sub_toselect = p_sub;
TAB_APPEND( p_input->p_sys->i_sub, p_input->p_sys->sub, p_sub );
......@@ -836,7 +837,8 @@ static int InitThread( input_thread_t * p_input )
char **tmp2 = tmp;
for( i = 0; *tmp2 != NULL; i++ )
{
if( ( p_sub = subtitle_New( p_input, strdup(*tmp2++), i_microsecondperframe, i ) ) )
if( ( p_sub = subtitle_New( p_input, strdup(*tmp2++),
i_microsecondperframe, i ) ) )
{
TAB_APPEND( p_input->p_sys->i_sub, p_input->p_sys->sub, p_sub );
}
......@@ -854,7 +856,8 @@ static int InitThread( input_thread_t * p_input )
val.b_bool ? ES_OUT_MODE_ALL : ES_OUT_MODE_AUTO );
if( p_sub_toselect )
{
es_out_Control( p_input->p_es_out, ES_OUT_SET_ES, p_sub_toselect->p_es, VLC_TRUE );
es_out_Control( p_input->p_es_out, ES_OUT_SET_ES,
p_sub_toselect->p_es, VLC_TRUE );
}
return VLC_SUCCESS;
......
......@@ -2,7 +2,7 @@
* input_dec.c: Functions for the management of decoders
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: input_dec.c,v 1.87 2004/01/19 18:15:29 fenrir Exp $
* $Id: input_dec.c,v 1.88 2004/01/25 17:16:05 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Gildas Bazin <gbazin@netcourrier.com>
......@@ -82,9 +82,13 @@ struct decoder_owner_sys_t
};
/*****************************************************************************
* input_RunDecoder: spawns a new decoder thread
*****************************************************************************/
/**
* Spawns a new decoder thread
*
* \param p_input the input thread
* \param p_es the es descriptor
* \return the spawned decoder object
*/
decoder_t * input_RunDecoder( input_thread_t * p_input, es_descriptor_t * p_es )
{
decoder_t *p_dec = NULL;
......@@ -180,9 +184,13 @@ decoder_t * input_RunDecoder( input_thread_t * p_input, es_descriptor_t * p_es )
return p_dec;
}
/*****************************************************************************
* input_EndDecoder: kills a decoder thread and waits until it's finished
*****************************************************************************/
/**
* Kills a decoder thread and waits until it's finished
*
* \param p_input the input thread
* \param p_es the es descriptor
* \return nothing
*/
void input_EndDecoder( input_thread_t * p_input, es_descriptor_t * p_es )
{
decoder_t *p_dec = p_es->p_dec;
......@@ -234,11 +242,13 @@ void input_EndDecoder( input_thread_t * p_input, es_descriptor_t * p_es )
p_input->stream.b_changed = 1;
}
/*****************************************************************************
* input_DecodePES
*****************************************************************************
/**
* Put a PES in the decoder's fifo.
*****************************************************************************/
*
* \param p_dec the decoder object
* \param p_pes the pes packet
* \return nothing
*/
void input_DecodePES( decoder_t * p_dec, pes_packet_t * p_pes )
{
data_packet_t *p_data;
......@@ -274,11 +284,13 @@ void input_DecodePES( decoder_t * p_dec, pes_packet_t * p_pes )
input_DeletePES( p_dec->p_owner->p_method_data, p_pes );
}
/*****************************************************************************
* input_DecodeBlock
*****************************************************************************
/**
* Put a block_t in the decoder's fifo.
*****************************************************************************/
*
* \param p_dec the decoder object
* \param p_block the data block
*/
void input_DecodeBlock( decoder_t * p_dec, block_t *p_block )
{
if( p_dec->p_owner->b_own_thread )
......@@ -298,14 +310,17 @@ void input_DecodeBlock( decoder_t * p_dec, block_t *p_block )
}
}
/*****************************************************************************
/**
* Create a NULL packet for padding in case of a data loss
*****************************************************************************/
*
* \param p_input the input thread
* \param p_es es descriptor
* \return nothing
*/
static void input_NullPacket( input_thread_t * p_input,
es_descriptor_t * p_es )
{
block_t *p_block = block_New( p_input, PADDING_PACKET_SIZE );
if( p_block )
{
memset( p_block->p_buffer, 0, PADDING_PACKET_SIZE );
......@@ -315,9 +330,12 @@ static void input_NullPacket( input_thread_t * p_input,
}
}
/*****************************************************************************
* input_EscapeDiscontinuity: send a NULL packet to the decoders
*****************************************************************************/
/**
* Send a NULL packet to the decoders
*
* \param p_input the input thread
* \return nothing
*/
void input_EscapeDiscontinuity( input_thread_t * p_input )
{
unsigned int i_es, i;
......@@ -336,9 +354,12 @@ void input_EscapeDiscontinuity( input_thread_t * p_input )
}
}
/*****************************************************************************
* input_EscapeAudioDiscontinuity: send a NULL packet to the audio decoders
*****************************************************************************/
/**
* Send a NULL packet to the audio decoders
*
* \param p_input the input thread
* \return nothing
*/
void input_EscapeAudioDiscontinuity( input_thread_t * p_input )
{
unsigned int i_es, i;
......@@ -357,9 +378,14 @@ void input_EscapeAudioDiscontinuity( input_thread_t * p_input )
}
}
/*****************************************************************************
* CreateDecoder: create a decoder object
*****************************************************************************/
/**
* Create a decoder object
*
* \param p_input the input thread
* \param p_es the es descriptor
* \param i_object_type Object type as define in include/vlc_objects.h
* \return the decoder object
*/
static decoder_t * CreateDecoder( input_thread_t * p_input,
es_descriptor_t * p_es, int i_object_type )
{
......@@ -479,9 +505,12 @@ static decoder_t * CreateDecoder( input_thread_t * p_input,
return p_dec;
}
/*****************************************************************************
* DecoderThread: the decoding main loop
*****************************************************************************/
/**
* The decoding main loop
*
* \param p_dec the decoder
* \return 0
*/
static int DecoderThread( decoder_t * p_dec )
{
block_t *p_block;
......@@ -523,9 +552,13 @@ static int DecoderThread( decoder_t * p_dec )
return 0;
}
/*****************************************************************************
* DecoderDecode: decode a block
*****************************************************************************/
/**
* Decode a block
*
* \param p_dec the decoder object
* \param p_block the block to decode
* \return VLC_SUCCESS or an error code
*/
static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
{
if( p_block->i_buffer <= 0 )
......@@ -623,16 +656,19 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
}
else
{
msg_Err( p_dec, "unknown ES format !!" );
msg_Err( p_dec, "unknown ES format" );
p_dec->b_error = 1;
}
return p_dec->b_error ? VLC_EGENERIC : VLC_SUCCESS;
}
/*****************************************************************************
* DeleteDecoder: destroys a decoder object
*****************************************************************************/
/**
* Destroys a decoder object
*
* \param p_dec the decoder object
* \return nothing
*/
static void DeleteDecoder( decoder_t * p_dec )
{
vlc_object_detach( p_dec );
......@@ -790,7 +826,7 @@ static picture_t *vout_new_buffer( decoder_t *p_dec )
}
if( i_pic == p_dec->p_owner->p_vout->render.i_pictures )
{
msg_Err( p_dec, "decoder is leaking pictures, reseting the heap" );
msg_Err( p_dec, "decoder is leaking pictures, resetting the heap" );
/* Just free all the pictures */
for( i_pic = 0; i_pic < p_dec->p_owner->p_vout->render.i_pictures;
......
......@@ -2,7 +2,7 @@
* input_ext-intf.c: services to the interface
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: input_ext-intf.c,v 1.55 2004/01/06 12:02:06 zorglub Exp $
* $Id: input_ext-intf.c,v 1.56 2004/01/25 17:16:05 zorglub Exp $
*
* Author: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -164,7 +164,6 @@ void __input_SetRate( vlc_object_t * p_this, int i_rate )
vlc_mutex_unlock( &p_input->stream.stream_lock );
return;
}
p_input->stream.i_new_status = FORWARD_S;
p_input->stream.i_new_rate = i_rate;
......
......@@ -2,7 +2,7 @@
* input_ext-plugins.c: useful functions for access and demux plug-ins
*****************************************************************************
* Copyright (C) 2001-2004 VideoLAN
* $Id: input_ext-plugins.c,v 1.39 2004/01/06 12:02:06 zorglub Exp $
* $Id: input_ext-plugins.c,v 1.40 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -10,7 +10,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
......@@ -141,7 +141,7 @@ void input_BuffersEnd( input_thread_t * p_input, input_buffers_t * p_buffers )
free( p_buf );
p_buf = p_next;
}
}
}
if( p_buffers->i_allocated )
{
......@@ -598,7 +598,7 @@ ssize_t input_SplitBuffer( input_thread_t * p_input,
vlc_mutex_lock( &p_input->stream.stream_lock );
p_input->stream.p_selected_area->i_tell += i_size;
vlc_mutex_unlock( &p_input->stream.stream_lock );
return i_size;
}
......
......@@ -2,7 +2,7 @@
* input_info.c: Convenient functions to handle the input info structures
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: input_info.c,v 1.13 2004/01/15 23:40:44 gbazin Exp $
* $Id: input_info.c,v 1.14 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
*
......@@ -10,7 +10,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
......@@ -63,7 +63,7 @@ input_info_category_t * input_InfoCategory( input_thread_t * p_input,
p_category = malloc( sizeof( input_info_category_t ) );
if ( !p_category )
{
msg_Err( p_input, "No mem" );
msg_Err( p_input, "out of memory" );
return NULL;
}
p_category->psz_name = strdup( psz_name );
......@@ -94,9 +94,9 @@ int input_AddInfo( input_info_category_t * p_category, char * psz_name,
{
return -1;
}
va_start( args, psz_format );
/*
* Convert message to string
*/
......@@ -143,13 +143,13 @@ int input_AddInfo( input_info_category_t * p_category, char * psz_name,
* \internal
*
* \param p_input The input thread to be cleaned for info
* \returns for the moment 0
* \returns for the moment VLC_SUCCESS
*/
int input_DelInfo( input_thread_t * p_input )
{
input_info_category_t * p_category, * p_prev_category;
input_info_t * p_info, * p_prev_info;
p_category = p_input->stream.p_info;
while ( p_category )
{
......@@ -176,5 +176,5 @@ int input_DelInfo( input_thread_t * p_input )
p_category = p_category->p_next;
free( p_prev_category );
}
return 0;
return VLC_SUCCESS;
}
......@@ -2,7 +2,7 @@
* input_programs.c: es_descriptor_t, pgrm_descriptor_t management
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: input_programs.c,v 1.128 2004/01/06 12:02:06 zorglub Exp $
* $Id: input_programs.c,v 1.129 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -126,7 +126,7 @@ int input_InitStream( input_thread_t * p_input, size_t i_data_len )
var_AddCallback( p_input, "audio-es", ESCallback, NULL );
var_AddCallback( p_input, "spu-es", ESCallback, NULL );
return 0;
return VLC_SUCCESS;
}
/*****************************************************************************
......
......@@ -2,7 +2,7 @@
* stream.c
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: stream.c,v 1.12 2004/01/21 17:01:54 fenrir Exp $
* $Id: stream.c,v 1.13 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
......@@ -138,7 +138,8 @@ int stream_vaControl( stream_t *s, int i_query, va_list args )
return VLC_SUCCESS;
}
if( i_skip > 0 && i_skip < s->p_input->p_last_data - s->p_input->p_current_data - 1 )
if( i_skip > 0 && i_skip < s->p_input->p_last_data -
s->p_input->p_current_data - 1 )
{
/* We can skip without reading/seeking */
s->p_input->p_current_data += i_skip;
......@@ -150,7 +151,8 @@ int stream_vaControl( stream_t *s, int i_query, va_list args )
if( s->p_input->stream.b_seekable &&
( s->p_input->stream.i_method == INPUT_METHOD_FILE ||
i_skip < 0 || i_skip >= ( s->p_input->i_mtu > 0 ? s->p_input->i_mtu : 4096 ) ) )
i_skip < 0 || i_skip >= ( s->p_input->i_mtu > 0 ?
s->p_input->i_mtu : 4096 ) ) )
{
input_AccessReinit( s->p_input );
s->p_input->pf_seek( s->p_input, i64 );
......@@ -336,7 +338,7 @@ char *stream_ReadLine( stream_t *s )
p_line = malloc( i + 1 );
if( p_line == NULL )
{
msg_Err( s->p_input, "Out of memory" );
msg_Err( s->p_input, "out of memory" );
return NULL;
}
i = stream_Read( s, p_line, i + 1 );
......@@ -345,4 +347,3 @@ char *stream_ReadLine( stream_t *s )
return p_line;
}
}
......@@ -2,7 +2,7 @@
* subtitles.c
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id: subtitles.c,v 1.7 2004/01/06 12:02:06 zorglub Exp $
* $Id: subtitles.c,v 1.8 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Derk-Jan Hartman <hartman at videolan.org>
* This is adapted code from the GPL'ed MPlayer (http://mplayerhq.hu)
......@@ -265,7 +265,8 @@ char** subtitles_Detect( input_thread_t *p_this, char *psz_path, char *psz_fname
}
else
{
/* chars after (and possibly in front of) the movie name */
/* chars after (and possibly in front of)
* the movie name */
i_prio = 3;
}
}
......
......@@ -4,7 +4,7 @@
* interface, such as command line.
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: interface.c,v 1.111 2004/01/13 18:45:06 gbazin Exp $
* $Id: interface.c,v 1.112 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
......@@ -67,7 +67,7 @@ static int AddIntfCallback( vlc_object_t *, char const *,
*****************************************************************************/
/**
* Create the interface, and prepare it for main loop.
*
*
* \param p_this the calling vlc_object_t
* \param psz_module a prefered interface module
* \return a pointer to the created interface thread, NULL on error
......@@ -131,7 +131,7 @@ intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module )
/**
* Run the interface thread.
*
* If b_block is not set, runs the interface in the thread, else,
* If b_block is not set, runs the interface in the thread, else,
* creates a new thread and runs the interface.
* \param p_intf the interface thread
* \return VLC_SUCCESS on success, an error number else
......@@ -168,11 +168,6 @@ int intf_RunThread( intf_thread_t *p_intf )
return VLC_SUCCESS;
}
/*****************************************************************************
* intf_StopThread: end the interface thread
*****************************************************************************
* This function asks the interface thread to stop.
*****************************************************************************/
/**
* Stops the interface thread
*
......@@ -192,15 +187,10 @@ void intf_StopThread( intf_thread_t *p_intf )
vlc_thread_join( p_intf );
}
/*****************************************************************************
* intf_Destroy: clean interface after main loop
*****************************************************************************
* This function destroys specific interfaces and close output devices.
*****************************************************************************/
/**
* \brief Destroy the interface after the main loop endeed.
*
* Destroys interfaces and output devices
*
* Destroys interfaces and closes output devices
* \param p_intf the interface thread
* \return nothing
*/
......
......@@ -2,7 +2,7 @@
* libvlc.c: main libvlc source
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: libvlc.c,v 1.112 2004/01/25 11:48:17 gbazin Exp $
* $Id: libvlc.c,v 1.113 2004/01/25 17:16:05 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
......@@ -510,7 +510,7 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
}
var_AddCallback( p_vlc, "verbose", VerboseCallback, NULL );
var_Change( p_vlc, "verbose", VLC_VAR_TRIGGER_CALLBACKS, NULL, NULL );
libvlc.b_color = libvlc.b_color && config_GetInt( p_vlc, "color" );
/*
......@@ -1056,7 +1056,7 @@ int VLC_Stop( int i_object )
/*
* Free playlists
*/
msg_Dbg( p_vlc, "removing all playlists" );
while( (p_playlist = vlc_object_find( p_vlc, VLC_OBJECT_PLAYLIST,
FIND_CHILD )) )
......@@ -1065,7 +1065,7 @@ int VLC_Stop( int i_object )
vlc_object_release( p_playlist );
playlist_Destroy( p_playlist );
}
/*
* Free video outputs
*/
......
......@@ -2,7 +2,7 @@
* beos_init.cpp: Initialization for BeOS specific features
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: beos_specific.cpp,v 1.36 2004/01/06 12:02:06 zorglub Exp $
* $Id: beos_specific.cpp,v 1.37 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
*
......@@ -223,7 +223,7 @@ void VlcApplication::MessageReceived(BMessage* message)
fReadyToQuit = true;
PostMessage( B_QUIT_REQUESTED );
break;
default:
BApplication::MessageReceived(message);
}
......
......@@ -2,7 +2,7 @@
* configuration.c management of the modules configuration
*****************************************************************************
* Copyright (C) 2001-2004 VideoLAN
* $Id: configuration.c,v 1.74 2004/01/12 23:41:59 gbazin Exp $
* $Id: configuration.c,v 1.75 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
......@@ -1133,7 +1133,7 @@ int __config_SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name )
psz_key ? psz_key : "" );
if ( psz_key ) free( psz_key );
break;
case CONFIG_ITEM_FLOAT:
if( p_item->psz_text )
fprintf( file, "# %s (%s)\n", p_item->psz_text,
......
......@@ -2,7 +2,7 @@
* error.c: error handling routine
*****************************************************************************
* Copyright (C) 2002-2004 VideoLAN
* $Id: error.c,v 1.3 2004/01/06 12:02:06 zorglub Exp $
* $Id: error.c,v 1.4 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -64,7 +64,7 @@ char const * vlc_error ( int i_err )
case VLC_EGENERIC:
return "generic error";
default:
return "unkown error";
return "unknown error";
}
}
......@@ -2,7 +2,7 @@
* modules.c : Builtin and plugin modules management functions
*****************************************************************************
* Copyright (C) 2001-2004 VideoLAN
* $Id: modules.c,v 1.143 2004/01/06 12:02:06 zorglub Exp $
* $Id: modules.c,v 1.144 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Sam Hocevar <sam@zoy.org>
* Ethan C. Baldridge <BaldridgeE@cadmus.com>
......@@ -99,7 +99,6 @@
#include "aout_internal.h"
#include "stream_output.h"
/*#include "announce.h"*/
#include "osd.h"
#include "iso_lang.h"
......
......@@ -9,7 +9,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
......
......@@ -3,7 +3,7 @@
* Functions are prototyped in mtime.h.
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: mtime.c,v 1.42 2004/01/06 12:02:06 zorglub Exp $
* $Id: mtime.c,v 1.43 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
......@@ -69,7 +69,7 @@ int nanosleep(struct timespec *, struct timespec *);
*
* This function converts a mtime date into a string.
* psz_buffer should be a buffer long enough to store the formatted
* date.
* date.
* \param date to be converted
* \param psz_buffer should be a buffer at least MSTRTIME_MAX_SIZE characters
* \return psz_buffer is returned so this can be used as printf parameter.
......@@ -100,8 +100,8 @@ char *mstrtime( char *psz_buffer, mtime_t date )
char *secstotimestr( char *psz_buffer, int i_seconds )
{
snprintf( psz_buffer, MSTRTIME_MAX_SIZE, "%d:%2.2d:%2.2d",
(int) (i_seconds / (60 *60)),
(int) ((i_seconds / 60) % 60),
(int) (i_seconds / (60 *60)),
(int) ((i_seconds / 60) % 60),
(int) (i_seconds % 60) );
return( psz_buffer );
}
......@@ -212,7 +212,7 @@ void mwait( mtime_t date )
{
#if defined( HAVE_KERNEL_OS_H )
mtime_t delay;
delay = date - real_time_clock_usecs();
if( delay <= 0 )
{
......
......@@ -2,7 +2,7 @@
* net.c:
*****************************************************************************
* Copyright (C) 2004 VideoLAN
* $Id: net.c,v 1.8 2004/01/22 17:03:44 gbazin Exp $
* $Id: net.c,v 1.9 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Laurent Aimar <fenrir@videolan.org>
*
......@@ -232,7 +232,7 @@ int __net_Read( vlc_object_t *p_this, int fd, uint8_t *p_data, int i_data,
/* On win32 recv() will fail if the datagram doesn't fit inside
* the passed buffer, even though the buffer will be filled with
* the first part of the datagram. */
if( WSAGetLastError() == WSAEMSGSIZE )
if( WSAGetLastError() == WSAEMSGSIZE )
{
msg_Err( p_this, "recv() failed. "
"Increase the mtu size (--mtu option)" );
......
......@@ -2,7 +2,7 @@
* objects.c: vlc_object_t handling
*****************************************************************************
* Copyright (C) 2004 VideoLAN
* $Id: objects.c,v 1.44 2004/01/06 12:02:06 zorglub Exp $
* $Id: objects.c,v 1.45 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -84,7 +84,7 @@ static vlc_mutex_t structure_lock;
* so on, vlc_object_create will use its value for the object size.
*****************************************************************************/
/**
/**
* Initialize a vlc object
*
* This function allocates memory for a vlc object and initializes it. If
......@@ -263,7 +263,7 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
/**
****************************************************************************
* Destroy a vlc object
*
*
* This function destroys an object that has been previously allocated with
* vlc_object_create. The object's refcount must be zero and it must not be
* attached to other objects in any way.
......
......@@ -2,7 +2,7 @@
* variables.c: routines for object variables handling
*****************************************************************************
* Copyright (C) 2002-2004 VideoLAN
* $Id: variables.c,v 1.36 2004/01/09 20:36:21 hartman Exp $
* $Id: variables.c,v 1.37 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -76,7 +76,7 @@ static void DupList( vlc_value_t *p_val )
switch( p_val->p_list->pi_types[i] & VLC_VAR_TYPE )
{
case VLC_VAR_STRING:
DupString( &p_list->p_values[i] );
break;
default:
......
......@@ -2,7 +2,7 @@
* win32_specific.c: Win32 specific features
*****************************************************************************
* Copyright (C) 2001-2004 VideoLAN
* $Id: win32_specific.c,v 1.31 2004/01/09 12:23:46 gbazin Exp $
* $Id: win32_specific.c,v 1.32 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Gildas Bazin <gbazin@netcourrier.com>
......@@ -109,7 +109,7 @@ void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
fprintf( stderr, "error: can't initialize WinSocks\n" );
return;
return;
#endif
}
......@@ -147,14 +147,14 @@ void system_Configure( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
{
HANDLE hmutex;
msg_Info( p_this, "One instance mode ENABLED");
msg_Info( p_this, "one instance mode ENABLED");
/* Use a named mutex to check if another instance is already running */
if( ( hmutex = CreateMutex( NULL, TRUE, "VLC ipc "VERSION ) ) == NULL )
{
/* Failed for some reason. Just ignore the option and go on as
* normal. */
msg_Err( p_this, "One instance mode DISABLED "
msg_Err( p_this, "one instance mode DISABLED "
"(mutex couldn't be created)" );
return;
}
......@@ -169,7 +169,7 @@ void system_Configure( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
if( vlc_thread_create( p_helper, "IPC helper", IPCHelperThread,
VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) )
{
msg_Err( p_this, "One instance mode DISABLED "
msg_Err( p_this, "one instance mode DISABLED "
"(IPC helper thread couldn't be created)" );
}
......@@ -192,7 +192,7 @@ void system_Configure( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
if( ( ipcwindow = FindWindow( NULL, "VLC ipc "VERSION ) )
== NULL )
{
msg_Err( p_this, "One instance mode DISABLED "
msg_Err( p_this, "one instance mode DISABLED "
"(couldn't find 1st instance of program)" );
ReleaseMutex( hmutex );
return;
......
......@@ -2,7 +2,7 @@
* playlist.c : Playlist groups management functions
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: group.c,v 1.8 2004/01/23 10:48:08 zorglub Exp $
* $Id: group.c,v 1.9 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
......@@ -63,7 +63,7 @@ playlist_group_t * playlist_CreateGroup(playlist_t * p_playlist, char *psz_name)
p_group->psz_name = strdup( psz_name );
p_group->i_id = ++p_playlist->i_last_group;
msg_Dbg(p_playlist,"Creating group %s with id %i at position %i",
msg_Dbg(p_playlist,"creating group %s with id %i at position %i",
p_group->psz_name,
p_group->i_id,
p_playlist->i_groups);
......
......@@ -2,7 +2,7 @@
* info.c : Playlist info management
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: info.c,v 1.6 2004/01/23 10:48:08 zorglub Exp $
* $Id: info.c,v 1.7 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
......@@ -384,7 +384,7 @@ int playlist_AddOption( playlist_t *p_playlist, int i_item,
return VLC_EGENERIC;
}
p_cat = playlist_GetCategory( p_playlist, i_item , "Options" );
p_cat = playlist_GetCategory( p_playlist, i_item , _("Options") );
if( p_cat == NULL)
{
......@@ -422,7 +422,7 @@ int playlist_AddItemOption( playlist_item_t *p_item,
item_info_t *p_info = NULL;
item_info_category_t *p_cat;
p_cat = playlist_GetItemCategory( p_item, "Options" );
p_cat = playlist_GetItemCategory( p_item, _("Options") );
if( p_cat == NULL)
{
return VLC_EGENERIC;
......
......@@ -2,7 +2,7 @@
* item-ext.c : Exported playlist item functions
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: item-ext.c,v 1.11 2004/01/23 10:48:08 zorglub Exp $
* $Id: item-ext.c,v 1.12 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Clment Stenac <zorglub@videolan.org>
......@@ -488,7 +488,7 @@ int playlist_DisableGroup( playlist_t * p_playlist, int i_group)
int i;
vlc_mutex_lock( &p_playlist->object_lock );
msg_Dbg(p_playlist,"Disabling group %i",i_group);
msg_Dbg(p_playlist,"disabling group %i",i_group);
for( i = 0 ; i< p_playlist->i_size; i++ )
{
if( p_playlist->pp_items[i]->i_group == i_group )
......
......@@ -2,7 +2,7 @@
* loadsave.c : Playlist loading / saving functions
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: loadsave.c,v 1.8 2004/01/23 23:06:25 rocky Exp $
* $Id: loadsave.c,v 1.9 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -99,10 +99,10 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename ,
if( !p_export->p_file )
{
#ifdef HAVE_ERRNO_H
msg_Err( p_playlist , "Could not create playlist file %s"
msg_Err( p_playlist , "could not create playlist file %s"
" (%s)", psz_filename, strerror(errno) );
#else
msg_Err( p_playlist , "Could not create playlist file %s"
msg_Err( p_playlist , "could not create playlist file %s"
, psz_filename );
#endif
return VLC_EGENERIC;
......@@ -116,7 +116,7 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename ,
p_module = module_Need( p_playlist, "playlist export", psz_type);
if( !p_module )
{
msg_Warn( p_playlist, "Failed to export playlist" );
msg_Warn( p_playlist, "failed to export playlist" );
vlc_mutex_unlock( &p_playlist->object_lock );
return VLC_ENOOBJ;
}
......
......@@ -2,7 +2,7 @@
* playlist.c : Playlist management functions
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: playlist.c,v 1.75 2004/01/23 10:48:08 zorglub Exp $
* $Id: playlist.c,v 1.76 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -103,7 +103,7 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent )
p_playlist->i_sort = SORT_ID;
p_playlist->i_order = ORDER_NORMAL;
playlist_CreateGroup( p_playlist, "Normal" );
playlist_CreateGroup( p_playlist, _("Normal") );
if( vlc_thread_create( p_playlist, "playlist", RunThread,
VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) )
......
......@@ -5,7 +5,7 @@
* thread, and destroy a previously oppened video output thread.
*****************************************************************************
* Copyright (C) 2000-2004 VideoLAN
* $Id: video_output.c,v 1.244 2004/01/10 13:59:25 rocky Exp $
* $Id: video_output.c,v 1.245 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
......@@ -70,10 +70,10 @@ static int FilterCallback( vlc_object_t *, char const *,
*
* Set the i_aspect_x and i_aspect_y from i_aspect.
*/
void vout_AspectRatio( unsigned int i_aspect,
/*out*/ unsigned int *i_aspect_x,
/*out*/ unsigned int *i_aspect_y )
{
void vout_AspectRatio( unsigned int i_aspect,
/*out*/ unsigned int *i_aspect_x,
/*out*/ unsigned int *i_aspect_y )
{
unsigned int i_pgcd = ReduceHeight( i_aspect );
*i_aspect_x = i_aspect / i_pgcd;
*i_aspect_y = VOUT_ASPECT_FACTOR / i_pgcd;
......@@ -108,7 +108,7 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
}
else
{
msg_Dbg( p_this, "cannot find playlist destroying vout" );
msg_Dbg( p_this, "cannot find playlist, destroying vout" );
vlc_object_detach( p_vout );
vout_Destroy( p_vout );
}
......@@ -348,9 +348,9 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
if( i_new_aspect && i_new_aspect != i_aspect )
{
unsigned int i_aspect_x, i_aspect_y;
vout_AspectRatio( i_new_aspect, &i_aspect_x, &i_aspect_y );
unsigned int i_aspect_x, i_aspect_y;
vout_AspectRatio( i_new_aspect, &i_aspect_x, &i_aspect_y );
msg_Dbg( p_vout, "overriding source aspect ratio to %i:%i",
i_aspect_x, i_aspect_y );
......@@ -504,16 +504,16 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
* update using one of the THREAD_* constants.
*****************************************************************************/
void vout_Destroy( vout_thread_t *p_vout )
{
{
vlc_object_t *p_playlist;
/* Request thread destruction */
p_vout->b_die = VLC_TRUE;
vlc_thread_join( p_vout );
var_Destroy( p_vout, "intf-change" );
p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST,
p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_vout->psz_filter_chain ) free( p_vout->psz_filter_chain );
......@@ -524,7 +524,7 @@ void vout_Destroy( vout_thread_t *p_vout )
/* If it was the last vout, tell the interface to show up */
if( p_playlist != NULL )
{
vout_thread_t *p_another_vout = vlc_object_find( p_playlist,
vout_thread_t *p_another_vout = vlc_object_find( p_playlist,
VLC_OBJECT_VOUT, FIND_ANYWHERE );
if( p_another_vout == NULL )
{
......@@ -599,7 +599,7 @@ static int InitThread( vout_thread_t *p_vout )
if( i_new_aspect && i_new_aspect != p_vout->output.i_aspect )
{
vout_AspectRatio( i_new_aspect, &i_aspect_x, &i_aspect_y );
vout_AspectRatio( i_new_aspect, &i_aspect_x, &i_aspect_y );
msg_Dbg( p_vout, "output ratio forced to %i:%i\n",
i_aspect_x, i_aspect_y );
......@@ -1109,7 +1109,7 @@ static void EndThread( vout_thread_t *p_vout )
{
module_Unneed( p_vout, p_vout->chroma.p_module );
}
/* Destroy all remaining pictures */
for( i_index = 0; i_index < 2 * VOUT_MAX_PICTURES; i_index++ )
{
......@@ -1131,7 +1131,7 @@ static void EndThread( vout_thread_t *p_vout )
if( p_vout->p_text_renderer_module )
module_Unneed( p_vout, p_vout->p_text_renderer_module );
/* Destroy translation tables */
p_vout->pf_end( p_vout );
......@@ -1162,7 +1162,7 @@ static int ReduceHeight( int i_ratio )
{
int i_dummy = VOUT_ASPECT_FACTOR;
int i_pgcd = 1;
if( !i_ratio )
{
return i_pgcd;
......
......@@ -2,7 +2,7 @@
* vout_pictures.c : picture management functions
*****************************************************************************
* Copyright (C) 2000-2004 VideoLAN
* $Id: vout_pictures.c,v 1.44 2004/01/06 12:02:06 zorglub Exp $
* $Id: vout_pictures.c,v 1.45 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
......@@ -260,7 +260,7 @@ void vout_UnlinkPicture( vout_thread_t *p_vout, picture_t *p_pic )
if( p_pic->i_refcount < 0 )
{
msg_Err( p_vout, "picture %p refcount is %i",
msg_Err( p_vout, "picture %p refcount is %i",
p_pic, p_pic->i_refcount );
p_pic->i_refcount = 0;
}
......
......@@ -2,7 +2,7 @@
* vout_synchro.c : frame dropping routines
*****************************************************************************
* Copyright (C) 1999-2004 VideoLAN
* $Id: vout_synchro.c,v 1.6 2004/01/06 12:02:06 zorglub Exp $
* $Id: vout_synchro.c,v 1.7 2004/01/25 17:16:06 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr>
......@@ -64,7 +64,7 @@
* ========================
* On fast machines, we decode all I's.
* Otherwise :
* We can decode an I picture if we simply have enough time to decode it
* We can decode an I picture if we simply have enough time to decode it
* before displaying :
* t0 - t > tauI + DELTA
*
......@@ -139,7 +139,7 @@ vout_synchro_t * __vout_SynchroInit( vlc_object_t * p_object,
p_synchro->current_pts = mdate() + DEFAULT_PTS_DELAY;
p_synchro->backward_pts = 0;
p_synchro->i_current_period = p_synchro->i_backward_period = 0;
p_synchro->i_trashed_pic = p_synchro->i_not_chosen_pic =
p_synchro->i_trashed_pic = p_synchro->i_not_chosen_pic =
p_synchro->i_pic = 0;
p_synchro->i_frame_rate = i_frame_rate;
......@@ -352,7 +352,7 @@ void vout_SynchroNewPicture( vout_synchro_t * p_synchro, int i_coding_type,
mtime_t period = 1000000 * 1001 / p_synchro->i_frame_rate
* i_current_rate / DEFAULT_RATE;
#if 0
mtime_t now = mdate();
mtime_t now = mdate();
#endif
p_synchro->i_current_rate = i_current_rate;
......@@ -426,7 +426,7 @@ void vout_SynchroNewPicture( vout_synchro_t * p_synchro, int i_coding_type,
p_synchro->current_pts += p_synchro->i_current_period
* (period >> 1);
#define PTS_THRESHOLD (period >> 2)
if( i_coding_type == B_CODING_TYPE )
{
......@@ -457,7 +457,7 @@ void vout_SynchroNewPicture( vout_synchro_t * p_synchro, int i_coding_type,
if( p_synchro->backward_pts )
{
if( next_dts &&
if( next_dts &&
(next_dts - p_synchro->backward_pts
> PTS_THRESHOLD
|| p_synchro->backward_pts - next_dts
......
......@@ -2,7 +2,7 @@
* vlc.c: the vlc player
*****************************************************************************
* Copyright (C) 1998-2004 VideoLAN
* $Id: vlc.c,v 1.20 2004/01/06 12:02:05 zorglub Exp $
* $Id: vlc.c,v 1.21 2004/01/25 17:16:05 zorglub Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
......@@ -51,7 +51,7 @@ int main( int i_argc, char *ppsz_argv[] )
{
int i_ret;
fprintf( stderr, "VideoLAN Client %s\n", VLC_Version() );
fprintf( stderr, "VLC media player %s\n", VLC_Version() );
#ifdef HAVE_PUTENV
# ifdef DEBUG
......
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