* ./src/misc/beos_specific.cpp: the BeOS BApplication thread now uses the

vlc_thread_create / vlc_thread_ready scheme to signal readiness.
  * ./src/misc/objects.c: prevent the creation of a too small vlc_object_t.
  * ./include/vdec_ext-plugins.h: removed the vdec_thread_t declaration, which
    belongs to plugins/mpeg_vdec.
  * ./ChangeLog: imported the 0_4_1_branch changelog.
  * ./plugins/chroma/i420_yuy2.h: imported a 0_4_1_branch fix.
This commit is contained in:
Sam Hocevar 2002-06-01 13:52:24 +00:00
parent 9e3ab283c2
commit 23379347d1
13 changed files with 153 additions and 99 deletions

View File

@ -4,7 +4,84 @@
HEAD
* Nothing yet.
* ./src/misc/beos_specific.cpp: the BeOS BApplication thread now uses the
vlc_thread_create / vlc_thread_ready scheme to signal readiness.
* ./src/misc/objects.c: prevent the creation of a too small vlc_object_t.
* ./include/vdec_ext-plugins.h: removed the vdec_thread_t declaration, which
belongs to plugins/mpeg_vdec.
* ALL: the first libvlc commit.
0.4.1
* ./plugins/chroma/i420_yuy2.h: simplified the chroma code. Please test
under BeOS and QNX.
* ./plugins/macosx/intf_vlc_wrapper.m: fix for non-ASCII filenames in the
MacOS X interface, courtesy of Watanabe Go <go@dsl.gr.jp>.
* ./plugins/chroma/i420_yuy2.h: fixed an old overflow bug spotted by
Rudolf Cornelissen.
* ./plugins/chroma/i420_rgb16.c: fix for skewed display in software RV32
mode, courtesy of Pascal Levesque.
* ./plugins/beos/InterfaceWindow.h: stopped more than one playlist being
opened.
* ./plugins/beos/InterfaceWindow.cpp: fixed segfault on exit with playlist
open.
* ./plugins/beos/vout_beos.cpp: corrected size of output window.
* ./plugins/a52/a52.c, ./plugins/satellite/satellite_tools.c: compilation
fixes for Solaris.
* ./plugins/sdl/aout_sdl.c: fixed an endianness issue created by a
brain-dead developer :p
* ./plugins/win32/mainframe.cpp: the "Eject" button is enabled only after we
played a dvd or vcd.
* ./plugins/win32/mainframe.cpp: the toolbar is now flat and less cubist.
* ./plugins/win32/mainframe.cpp: got rid of the ugly slider with some winXP
skins.
* ./plugins/win32/messages.cpp: added a config option to limit the number of
messages in the log window (default is set to 500).
* ./plugins/mpeg_vdec/vpar_headers.c: don't try to deference a null
pointer.
* ./plugins/gtk/gnome.c: compilation fix.
* ./src/misc/netutils.c: removed the obsolete artificial delay when switching
channels.
* ./src/interface/intf_eject.c: added ejection code for Win32.
* ./plugins/win32/*: enabled the "Eject" button (thanks Ipkiss).
* ./include/configuration.h: changed ADD_BOOL and ADD_BOOL_WITH_SHORT config
macros to accept a default value as an argument.
* ./src/misc/configuration.c: modified the command line parsing to accept
--foo and --no-foo when a "foo" boolean config option is defined.
* ./src/interface/main.c: modified the help menu to indicate whether the
option is enabled or disabled by default.
* ./src/video_output/video_output.c: when the video output hasn't received
a new picture for a while, it redisplays the last displayed one. This will
be useful for DVD menus, but also solves the "picture becomes black when
vlc is paused" issue.
* ./plugins/dummy/dummy.c: added a CATEGORY_HINT to the config.
* ./plugins/x11/xcommon.c: small change to the ToggleFullscreen routine
to avoid a flickering during the switch.
* ./plugins/filters/*: fixed inconsistencies.
* ./plugins/win32/mainframe.dfm: new icons for the toolbar buttons.
* ./plugins/win32/network.cpp: URL can now start with "http://" in the
Network dialog box.
* ./plugins/win32/about.dfm: updated the About dialog box.
* ./include/video.h: added a b_force flag to picture_t so that we can force
the display of an image even if it is late.
* ./plugins/filter/*: filters are now configurable through the configuration
system. Patch from Sigmund Augdal <sigmunau@stud.ntnu.no>.
* ./po/vlc.pot: updated potfile.
* ./po/pl.po: polish translation, courtesy of Arkadiusz Lipiec
<A.Lipiec@elka.pw.edu.pl>.
* ./debian/control: updated Debian package descriptions.
* ./plugins/aa/aa.c: removed all palette code as it was unused.
* ./plugins/aa/aa.c: moved the aa_fastrender call from vout_Display to
vout_Render.
* ./plugins/aa/aa.c: added support for resizing and right-click menu.
* ./src/input/mpeg_system.c: in order to make ac3 working in avi file, moved
some code from ac3 decoder to mpeg_system.c. (skip 3 bytes is now done in
mpeg_system.c and no longer in ac3 audio decoder).
* src/misc/netutils.c: tests if message from vlcs begins with 'E:' or 'I:'
instead of testing 'E: ' and 'I: ' (to simplify miniVLCS).
* ./plugins/avi/avi.c, ./plugins/avi/libioRIFF.c: added more safety tests.
* ./include/inpu_ext-dec.h: added a check to fifo->b_die after the call
to BitstreamNextDataPacket() in GetChunk().
0.4.0
Thu, 23 May 2002 01:27:05 +0200

View File

@ -2,7 +2,7 @@
* vdec_ext-plugins.h : structures from the video decoder exported to plug-ins
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: vdec_ext-plugins.h,v 1.12 2002/06/01 12:31:58 sam Exp $
* $Id: vdec_ext-plugins.h,v 1.13 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
@ -74,19 +74,3 @@ struct macroblock_s
#define MB_QUANT 16
#define DCT_TYPE_INTERLACED 32
/*****************************************************************************
* vdec_thread_t: video decoder thread descriptor
*****************************************************************************/
typedef struct vdec_thread_s vdec_thread_t;
struct vdec_thread_s
{
VLC_COMMON_MEMBERS
/* IDCT iformations */
void * p_idct_data;
/* Input properties */
struct vdec_pool_s * p_pool;
};

