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.
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
* 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>
*
#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;
-};
-
* 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>
*
#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\
#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\
#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\
#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\
* 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>
*
* 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
*****************************************************************************/
* 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>
#endif
#include "vdec_ext-plugins.h"
+#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"
* 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>
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
+#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"
* 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>
#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
* 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>
*
#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
* 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>
*
* 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 */
/* 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 * );
* 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>
#include <vlc/decoder.h>
#include "vdec_ext-plugins.h"
+#include "video_decoder.h"
#include "vpar_pool.h"
#include "video_parser.h"
#. * 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>
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 ""
* 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>
*
class VlcApplication : public BApplication
{
public:
+ vlc_object_t *p_object;
+
VlcApplication(char* );
~VlcApplication();
/*****************************************************************************
* 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"
{
/*****************************************************************************
* 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 );
-
- /* Create the BApplication thread */
- vlc_thread_create( p_this, &app_thread, "app thread",
- (vlc_thread_func_t)system_AppThread, 0 );
-
- /* 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 );
+ p_appthread = vlc_object_create( p_this, sizeof(vlc_object_t) );
+
+ /* Create the BApplication thread and wait for initialization */
+ vlc_thread_create( p_appthread, "app thread", AppThread, 1 );
+
+ vlc_object_attach( p_appthread, p_this->p_vlc );
}
/*****************************************************************************
*****************************************************************************/
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 );
}
/*****************************************************************************
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 );
}
* 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>
*
}
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 )
}
}
-/* 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;
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;