having met a zero-sized area.
* Found out how to type '�' in vim :-)
* Added missing bloat to modules_export.h.
* 'snapshot*' rules do not depend on 'clean', and don't use /tmp anymore.
* Added vlc:loop playlist command to go back at the beginning.
Usage: vlc file1.mpeg file2.mpeg ... fileN.mpeg vlc:loop
This change isn't very elegant but there are already bugs in the
playlist handling, I'll try to polish it once the playlist is fixed.
C: jimmy
D: IDCT and YUV transformations
-N: H}kan Hjort
+N: Håkan Hjort
E: d95hjort@dtek.chalmers.se
D: Solaris port of the DVD ioctls
HEAD
- * Solaris DVD decryption support by H}kan Hjort <d95hjort@dtek.chalmers.se>.
+ * Added vlc:loop playlist command to go back at the beginning.
+ Usage: vlc file1.mpeg file2.mpeg ... fileN.mpeg vlc:loop
+ * Fixed a bug in the gtk interface which caused vlc to go amok after
+ having met a zero-sized area.
+ * 'snapshot*' rules do not depend on 'clean', and don't use /tmp anymore.
+ * Solaris DVD decryption support by Håkan Hjort <d95hjort@dtek.chalmers.se>.
0.2.82
Tue, 7 Aug 2001 12:39:16 +0200
#
# Misc variables
#
-VLC_QUICKVERSION := $(shell grep 'VLC_VERSION=' configure.in | cut -f2 -d=)
-LIBDVDCSS_QUICKVERSION := $(shell grep 'LIBDVDCSS_VERSION=' configure.in | cut -f2 -d=)
+VLC_QUICKVERSION := $(shell grep '^ *VLC_VERSION=' configure.in | cut -f2 -d=)
+LIBDVDCSS_QUICKVERSION := $(shell grep '^ *LIBDVDCSS_VERSION=' configure.in | cut -f2 -d=)
# All symbols must be exported
#
# Package generation rules
#
-snapshot-common: clean
- rm -Rf /tmp/vlc
- # Copy directory structure in /tmp
- find -type d | grep -v CVS | grep -v '\.dep' | while read i ; \
- do mkdir -p /tmp/vlc/$$i ; \
+snapshot-common:
+ # Check that tmp isn't in the way
+ @if test -e tmp; then \
+ echo "Error: please remove ./tmp, it is in the way"; false; \
+ else \
+ echo "OK."; mkdir tmp; \
+ fi
+ # Copy directory structure in tmp
+ find -type d | grep -v '\(\.dep\|snapshot\|CVS\)' | while read i ; \
+ do mkdir -p tmp/vlc/$$i ; \
done
find debian -mindepth 1 -maxdepth 1 -type d | \
- while read i ; do rm -Rf /tmp/vlc/$$i ; done
+ while read i ; do rm -Rf tmp/vlc/$$i ; done
# Copy .c .h .in .cpp and .glade files
find include src plugins -type f -name '*.[chig]*' | while read i ; \
- do cp $$i /tmp/vlc/$$i ; done
+ do cp $$i tmp/vlc/$$i ; done
# Copy plugin Makefiles
find plugins -type f -name Makefile | while read i ; \
- do cp $$i /tmp/vlc/$$i ; done
+ do cp $$i tmp/vlc/$$i ; done
# Copy extra programs and documentation
- cp -a extras/* /tmp/vlc/extras
- cp -a doc/* /tmp/vlc/doc
- find /tmp/vlc/extras /tmp/vlc/doc \
- -type d -name CVS -o -type f -name '.*' | while read i ; \
- do rm -Rf $$i ; done
+ cp -a extras/* tmp/vlc/extras
+ cp -a doc/* tmp/vlc/doc
+ find tmp/vlc/extras tmp/vlc/doc \
+ -type d -name CVS -o -name '.*' -o -name '*.[o]' | \
+ while read i ; do rm -Rf $$i ; done
# Copy misc files
cp vlc.spec AUTHORS COPYING TODO todo.pl ChangeLog README* INSTALL* \
Makefile Makefile.opts.in Makefile.dep Makefile.modules \
configure configure.in install-sh config.sub config.guess \
- /tmp/vlc/
+ tmp/vlc/
# Copy Debian control files
for file in debian/*dirs debian/*docs debian/*menu debian/*desktop \
- debian/*copyright ; do cp $$file /tmp/vlc/debian ; done
+ debian/*copyright ; do cp $$file tmp/vlc/debian ; done
for file in control changelog rules ; do \
- cp debian/$$file /tmp/vlc/debian/ ; done
+ cp debian/$$file tmp/vlc/debian/ ; done
# Copy fonts and icons
for file in share/*png share/*xpm share/*psf ; do \
- cp $$file /tmp/vlc/share ; done
+ cp $$file tmp/vlc/share ; done
for file in vlc_beos.rsrc vlc.icns gvlc_win32.ico vlc_win32_rc.rc ; do \
- cp share/$$file /tmp/vlc/share/ ; done
+ cp share/$$file tmp/vlc/share/ ; done
snapshot: snapshot-common
- # Build archives and clean up
+ # Build archives
F=vlc-${VLC_QUICKVERSION}; \
- rm -Rf /tmp/$$F ; mv /tmp/vlc /tmp/$$F; \
- (cd /tmp ; tar cf $$F.tar $$F ; bzip2 -f -9 < $$F.tar > $$F.tar.bz2; \
- gzip -f -9 $$F.tar ); mv /tmp/$$F.tar.gz /tmp/$$F.tar.bz2 ..; \
- rm -Rf /tmp/$$F
+ mv tmp/vlc tmp/$$F; (cd tmp ; tar cf $$F.tar $$F); \
+ bzip2 -f -9 < tmp/$$F.tar > $$F.tar.bz2; \
+ gzip -f -9 tmp/$$F.tar ; mv tmp/$$F.tar.gz .
+ # Clean up
+ rm -Rf tmp
snapshot-nocss: snapshot-common
# Remove libdvdcss
- rm -Rf /tmp/vlc/extras/libdvdcss
- rm -f /tmp/vlc/*.libdvdcss
+ rm -Rf tmp/vlc/extras/libdvdcss
+ rm -f tmp/vlc/*.libdvdcss
# Fix debian information
- rm -f /tmp/vlc/debian/libdvdcss*
- rm -f /tmp/vlc/debian/control
+ rm -f tmp/vlc/debian/libdvdcss*
+ rm -f tmp/vlc/debian/control
sed -e 's#^ DVDs# unencrypted DVDs#' < debian/control \
| awk '{if(gsub("Package: libdvdcss",$$0))a=1;if(a==0)print $$0;if(a==1&&$$0=="")a=0}' \
- > /tmp/vlc/debian/control
- rm -f /tmp/vlc/debian/rules
+ > tmp/vlc/debian/control
+ rm -f tmp/vlc/debian/rules
sed -e 's#^\(export LIBDVDCSS_FLAGS=\).*#\1"--without-dvdcss"#' < debian/rules \
| awk '{if($$0=="# libdvdcss start")a=1;if(a==0)print $$0;if($$0=="# libdvdcss stop")a=0}' \
- > /tmp/vlc/debian/rules
- chmod +x /tmp/vlc/debian/rules
- # Build css-disabled archives and clean up
+ > tmp/vlc/debian/rules
+ chmod +x tmp/vlc/debian/rules
+ # Build css-disabled archives
F=vlc-${VLC_QUICKVERSION}; G=vlc-${VLC_QUICKVERSION}-nocss; \
- rm -Rf /tmp/$$F ; mv /tmp/vlc /tmp/$$F; \
- (cd /tmp ; tar cf $$G.tar $$F ; bzip2 -f -9 < $$G.tar > $$G.tar.bz2; \
- gzip -f -9 $$G.tar ); mv /tmp/$$G.tar.gz /tmp/$$G.tar.bz2 ..; \
- rm -Rf /tmp/$$F
+ mv tmp/vlc tmp/$$F; (cd tmp ; tar cf $$G.tar $$F); \
+ bzip2 -f -9 < tmp/$$G.tar > $$G.tar.bz2; \
+ gzip -f -9 tmp/$$G.tar ; mv tmp/$$G.tar.gz .
+ # Clean up
+ rm -Rf tmp
libdvdcss-snapshot: snapshot-common
# Remove vlc sources and icons, doc, debian directory...
- rm -Rf /tmp/vlc/src /tmp/vlc/share /tmp/vlc/plugins /tmp/vlc/doc
- rm -Rf /tmp/vlc/extras/GNUgetopt /tmp/vlc/extras/MacOSX_app
- rm -Rf /tmp/vlc/debian
+ rm -Rf tmp/vlc/src tmp/vlc/share tmp/vlc/plugins tmp/vlc/doc
+ rm -Rf tmp/vlc/extras/GNUgetopt tmp/vlc/extras/MacOSX_app
+ rm -Rf tmp/vlc/debian
# Remove useless headers
- rm -f /tmp/vlc/include/*
+ rm -f tmp/vlc/include/*
for file in defs.h.in config.h.in common.h int_types.h ; \
- do cp include/$$file /tmp/vlc/include/ ; done
+ do cp include/$$file tmp/vlc/include/ ; done
# Remove misc files (??? - maybe not really needed)
- rm -f /tmp/vlc/vlc.spec /tmp/vlc/INSTALL-win32.txt
- mv /tmp/vlc/INSTALL.libdvdcss /tmp/vlc/INSTALL
- mv /tmp/vlc/README.libdvdcss /tmp/vlc/README
+ rm -f tmp/vlc/vlc.spec tmp/vlc/INSTALL-win32.txt
+ mv tmp/vlc/INSTALL.libdvdcss tmp/vlc/INSTALL
+ mv tmp/vlc/README.libdvdcss tmp/vlc/README
# Fix Makefile
- rm -f /tmp/vlc/Makefile
+ rm -f tmp/vlc/Makefile
sed -e 's#^install:#install-unused:#' \
-e 's#^uninstall:#uninstall-unused:#' \
-e 's#^clean:#clean-unused:#' \
-e 's#^libdvdcss-install:#install:#' \
-e 's#^libdvdcss-uninstall:#uninstall:#' \
-e 's#^libdvdcss-clean:#clean:#' \
- < Makefile > /tmp/vlc/Makefile
- # Build archives and clean up
+ < Makefile > tmp/vlc/Makefile
+ # Build archives
F=libdvdcss-${LIBDVDCSS_QUICKVERSION}; \
- rm -Rf /tmp/$$F ; mv /tmp/vlc /tmp/$$F; \
- (cd /tmp ; tar cf $$F.tar $$F ; bzip2 -f -9 < $$F.tar > $$F.tar.bz2; \
- gzip -f -9 $$F.tar ); mv /tmp/$$F.tar.gz /tmp/$$F.tar.bz2 ..; \
- rm -Rf /tmp/$$F
+ mv tmp/vlc tmp/$$F; (cd tmp ; tar cf $$F.tar $$F); \
+ bzip2 -f -9 < tmp/$$F.tar > $$F.tar.bz2; \
+ gzip -f -9 tmp/$$F.tar ; mv tmp/$$F.tar.gz .
+ # Clean up
+ rm -Rf tmp
deb:
dpkg-buildpackage -rfakeroot -us -uc
* ioctl.c: DVD ioctl replacement function
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: ioctl.c,v 1.8 2001/08/08 02:48:44 sam Exp $
+ * $Id: ioctl.c,v 1.9 2001/08/09 08:20:26 sam Exp $
*
* Authors: Markus Kuespert <ltlBeBoy@beosmail.com>
* Samuel Hocevar <sam@zoy.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
+ * Håkan Hjort <d95hjort@dtek.chalmers.se>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
void ( * input_DelArea ) ( struct input_thread_s *,
struct input_area_s * );
+ void ( * InitBitstream ) ( struct bit_stream_s *,
+ struct decoder_fifo_s *,
+ void ( * ) ( struct bit_stream_s *,
+ boolean_t ),
+ void * );
int ( * input_InitStream ) ( struct input_thread_s *, size_t );
void ( * input_EndStream ) ( struct input_thread_s * );
struct data_packet_s *,
struct es_descriptor_s *,
boolean_t, boolean_t );
+ void ( * input_DecodePES ) ( struct decoder_fifo_s *,
+ struct pes_packet_s * );
struct es_descriptor_s * ( * input_ParsePS ) ( struct input_thread_s *,
struct data_packet_s * );
void ( * input_DemuxPS ) ( struct input_thread_s *,
struct es_descriptor_s *,
boolean_t, boolean_t );
+ int ( * input_ClockManageControl ) ( struct input_thread_s *,
+ struct pgrm_descriptor_s *,
+ mtime_t );
+
int ( * input_NetlistInit ) ( struct input_thread_s *,
int, int, size_t, int );
struct iovec * ( * input_NetlistGetiovec ) ( void * p_method_data );
(p_symbols)->input_DelProgram = input_DelProgram; \
(p_symbols)->input_AddArea = input_AddArea; \
(p_symbols)->input_DelArea = input_DelArea; \
+ (p_symbols)->InitBitstream = InitBitstream; \
(p_symbols)->input_InitStream = input_InitStream; \
(p_symbols)->input_EndStream = input_EndStream; \
(p_symbols)->input_ParsePES = input_ParsePES; \
(p_symbols)->input_GatherPES = input_GatherPES; \
+ (p_symbols)->input_DecodePES = input_DecodePES; \
(p_symbols)->input_ParsePS = input_ParsePS; \
(p_symbols)->input_DemuxPS = input_DemuxPS; \
(p_symbols)->input_DemuxTS = input_DemuxTS; \
(p_symbols)->input_DemuxPSI = input_DemuxPSI; \
+ (p_symbols)->input_ClockManageControl = input_ClockManageControl; \
(p_symbols)->input_NetlistInit = input_NetlistInit; \
(p_symbols)->input_NetlistGetiovec = input_NetlistGetiovec; \
(p_symbols)->input_NetlistMviovec = input_NetlistMviovec; \
# define input_AddArea p_symbols->input_AddArea
# define input_DelArea p_symbols->input_DelArea
+# define InitBitstream p_symbols->InitBitstream
# define input_InitStream p_symbols->input_InitStream
# define input_EndStream p_symbols->input_EndStream
# define input_ParsePES p_symbols->input_ParsePES
# define input_GatherPES p_symbols->input_GatherPES
+# define input_DecodePES p_symbols->input_DecodePES
# define input_ParsePS p_symbols->input_ParsePS
# define input_DemuxPS p_symbols->input_DemuxPS
# define input_DemuxTS p_symbols->input_DemuxTS
# define input_DemuxPSI p_symbols->input_DemuxPSI
+# define input_ClockManageControl p_symbols->input_ClockManageControl
+
# define input_NetlistInit p_symbols->input_NetlistInit
# define input_NetlistGetiovec p_symbols->input_NetlistGetiovec
# define input_NetlistMviovec p_symbols->input_NetlistMviovec
* input_dummy.c: dummy input plugin, to manage "vlc:***" special options
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: input_dummy.c,v 1.4 2001/07/26 03:13:30 sam Exp $
+ * $Id: input_dummy.c,v 1.5 2001/08/09 08:20:26 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
#include "interface.h"
#include "intf_msg.h"
+#include "intf_playlist.h"
#include "main.h"
/* Check for a "vlc:quit" command */
if( i_len == 4 && !strncasecmp( psz_name, "quit", 4 ) )
{
- intf_WarnMsg( 1, "input: playlist command `quit'" );
+ intf_WarnMsg( 2, "input: command `quit'" );
p_main->p_intf->b_die = 1;
return;
}
+ /* Check for a "vlc:loop" command */
+ if( i_len == 4 && !strncasecmp( psz_name, "loop", 4 ) )
+ {
+ intf_WarnMsg( 2, "input: command `loop'" );
+ intf_PlaylistJumpto( p_main->p_playlist, -1 );
+ return;
+ }
+
/* Check for a "vlc:pause:***" command */
if( i_len > 6 && !strncasecmp( psz_name, "pause:", 6 ) )
{
i_arg = atoi( psz_name + 6 );
- intf_WarnMsgImm( 1, "input: playlist command `pause %i'", i_arg );
+ intf_WarnMsgImm( 2, "input: command `pause %i'", i_arg );
msleep( i_arg * 1000000 );
return;
}
- intf_ErrMsg( "input error: unknown playlist command `%s'", psz_name );
+ intf_ErrMsg( "input error: unknown command `%s'", psz_name );
}
* gtk_display.c: Gtk+ tools for main interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_display.c,v 1.5 2001/07/25 03:12:33 sam Exp $
+ * $Id: gtk_display.c,v 1.6 2001/08/09 08:20:26 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
break;
}
- /* slider for seekable streams */
+ /* initialize and show slider for seekable streams */
if( p_intf->p_input->stream.b_seekable )
{
+ p_intf->p_sys->p_adj->value = p_intf->p_sys->f_adj_oldvalue = 0;
+ gtk_signal_emit_by_name( GTK_OBJECT( p_intf->p_sys->p_adj ),
+ "value_changed" );
gtk_widget_show( GTK_WIDGET( p_slider ) );
}
p_intf->p_sys->i_part = 0;
p_intf->p_input->stream.b_changed = 0;
- intf_WarnMsg( 3,
- "intf info: menus refreshed as stream has changed" );
+ intf_WarnMsg( 3, "intf: stream has changed, refreshing interface" );
}
else
{
* decoders.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: input.c,v 1.128 2001/08/05 15:32:46 gbazin Exp $
+ * $Id: input.c,v 1.129 2001/08/09 08:20:26 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
p_input->pf_network_close = NetworkClose;
#endif
+ intf_WarnMsg( 1, "input: playlist item `%s'", p_input->p_source );
+
/* Create thread. */
if( vlc_thread_create( &p_input->thread_id, "input", (void *) RunThread,
(void *) p_input ) )
if( InitThread( p_input ) )
{
-
/* If we failed, wait before we are killed, and exit */
*p_input->pi_status = THREAD_ERROR;
p_input->b_error = 1;
ErrorThread( p_input );
DestroyThread( p_input );
- free( p_input );
return;
}
struct tms cpu_usage;
times( &cpu_usage );
- intf_Msg("input stats: cpu usage (user: %d, system: %d)",
- cpu_usage.tms_utime, cpu_usage.tms_stime);
+ intf_Msg( "input stats: cpu usage (user: %d, system: %d)",
+ cpu_usage.tms_utime, cpu_usage.tms_stime );
}
#endif
p_input->stream.p_selected_area->i_tell = 0;
vlc_mutex_unlock( &p_input->stream.stream_lock );
- intf_WarnMsg( 1, "input: opening file `%s'", p_input->p_source );
+ intf_WarnMsg( 2, "input: opening file `%s'", p_input->p_source );
if( (p_input->i_handle = open( psz_name,
/*O_NONBLOCK | O_LARGEFILE*/0 )) == (-1) )
{
*****************************************************************************/
static void FileClose( input_thread_t * p_input )
{
- intf_WarnMsg( 1, "input: closing file `%s'", p_input->p_source );
+ intf_WarnMsg( 2, "input: closing file `%s'", p_input->p_source );
close( p_input->i_handle );
}
}
- intf_WarnMsg( 2, "input: server: %s port: %d broadcast: %s",
+ intf_WarnMsg( 2, "input: server=%s port=%d broadcast=%s",
psz_server, i_port, psz_broadcast );
/* Open a SOCK_DGRAM (UDP) socket, in the AF_INET domain, automatic (0)
p_input->i_handle = socket( AF_INET, SOCK_DGRAM, 0 );
if( p_input->i_handle == -1 )
{
- intf_ErrMsg("input error: can't create socket : %s", strerror(errno));
+ intf_ErrMsg( "input error: can't create socket (%s)", strerror(errno) );
p_input->b_error = 1;
return;
}
if( bind( p_input->i_handle, (struct sockaddr *)&sock,
sizeof( sock ) ) < 0 )
{
- intf_ErrMsg("input error: can't bind socket (%s)", strerror(errno));
+ intf_ErrMsg( "input error: can't bind socket (%s)", strerror(errno) );
close( p_input->i_handle );
p_input->b_error = 1;
return;
if( connect( p_input->i_handle, (struct sockaddr *) &sock,
sizeof( sock ) ) == (-1) )
{
- intf_ErrMsg( "input error: can't connect socket, %s",
+ intf_ErrMsg( "input error: can't connect socket (%s)",
strerror(errno) );
close( p_input->i_handle );
p_input->b_error = 1;
* intf_playlist.c : Playlist management functions
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: intf_playlist.c,v 1.7 2001/05/30 17:03:12 sam Exp $
+ * $Id: intf_playlist.c,v 1.8 2001/08/09 08:20:26 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
void intf_PlaylistPrev( playlist_t * p_playlist )
{
vlc_mutex_lock( &p_playlist->change_lock );
- p_playlist->i_mode = -p_playlist->i_mode;
+ p_playlist->i_mode = -p_playlist->i_mode;
NextItem( p_playlist );
-
p_playlist->i_mode = -p_playlist->i_mode;
+
vlc_mutex_unlock( &p_playlist->change_lock );
}