View File

@ -2,7 +2,7 @@
* i420_yuy2.h : YUV to YUV conversion module for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: i420_yuy2.h,v 1.8 2002/06/01 12:31:58 sam Exp $
* $Id: i420_yuy2.h,v 1.9 2002/06/01 13:52:24 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
@ -24,43 +24,25 @@
#ifdef MODULE_NAME_IS_chroma_i420_yuy2_mmx
#define UNUSED_LONGLONG(foo) \
static const unsigned long long foo __asm__ (#foo) __attribute__((unused))
unsigned long long foo __asm__ (#foo) __attribute__((unused))
UNUSED_LONGLONG(woo_00ffw) = 0x00ff00ff00ff00ff;
UNUSED_LONGLONG(woo_80w) = 0x0000000080808080;
#define MMX_LOAD " \n\
movl %9,%%ebx \n\
"
#define MMX_SAVE " \n\
movl %%ebx,%9 \n\
"
#define MMX_INC " \n\
addl $16, %0 \n\
addl $16, %1 \n\
addl $8, %2 \n\
addl $8, %3 \n\
addl $4, %%eax \n\
addl $4, %%ebx \n\
"
#define MMX_CALL(MMX_INSTRUCTIONS) \
__asm__ __volatile__( \
MMX_LOAD \
".align 8 \n\t" \
MMX_INSTRUCTIONS \
MMX_INC \
MMX_SAVE \
: "=c" (p_line1), "=d" (p_line2), "=D" (p_y1), "=S" (p_y2) \
: "c" (p_line1), "d" (p_line2), "D" (p_y1), "S" (p_y2), \
"a" (p_u), "m" (p_v) \
: "ebx", "memory" );
#define MMX_CALL(MMX_INSTRUCTIONS) \
do { \
__asm__ __volatile__( \
".align 8 \n\t" \
MMX_INSTRUCTIONS \
: \
: "r" (p_line1), "r" (p_line2), "r" (p_y1), "r" (p_y2), \
"r" (p_u), "r" (p_v) ); \
p_line1 += 16; p_line2 += 16; p_y1 += 8; p_y2 += 8; p_u += 4; p_v += 4; \
} while(0); \
#define MMX_YUV420_YUYV " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movd (%%eax), %%mm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%%ebx), %%mm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd (%4), %%mm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%5), %%mm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # v3 u3 v2 u2 v1 u1 v0 u0 \n\
movq %%mm0, %%mm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\
punpcklbw %%mm1, %%mm2 # v1 y3 u1 y2 v0 y1 u0 y0 \n\
@ -77,8 +59,8 @@ movq %%mm0, 8(%1) # Store high YUYV \n\
#define MMX_YUV420_YVYU " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movd (%%eax), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%%ebx), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd (%4), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%5), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
movq %%mm0, %%mm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\
punpcklbw %%mm1, %%mm2 # u1 y3 v1 y2 u0 y1 v0 y0 \n\
@ -96,8 +78,8 @@ movq %%mm0, 8(%1) # Store high YUYV \n\
#define MMX_YUV420_UYVY " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movq (%3), %%mm3 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\
movd (%%eax), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%%ebx), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd (%4), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%5), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
movq %%mm1, %%mm2 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
punpcklbw %%mm0, %%mm2 # y3 v1 y2 u1 y1 v0 y0 u0 \n\
@ -116,8 +98,8 @@ movq %%mm1, 8(%1) # Store high UYVY \n\
#define MMX_YUV420_Y211 " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movq (%3), %%mm1 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\
movd (%%eax), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%%ebx), %%mm3 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd (%4), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd (%5), %%mm3 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
pand woo_00ffw, %%mm0 # get Y even 00 Y6 00 Y4 00 Y2 00 Y0 \n\
packuswb %%mm0, %%mm0 # pack Y y6 y4 y2 y0 y6 y4 y2 y0 \n\
pand woo_00ffw, %%mm2 # get U even 00 u6 00 u4 00 u2 00 u0 \n\

View File

@ -2,7 +2,7 @@
* video_decoder.h : video decoder thread
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: video_decoder.h,v 1.2 2002/06/01 12:32:00 sam Exp $
* $Id: video_decoder.h,v 1.3 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
@ -21,6 +21,21 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* vdec_thread_t: video decoder thread descriptor
*****************************************************************************/
typedef struct vdec_thread_s
{
VLC_COMMON_MEMBERS
/* IDCT iformations */
void * p_idct_data;
/* Input properties */
struct vdec_pool_s * p_pool;
} vdec_thread_t;
/*****************************************************************************
* Prototypes
*****************************************************************************/

View File

@ -2,7 +2,7 @@
* video_parser.c : video parser thread
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: video_parser.c,v 1.21 2002/06/01 12:32:00 sam Exp $
* $Id: video_parser.c,v 1.22 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr>
@ -43,6 +43,7 @@
#endif
#include "vdec_ext-plugins.h"
#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"

View File

@ -2,7 +2,7 @@
* vpar_blocks.c : blocks parsing
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: vpar_blocks.c,v 1.10 2002/06/01 12:32:00 sam Exp $
* $Id: vpar_blocks.c,v 1.11 2002/06/01 13:52:24 sam Exp $
*
* Authors: Michel Lespinasse <walken@zoy.org>
* Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
@ -33,6 +33,7 @@
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"

View File

@ -2,7 +2,7 @@
* vpar_headers.c : headers parsing
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: vpar_headers.c,v 1.23 2002/06/01 12:32:00 sam Exp $
* $Id: vpar_headers.c,v 1.24 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Stéphane Borel <stef@via.ecp.fr>
@ -33,9 +33,9 @@
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"
#include "video_decoder.h"
/*
* Local prototypes

View File

@ -2,7 +2,7 @@
* vpar_pool.c : management of the pool of decoder threads
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: vpar_pool.c,v 1.9 2002/06/01 12:32:00 sam Exp $
* $Id: vpar_pool.c,v 1.10 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
@ -32,9 +32,9 @@
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"
#include "video_decoder.h"
/*
* Local prototypes

View File

@ -2,7 +2,7 @@
* vpar_pool.h : video parser/video decoders communication
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: vpar_pool.h,v 1.3 2002/06/01 12:32:00 sam Exp $
* $Id: vpar_pool.h,v 1.4 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
@ -40,7 +40,7 @@ struct vdec_pool_s
* parser */
/* Video decoder threads */
struct vdec_thread_s ** pp_vdec; /* Array of video decoder threads */
vdec_thread_t ** pp_vdec; /* Array of video decoder threads */
int i_smp; /* Number of symmetrical decoder threads,
* hence size of the pp_vdec, p_macroblocks
* and pp_new_macroblocks array */
@ -59,7 +59,7 @@ struct vdec_pool_s
/* Undecoded macroblock, used when the parser and the decoder share the
* same thread */
macroblock_t mb;
struct vdec_thread_s * p_vdec; /* Fake video decoder */
vdec_thread_t * p_vdec; /* Fake video decoder */
/* Pointers to usual pool functions */
void (* pf_wait_pool) ( vdec_pool_t * );

View File

@ -2,7 +2,7 @@
* vpar_synchro.c : frame dropping routines
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: vpar_synchro.c,v 1.10 2002/06/01 12:32:00 sam Exp $
* $Id: vpar_synchro.c,v 1.11 2002/06/01 13:52:24 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr>
@ -102,6 +102,7 @@
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"

View File

@ -93,7 +93,7 @@ msgstr ""
#. * libvlc.h: main libvlc header
#. *****************************************************************************
#. * Copyright (C) 1998-2002 VideoLAN
#. * $Id: en_GB.po,v 1.5 2002/06/01 12:32:01 sam Exp $
#. * $Id: en_GB.po,v 1.6 2002/06/01 13:52:24 sam Exp $
#. *
#. * Authors: Vincent Seguin <seguin@via.ecp.fr>
#. * Samuel Hocevar <sam@zoy.org>
@ -173,7 +173,7 @@ msgid "audio output module"
msgstr ""
#: src/libvlc.h:58
#, fuzzy
msgid ""
"This option allows you to select the audio audio output method used by vlc. "
"The default behavior is to automatically select the best method available."
msgstr ""

View File

@ -2,7 +2,7 @@
* beos_init.cpp: Initialization for BeOS specific features
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: beos_specific.cpp,v 1.19 2002/06/01 12:32:01 sam Exp $
* $Id: beos_specific.cpp,v 1.20 2002/06/01 13:52:24 sam Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
*
@ -39,6 +39,8 @@ extern "C"
class VlcApplication : public BApplication
{
public:
vlc_object_t *p_object;
VlcApplication(char* );
~VlcApplication();
@ -49,10 +51,8 @@ public:
/*****************************************************************************
* Static vars
*****************************************************************************/
static vlc_thread_t app_thread;
static vlc_mutex_t app_lock;
static vlc_cond_t app_wait;
static char *psz_program_path;
static char * psz_program_path;
static vlc_object_t * p_appthread;
extern "C"
{
@ -60,29 +60,19 @@ extern "C"
/*****************************************************************************
* Local prototypes.
*****************************************************************************/
static void system_AppThread( void * args );
static void AppThread( vlc_object_t *p_appthread );
/*****************************************************************************
* system_Init: create a BApplication object and fill in program path.
*****************************************************************************/
void system_Init( vlc_object_t *p_this, int *pi_argc, char *ppsz_argv[] )
{
/* Prepare the lock/wait before launching the BApplication thread */
vlc_mutex_init( p_this, &app_lock );
vlc_cond_init( &app_wait );
vlc_mutex_lock( &app_lock );
p_appthread = vlc_object_create( p_this, sizeof(vlc_object_t) );
/* Create the BApplication thread */
vlc_thread_create( p_this, &app_thread, "app thread",
(vlc_thread_func_t)system_AppThread, 0 );
/* Create the BApplication thread and wait for initialization */
vlc_thread_create( p_appthread, "app thread", AppThread, 1 );
/* Wait for the application to be initialized */
vlc_cond_wait( &app_wait, &app_lock );
vlc_mutex_unlock( &app_lock );
/* Destroy the locks */
vlc_mutex_destroy( &app_lock );
vlc_cond_destroy( &app_wait );
vlc_object_attach( p_appthread, p_this->p_vlc );
}
/*****************************************************************************
@ -98,11 +88,15 @@ void system_Configure( vlc_object_t * )
*****************************************************************************/
void system_End( vlc_object_t *p_this )
{
free( psz_program_path );
vlc_object_unlink_all( p_appthread );
/* Tell the BApplication to die */
be_app->PostMessage( B_QUIT_REQUESTED );
vlc_thread_join( p_this, app_thread );
vlc_thread_join( p_appthread );
vlc_object_destroy( p_appthread );
free( psz_program_path );
}
/*****************************************************************************
@ -172,8 +166,6 @@ void VlcApplication::ReadyToRun( )
psz_program_path = strdup( path.Path() );
/* Tell the main thread we are finished initializing the BApplication */
vlc_mutex_lock( &app_lock );
vlc_cond_signal( &app_wait );
vlc_mutex_unlock( &app_lock );
vlc_thread_ready( p_appthread );
}

View File

@ -2,7 +2,7 @@
* objects.c: vlc_object_t handling
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: objects.c,v 1.1 2002/06/01 12:32:01 sam Exp $
* $Id: objects.c,v 1.2 2002/06/01 13:52:24 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
@ -101,8 +101,8 @@ static void vlc_dumpstructure_inner( vlc_object_t *p_this,
}
psz_foo[i_level] = '\0';
msg_Dbg( p_this, "%so %s %p%s%s%s%s", psz_foo, p_this->psz_object_type,
p_this, psz_name, psz_thread, psz_refcount, psz_children );
msg_Info( p_this, "%so %s %p%s%s%s%s", psz_foo, p_this->psz_object_type,
p_this, psz_name, psz_thread, psz_refcount, psz_children );
psz_foo[i_level] = i_back;
if( i_level / 2 >= MAX_TREE_DEPTH )
@ -139,7 +139,7 @@ static void vlc_dumpstructure_inner( vlc_object_t *p_this,
}
}
/* vlc_object_create: initialize a vlc object and set its parent */
/* vlc_object_create: initialize a vlc object */
void * __vlc_object_create( vlc_object_t *p_this, int i_type )
{
vlc_object_t * p_new;
@ -181,7 +181,8 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
psz_type = "audio output";
break;
default:
i_size = i_type;
i_size = i_type > sizeof(vlc_object_t)
? i_type : sizeof(vlc_object_t);
i_type = VLC_OBJECT_PRIVATE;
psz_type = "private";
break;