Commit a0c1805b authored by Sam Hocevar's avatar Sam Hocevar

  * Bug fixes and enhancements in the Gtk+/Gnome interfaces.

   o the slider should behave correctly and stop jumping here and
     there (this bug is _not_ related to Stef's similar bug)
   o added an "open network" menu (useless since the input doesn't
     handle it properly yet)
   o tried to reorganize gnome_callbacks.c and gtk_callbacks.c
   o stream date is now displayed instead of percentage
   o renamed gnome_sys.h to intf_gnome.h, and gtk_sys.h to intf_gtk.h

  * Changed documentation and package creation files.

   o added versioned conflicts/replaces to vlc-gtk (Closes Debian bug #88796)
   o removed useless or outdated documentation from doc/*
   o moved vlc.1 manpage from debian/vlc.1 to doc/vlc.1

  * Added basic Qt interface.

   o working features: slide bar, open file, toolbar, popup menu
   o added "qvlc" alias, equivalent to "vlc -I qt"
   o known issues : no "open disc" or "open network" menus yet
                    the IntfWindow class is never cleaned on destruction
                    the popup menu always pop at the middle of the screen

  * Misc fixes/updates.

   o renamed netutils.h functions from input_* to network_*
   o renamed *plst* files and functions to *playlist* (it was stupid
     from me to name them "plst")
   o made a few input error messages more meaningful
   o added -I, -A and -V short flags, corresponding to --intf, --audio
     and --video

    I got a lot of conflicts on this commit, lart me if I forgot a
  file or made old bugs reappear.
parent 93ca3031
......@@ -12,11 +12,18 @@ See `./configure --help' for more information.
Then, run `make' to build vlc.
Here is a shortcut to copy-paste for a clean build:
Here is a shortcut to copy-paste for a complete build:
make distclean 2>/dev/null ; ./configure --prefix=/usr --enable-gnome \
--enable-fb --with-glide --with-ggi --with-sdl --enable-esd \
--enable-alsa --enable-mga --enable-gtk && make
--enable-alsa --enable-mga --enable-gtk --enable-qt && make
If you intend to debug stuff, you may want to disable optimizations:
make distclean 2>/dev/null ; ./configure --prefix=/usr --enable-gnome \
--enable-fb --with-glide --with-ggi --with-sdl --enable-esd \
--enable-alsa --enable-mga --enable-gtk --enable-qt \
--disable-optimizatons && make
Installing and running VideoLAN
......
......@@ -190,7 +190,7 @@ INTERFACE = src/interface/main.o \
src/interface/intf_msg.o \
src/interface/intf_cmd.o \
src/interface/intf_ctrl.o \
src/interface/intf_plst.o \
src/interface/intf_playlist.o \
src/interface/intf_channels.o \
src/interface/intf_console.o \
src/interface/intf_urldecode.o \
......@@ -334,9 +334,11 @@ PLUGIN_GNOME = plugins/gnome/gnome.o \
plugins/gnome/gnome_interface.o \
plugins/gnome/gnome_support.o
PLUGIN_QT = plugins/qt/qt.o \
plugins/qt/intf_qt.o
PLUGIN_KDE = plugins/kde/kde.o \
plugins/kde/intf_kde.o \
plugins/kde/kvlc.o
plugins/kde/intf_kde.o
PLUGIN_IDCT = plugins/idct/idct.o \
plugins/idct/idct_common.o
......@@ -431,6 +433,7 @@ NONSTD_PLUGIN_OBJ = \
NONSTD_CPP_PLUGIN_OBJ = \
$(PLUGIN_BEOS) \
$(PLUGIN_QT) \
$(PLUGIN_KDE)
#
......@@ -456,7 +459,7 @@ all: vlc @ALIASES@ plugins
clean:
rm -f $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ) $(STD_PLUGIN_OBJ)
rm -f plugins/*/*.o src/*/*.o lib/*.so
rm -f vlc kvlc gvlc
rm -f vlc gvlc kvlc qvlc
distclean: clean
rm -f src/*/*.o plugins/*/*.o **/*~ *.log
......@@ -494,7 +497,7 @@ show:
snapshot:
rm -rf /tmp/vlc-@VLC_VERSION@* /tmp/vlc-@VLC_VERSION@nocss*
# copy archive in /tmp
find -type d | grep -v CVS | grep -v '^\.dep' | while read i ; \
find -type d | grep -v CVS | grep -v '\.dep' | while read i ; \
do mkdir -p /tmp/vlc-@VLC_VERSION@/$$i ; \
done
find debian -mindepth 1 -maxdepth 1 -type d | \
......@@ -534,7 +537,7 @@ FORCE:
# GTK/Gnome and Framebuffer aliases - don't add new aliases which could bloat
# the namespace
#
gvlc kvlc: vlc
gvlc kvlc qvlc: vlc
rm -f $@ && ln -s vlc $@
......@@ -569,18 +572,25 @@ $(STD_PLUGIN_OBJ): %.o: %.c
$(PLUGIN_GTK): %.o: Makefile.dep
$(PLUGIN_GTK): %.o: .dep/%.d
$(PLUGIN_GTK): %.o: %.c
$(CC) $(CFLAGS) $(PCFLAGS) `glib-config --cflags glib` `gtk-config --cflags gtk` -c -o $@ $<
$(CC) $(CFLAGS) $(PCFLAGS) `gtk-config --cflags gtk` -c -o $@ $<
$(PLUGIN_GNOME): %.o: Makefile.dep
$(PLUGIN_GNOME): %.o: .dep/%.d
$(PLUGIN_GNOME): %.o: %.c
$(CC) $(CFLAGS) $(PCFLAGS) `glib-config --cflags glib` `gnome-config --cflags gnomeui` -c -o $@ $<
$(CC) $(CFLAGS) $(PCFLAGS) `gnome-config --cflags gtk gnomeui` -c -o $@ $<
$(PLUGIN_GLIDE): %.o: Makefile.dep
$(PLUGIN_GLIDE): %.o: .dep/%.d
$(PLUGIN_GLIDE): %.o: %.c
$(CC) $(CFLAGS) $(PCFLAGS) -I/usr/include/glide -c -o $@ $<
$(PLUGIN_QT): %.o: Makefile.dep
$(PLUGIN_QT): %.o: .dep/%.dpp
$(PLUGIN_QT): %.o: %.moc
$(CC) $(CFLAGS) $(PCFLAGS) -I/usr/include/qt -c -o $@ $(<:%.moc=%.cpp)
$(PLUGIN_QT:%.o=%.moc): %.moc: %.cpp
moc -i $< -o $@
$(PLUGIN_KDE): %.o: Makefile.dep
$(PLUGIN_KDE): %.o: .dep/%.dpp
$(PLUGIN_KDE): %.o: %.cpp
......@@ -621,6 +631,9 @@ endif
lib/dsp.so: $(PLUGIN_DSP)
$(CC) $(PCFLAGS) -shared -o $@ $^
lib/qt.so: $(PLUGIN_QT)
$(CC) $(PCFLAGS) -shared -o $@ $^ -lqt
lib/kde.so: $(PLUGIN_KDE)
$(CC) $(PCFLAGS) -shared -o $@ $^ -lkdeui -lkdecore -lqt -ldl
......
This diff is collapsed.
......@@ -148,7 +148,6 @@ dnl default case
else
GVLC=0
KVLC=0
AC_ARG_ENABLE(dummy,
[ --disable-dummy dummy module (default enabled)])
......@@ -209,9 +208,12 @@ AC_ARG_WITH(glide,
AC_ARG_ENABLE(ncurses,
[ --enable-ncurses ncurses interface support (default disabled)],
[if test x$enable_ncurses = xyes; then PLUGINS=${PLUGINS}"ncurses "; fi])
AC_ARG_ENABLE(qt,
[ --enable-qt Qt interface support (default disabled)],
[if test x$enable_qt = xyes; then PLUGINS=${PLUGINS}"qt "; ALIASES=${ALIASES}"qvlc "; fi])
AC_ARG_ENABLE(kde,
[ --enable-kde KDE interface support (default disabled)],
[if test x$enable_kde = xyes; then PLUGINS=${PLUGINS}"kde "; KVLC=1; fi])
[if test x$enable_kde = xyes; then PLUGINS=${PLUGINS}"kde "; ALIASES=${ALIASES}"kvlc "; fi])
AC_ARG_ENABLE(gnome,
[ --enable-gnome Gnome interface support (default disabled)],
[if test x$enable_gnome = xyes; then PLUGINS=${PLUGINS}"gnome "; GVLC=1; fi])
......@@ -227,7 +229,6 @@ AC_ARG_ENABLE(alsa,
[if test x$enable_alsa = xyes; then AC_CHECK_HEADER(sys/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false") if test $have_alsa = true; then PLUGINS=${PLUGINS}"alsa "; fi; fi])
if test x$GVLC = x1 ; then ALIASES=${ALIASES}"gvlc "; fi
if test x$KVLC = x1 ; then ALIASES=${ALIASES}"kvlc "; fi
fi
......
vlc (0.2.63-3) unstable; urgency=low
* Added versioned conflicts/replaces to vlc-gtk (Closes: #88796).
-- Samuel Hocevar <sam@zoy.org> Wed, 7 Mar 2001 20:47:48 +0100
vlc (0.2.63-2) unstable; urgency=low
* Glide shouldn't cause any non-x86 problems anymore (Closes: #88583).
......
vlc-css (0.2.63-3) unstable; urgency=low
* New vlc package.
-- Samuel Hocevar <sam@zoy.org> Wed, 7 Mar 2001 20:47:48 +0100
vlc-css (0.2.63-2) unstable; urgency=low
* Fixed versioned dependencies against vlc.
-- Samuel Hocevar <sam@zoy.org> Mon, 5 Mar 2001 21:37:19 +0100
vlc-css (0.2.63-1) unstable; urgency=low
* New upstream release.
......
......@@ -26,6 +26,8 @@ Description: Gnome plugin for the VideoLAN Client
Package: vlc-gtk
Architecture: any
Depends: vlc (= ${Source-Version}), ${shlibs:Depends}
Replaces: vlc-gnome (<= 0.2.63-2)
Conflicts: vlc-gnome (<= 0.2.63-2)
Description: Gtk+ plugin for the VideoLAN Client
VideoLAN is a free MPEG, MPEG2 and DVD software solution.
.
......@@ -73,3 +75,19 @@ Description: Glide plugin for the VideoLAN Client
VideoLAN is a free MPEG, MPEG2 and DVD software solution.
.
This is a Glide (3dfx) plugin for the VideoLAN Client.
Package: vlc-qt
Architecture: any
Depends: vlc (= ${Source-Version}), ${shlibs:Depends}
Description: Qt plugin for the VideoLAN Client
VideoLAN is a free MPEG, MPEG2 and DVD software solution.
.
This plugin adds a Qt interface to the VideoLAN Client.
Package: vlc-kde
Architecture: any
Depends: vlc (= ${Source-Version}), ${shlibs:Depends}
Description: KDE plugin for the VideoLAN Client
VideoLAN is a free MPEG, MPEG2 and DVD software solution.
.
This plugin adds a KDE interface to the VideoLAN Client.
......@@ -7,7 +7,7 @@ Standards-Version: 3.0.1
Package: vlc-css
Architecture: any
Depends: ${shlibs:Depends}, vlc
Depends: ${shlibs:Depends}, vlc (= ${Source-Version})
Description: CSS plugin for the VideoLAN Client
VideoLAN is a free MPEG, MPEG2 and DVD software solution.
.
......
......@@ -18,13 +18,13 @@ build-stamp:
--infodir=\$${prefix}/share/info \
--enable-gnome --enable-gtk --enable-fb --with-glide \
--with-ggi --with-sdl --enable-esd --enable-alsa \
--disable-ppro ; \
--with-qt --with-kde --disable-ppro ; \
else \
./configure --prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--enable-gnome --enable-gtk --enable-fb --with-ggi \
--with-sdl --enable-esd --enable-alsa; \
--with-qt --with-kde --with-sdl --enable-esd --enable-alsa; \
fi
$(MAKE)
......@@ -49,7 +49,12 @@ install: build
DESTDIR=`pwd`/debian/vlc/ $(MAKE) install prefix=/usr
# make symlinks for packages
for alias in ggi gtk gnome glide esd sdl alsa ; do \
if [ $(DEB_BUILD_ARCH) = i386 ]; then \
$$aliases="ggi gtk gnome glide esd sdl alsa qt kde" ; \
else \
$$aliases="ggi gtk gnome esd sdl alsa qt kde" ; \
fi ; \
for alias `echo $$aliases` ; do \
mkdir -p debian/vlc-$$alias/usr/share/doc/ ; \
ln -s vlc debian/vlc-$$alias/usr/share/doc/vlc-$$alias ; \
mkdir -p debian/vlc-$$alias/usr/lib/videolan/vlc/ ; \
......@@ -59,12 +64,22 @@ install: build
mkdir -p debian/vlc-gtk/usr/bin/
mv debian/vlc/usr/bin/gvlc debian/vlc-gtk/usr/bin/
mkdir -p debian/vlc-kde/usr/bin/
mv debian/vlc/usr/bin/kvlc debian/vlc-kde/usr/bin/
mkdir -p debian/vlc-qt/usr/bin/
mv debian/vlc/usr/bin/qvlc debian/vlc-qt/usr/bin/
mkdir -p debian/vlc-gtk/usr/share/videolan/
mv debian/vlc/usr/share/videolan/gvlc.png \
debian/vlc/usr/share/videolan/gvlc.xpm \
debian/vlc-gtk/usr/share/videolan/
mkdir -p debian/vlc-gtk/usr/share/man/man1/
ln -s vlc.1.gz debian/vlc-gtk/usr/share/man/man1/gvlc.1.gz
mkdir -p debian/vlc-kde/usr/share/man/man1/
ln -s vlc.1.gz debian/vlc-kde/usr/share/man/man1/kvlc.1.gz
mkdir -p debian/vlc-qt/usr/share/man/man1/
ln -s vlc.1.gz debian/vlc-qt/usr/share/man/man1/qvlc.1.gz
# Build architecture-independent files here.
binary-indep: build install
......@@ -83,10 +98,10 @@ binary-arch: build install
# dh_installpam
# dh_installinit
dh_installcron
dh_installmanpages -Nvlc-gnome -Nvlc-gtk -Nvlc-ggi -Nvlc-glide -Nvlc-esd -Nvlc-sdl -Nvlc-alsa
dh_installmanpages -Nvlc-gnome -Nvlc-gtk -Nvlc-ggi -Nvlc-glide -Nvlc-esd -Nvlc-sdl -Nvlc-alsa -Nvlc-qt -Nvlc-kde doc/vlc.1
dh_installinfo
# dh_undocumented
dh_installchangelogs -Nvlc-gnome -Nvlc-gtk -Nvlc-ggi -Nvlc-glide -Nvlc-esd -Nvlc-sdl -Nvlc-alsa
dh_installchangelogs -Nvlc-gnome -Nvlc-gtk -Nvlc-ggi -Nvlc-glide -Nvlc-esd -Nvlc-sdl -Nvlc-alsa -Nvlc-qt -Nvlc-kde
dh_link
dh_strip
dh_compress
......
* interface :
+ il semble que si l'on envoie 2 messages de logs l'un immediatement
apres l'autre, le 2e ne soit jamais affiche (cf debut du DemuxPES)
+ l'envoi repeté de commandes dans la console provoque un segfault
- ce bug est du à la xconsole, qu'il faudra de toute manière
reprogrammer avec un widget quelconque (je recommande wx, qui est
portable, mais moche il est vrai), donc je vais pas me casser à le
corriger (Ptyx)
- vérifier qu'il est bien du à xconsole et non à intf_ExecCommand :-\
(Ptyx)
* video_output/X11 :
+ quand une XShmImage n'a jamais été affichée, la fermer provoque une
erreur (fatale ?) du serveur -> plantage de vout_thread
+ erreur lors de la fermeture 'brutale' de la fenêtre
- en cours de correction - j'ai trouvé comment signaler au WM qu'une
fenêtre est capable de se fermer propremenet sur un ClientMessage,
mais pas encore comment intercepter ce ClientMessage :-\ (Ptyx)
* input :
+ lorsque le vlc est appelé avec --novideo, le son n'est pas joué, bien
que décodé... parce que la synchro ou l'input n'envoie pas de date à
l'audio decoder... parce que les PCRs sont contenus dans la partie
video... solution : traiter TOUS les TS, afin de pouvoir récupérer les
PCRs (MaXX)
* ac3_decoder :
+ éviter le SIGSEGV lorsque le décodeur se mange du garbage (MaXX)
Schma de dpendance des headers et rgles d'criture
=====================================================
Ce document dcrit les dpendances entre les diffrents headers utiliss
par le projet, ainsi que l'ordre dans lequel ils devraient tre appels.
La totalit de ces headers, dans l'ordre, est regroup dans le fichier
"all.h", pour faciliter la mise en place de nouvelles structures.
Les headers inscrits entre parenthses sont ncessaires indirectement.
Merci de maintenir ce fichier jour.
Headers systmes (appels par ordre de repertoire et alphabetique)
------------------------------------------------------------------
#include <pthread.h>
#include <netinet/in.h>
#include <sys/soundcard.h>
#include <sys/uio.h>
#include <X11/Xlib.h>
#include <X11/extensions/XShm.h>
#include <X11/xpm.h>
Headers communs
---------------
#include "config.h"
#include "common.h" -> may depend of "config.h"
#include "mtime.h"
#include "netutils.h" -> <netinet/in.h>
#include "xutils.h" -> <X11/Xlib.h>
Input
-----
#include "input.h" -> <pthread.h>, <sys/uio.h>, "config.h", "common.h"
#include "input_vlan.h" -> <pthread>, <netinet/in.h>
#include "decoder_fifo.h" -> <pthread.h>, (<sys/uio.h>), ("config.h"), ("common.h"), "input.h"
#include "netlist.h" -> <prhtread.h>, (<sys/uio.h>), "config.h", ("common.h"), "input.h"
#include "pcr.h" -> (<pthread.h>), (<sys/uio.h>), ("config.h"), ("common.h"), "input.h"
#include "psi.h" -> (<pthread.h>), (<sys/uio.h>), ("config.h"), ("common.h"), "input.h"
Audio
-----
#include "audio_decoder.h" -> *le nant :)*
#include "audio_output.h" -> <pthread.h>, <sys/soundcard.h>, "config.h", "common.h", "mtime.h"
#include "audio_dsp.h" -> (<pthread.h>), (<sys/soundcard.h>), ("config.h"), ("common.h"),
("mtime.h"), "audio_output.h"
Video
-----
#include "video.h" -> ("config.h"), "common.h", "mtime.h"
#include "video_graphics.h" -> ("config.h"), ("common.h"), ("mtime.h"), "video.h"
#include "video_output.h" -> <pthread.h>, "config.h", "common.h", ("mtime.h"), "video.h"
#include "video_x11.h" -> (<pthread.h>) <X11/Xlib.h>, <X11/extensions/XShm.h>,
("config.h"), ("common.h"), ("mtime.h"), "video.h", "video_output.h"
#include "video_decoder.h" -> <pthread.h>, (<sys/uio.h>), ("config.h"), "common.h", ("mtime.h"),
"input.h", "decoder_fifo.h", ("video.h"), "video_output.h"
Interface
---------
#include "xconsole.h" -> <X11/Xlib.h>, "config.h"
#include "interface.h" -> (<pthread.h>), (<sys/uio.h>), (<X11/Xlib.h>),
(<X11/extensions/XShm.h>), "config.h", "common.h", ("mtime.h"),
"input.h", ("video.h"), "video_output.h", "xconsole.h"
#include "intf_msg.h" -> <pthread.h>, "config.h", "common.h", "mtime.h"
#include "intf_cmd.h"
#include "control.h" -> ??
#include "intf_ctrl.h" -> "intf_cmd.h"
Ressources partages
--------------------
#include "pgm_data.h" -> (<pthread.h>), (<netinet/in.h>), (<sys/soundcard.h>), (<sys/uio.h>),
(<X11/Xlib.h>),
(<X11/extensions/XShm.h>), ("config.h"), "common.h", ("mtime.h"),
"input.h", "input_vlan.h", "audio_output.h" , "video.h",
("video_output.h"), "xconsole.h", "interface.h", "intf_msg.h"
Autres headers, qui sont condamns disparaitre ou ne sont pas utiliss
------------------------------------------------------------------------
#include "network.h" illisible, uniquement utilis dans network.c
#include "rsc_files.h"
xconsole will also change
FreeBSD:
-#ifdef __FreeBSD__
-remplacer les sys/soundcard.h par machine/soundcard.c
-problme avec getopt
LinuxPPC:
-problme avec la libpthreads ? (ou avec le serveur X ?)
Vlan server protocol and library *draft*
========================================
telnet-based protocol. Client commands are text, server responses are numbers followed by
an explicative text (like irc). Common messages number should probalbly be grouped.
Two different notions: session and connexion
session has a long timeout (several hours), and should not use server-side resources
connexion has a short timeout (a few minutes) and can use server-side resources (thread)
A vlan resource (switch+port) is identified by a unique id. Changes can obviously be done
with this id, but also, for administrative facilities, with other identifiers.
Client commands:
LOGIN <login> [<application>]
-> open connexion, required before any communication with server. Login and password should
correspond to groups (admin, users...) rather than individual ids. Application is for stats.
answers: 100: ok
101: rejected, invalid login
102: rejected, too many connexions
103: rejected, forbidden source
104: rejected, already logged in
109: rejected, other reason
password required
PASS <password>
LOGOUT -> close connexion
answer: 200: ok, session closed
OPEN <client-session-id>
-> open session. required before any write operations
answers: 300: <server-session-id>
301: rejected, not authorized
302: rejected, too many sessions
399: rejected, other reason
RECOVER <client-session-id> <server-session-id>
-> recover session. Both id are required for security.
answer: 400: ok
401: rejected, not authorized (invalid login or something else)
402: rejected, invalid ids
403: rejected, session already active on another connexion
499: rejected, other reason
CLOSE [<server-session-id>]
-> close session. Session must be active for normal users.
answer: 500: ok, session closed
501: error, not loged in
502: error: active session
503: error: not authorized
STATUS ME
STATUS MAC <mac>
STATUS IP <ip>
STATUS ID <rsc-id>
give informations about something
answer: 600: mark beginning of status info
601: mark end of status info
602: error, not authorized
603: error, unknown
604: error, request failed
610: <rsc-id>
611: <vlan>
612: <ip>
613: <mac>
614: <switch-ip>
615: <switch-port>
616: <number of interfaces dependant of this resource>
617: <lock info>
699: error, other reason
LOCK ME
LOCK MAC <mac>
LOCK IP <ip>
LOCK ID <rsc-id>
lock a resource id (session required)
answers:
UNLOCK ME
UNLOCK MAC <mac>
UNLOCK IP <ip>
UNLOCK ID <id>
unlock a resource id (session required)
answers:
CHANGE ME <vlan>
CHANGE MAC <mac> <vlan>
CHANGE IP <ip> <vlan>
CHANGE ID <id> <vlan>
change a vlan (session required)
Administrative commands:
HELP
print list of commands
answer:
KICK
RESET
LIST IDS
LIST MACS
LIST IPS
LIST SESSIONS
LIST CONNECTIONS
LIST LOGINS
QUIT
CONFIRM
......@@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH VLC 1 "August 15, 2000"
.TH VLC 1 "March 10, 2001"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
......@@ -16,7 +16,7 @@
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
vlc, gvlc, kvlc \- The VideoLAN Client
vlc, gvlc, kvlc, qvlc \- The VideoLAN Client
.SH SYNOPSIS
.B vlc
.RI [ OPTIONS ]
......@@ -25,15 +25,15 @@ vlc, gvlc, kvlc \- The VideoLAN Client
.SH DESCRIPTION
This manual page documents briefly the
.B vlc
, a free MPEG2 player.
, a free MPEG, MPEG2 and DVD player.
.SH OPTIONS
.B vlc
follows the usual GNU command line syntax, with long
options starting with two dashes (`-').
A summary of options is included below.
.TP
.B \-\-intf <module>
Specify an interface module: "gnome", "curses", "shell", for instance.
.B \-I, \-\-intf <module>
Specify an interface module: "gnome", "curses", "qt", for instance.
.TP
.B \-\-warning <level>
Select the warning level. 0 is the most verbose, 3 is almost mute.
......@@ -41,7 +41,7 @@ Select the warning level. 0 is the most verbose, 3 is almost mute.
.B \-\-noaudio
Disable audio output.
.TP
.B \-\-aout <module>
.B \-A, \-\-aout <module>
Specify an audio output module: "dsp", "esd", for instance.
.TP
.B \-\-stereo, \-\-mono
......@@ -50,7 +50,7 @@ Choose stereo or mono audio output
.B \-\-novideo
Disable video output.
.TP
.B \-\-vout <module>
.B \-V, \-\-vout <module>
Specify a video output module: "x11", "sdl", "fb", for instance.
.TP
.B \-\-motion <module>
......@@ -88,7 +88,7 @@ heuristics based on CPU usage.
displays I and P images and every second B image, and `IPB' forces
displaying of all images.
Note that vlc is certainly going to crash if you ask it to
Note that vlc is not guaranteed to behave properly if you ask it to
display more images than your CPU can cope with.
.TP
.B \-t, \-\-dvdtitle <title>
......
/*****************************************************************************
* intf_plst.h : Playlist functions
* intf_playlist.h : Playlist functions
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
*
......@@ -51,7 +51,7 @@ typedef struct playlist_s
playlist_item_t* p_item;
} playlist_t;
/* Used by intf_PlstAdd */
/* Used by intf_PlaylistAdd */
#define PLAYLIST_START 0
#define PLAYLIST_END -1
......@@ -67,13 +67,13 @@ typedef struct playlist_s
/*****************************************************************************
* Prototypes
*****************************************************************************/
playlist_t * intf_PlstCreate ( void );
void intf_PlstInit ( playlist_t * p_playlist );
int intf_PlstAdd ( playlist_t * p_playlist,
int i_pos, char * psz_item );
int intf_PlstDelete ( playlist_t * p_playlist,
int i_pos );
void intf_PlstNext ( playlist_t * p_playlist );
void intf_PlstPrev ( playlist_t * p_playlist );
void intf_PlstDestroy ( playlist_t * p_playlist );
void intf_PlstJumpto ( playlist_t * p_playlist , int i_pos);
playlist_t * intf_PlaylistCreate ( void );
void intf_PlaylistInit ( playlist_t * p_playlist );
int intf_PlaylistAdd ( playlist_t * p_playlist,
int i_pos, const char * psz_item );
int intf_PlaylistDelete ( playlist_t * p_playlist, int i_pos );
void intf_PlaylistNext ( playlist_t * p_playlist );
void intf_PlaylistPrev ( playlist_t * p_playlist );
void intf_PlaylistDestroy ( playlist_t * p_playlist );
void intf_PlaylistJumpto ( playlist_t * p_playlist , int i_pos);
......@@ -3,7 +3,7 @@
* This header describes miscellanous utility functions shared between several
* modules.
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* Copyright (C) 1999, 2000, 2001 VideoLAN
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Henri Fallon <henri@videolan.org>
......@@ -26,5 +26,6 @@
/*****************************************************************************
* Prototypes
*****************************************************************************/
int input_BuildLocalAddr( struct sockaddr_in *, int, boolean_t );
int input_BuildRemoteAddr(struct sockaddr_in *, char * );
int network_BuildLocalAddr ( struct sockaddr_in *, int, boolean_t );
int network_BuildRemoteAddr( struct sockaddr_in *, char * );
......@@ -3,7 +3,7 @@
*****************************************************************************
* Copyright (C) 1996, 1997, 1998, 1999, 2000 VideoLAN
*
* Authors:
* Authors: Samuel Hocevar <sam@zoy.org>
*
* 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
......
......@@ -2,7 +2,7 @@
* intf_beos.cpp: beos interface
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
* $Id: intf_beos.cpp,v 1.19 2001/03/07 16:32:59 richards Exp $
* $Id: intf_beos.cpp,v 1.20 2001/03/15 01:42:19 sam Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
......@@ -76,7 +76,7 @@ extern "C"
#include "input_ext-intf.h"
#include "interface.h"
#include "intf_plst.h"
#include "intf_playlist.h"
#include "intf_msg.h"
#include "audio_output.h"
#include "MsgVals.h"
......@@ -263,7 +263,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
if(p_message->FindString("device", device) != B_ERROR)
{
sprintf(device_method_and_name, "dvd:%s", *device);
intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, device_method_and_name );
intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, device_method_and_name );
}
break;
......@@ -387,8 +387,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
if( p_message->FindRef( "refs", &ref ) == B_OK )
{
BPath path( &ref );
char * psz_name = strdup(path.Path());
intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_name );
intf_PlaylistAdd( p_main->p_playlist,
PLAYLIST_END, path.Path() );
}
}
......
This diff is collapsed.
......@@ -145,21 +145,6 @@ void
on_toolbar_fast_clicked (GtkButton *button,
gpointer user_data);
gboolean
on_hscale_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
gboolean
on_hscale_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
gboolean
on_hscale_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
void
on_intf_modules_destroy (GtkObject *object,
gpointer user_data);
......@@ -254,6 +239,36 @@ void
on_menubar_title_toggle (GtkCheckMenuItem *menuitem,
gpointer user_data);
void
on_menubar_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_toolbar_network_clicked (GtkButton *button,
gpointer user_data);
void
on_network_ok_clicked (GtkButton *button,
gpointer user_data);
void
on_network_cancel_clicked (GtkButton *button,
gpointer user_data);
void
on_popup_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
gboolean
on_slider_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
gboolean
on_slider_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
void
on_menubar_chapter_toggle (GtkCheckMenuItem *menuitem,
gpointer user_data);
This diff is collapsed.
......@@ -9,3 +9,4 @@ GtkWidget* create_intf_fileopen (void);
GtkWidget* create_intf_modules (void);
GtkWidget* create_intf_playlist (void);
GtkWidget* create_intf_disc (void);
GtkWidget* create_intf_network (void);
This diff is collapsed.
This diff is collapsed.
/*****************************************************************************
* gnome_sys.h: private Gnome interface description
* intf_gnome.h: private Gnome interface description
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: gnome_sys.h,v 1.7 2001/03/07 11:56:33 stef Exp $
* $Id: intf_gnome.h,v 1.3 2001/03/15 01:42:19 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -33,18 +33,13 @@
typedef struct intf_sys_s
{
/* special actions */
vlc_mutex_t change_lock; /* the change lock */
boolean_t b_popup_changed; /* display menu ? */
boolean_t b_window_changed; /* window display toggled ? */
boolean_t b_playlist_changed; /* playlist display toggled ? */
boolean_t b_scale_isfree; /* user isn't dragging scale ? */
boolean_t b_slider_free; /* slider status */
boolean_t b_menus_update;
/* intf_Manage callback timeout */
int i_timeout;
/* windows and widgets */
/* Windows and widgets */
GtkWidget * p_window; /* main window */
GtkWidget * p_popup; /* popup menu */
GtkWidget * p_playlist; /* playlist */
......@@ -52,8 +47,17 @@ typedef struct intf_sys_s
GtkWidget * p_about; /* about window */
GtkWidget * p_fileopen; /* file open window */
GtkWidget * p_disc; /* disc selection window */
GtkWidget * p_network; /* network stream window */
/* The slider */
GtkAdjustment * p_adj; /* slider adjustment object */
float f_adj_oldvalue; /* previous value */
/* The window labels */
GtkLabel * p_label_date;
GtkLabel * p_label_status;
/* XXX: ugly kludge */
/* XXX: Ugly kludge, see intf_gnome.c */
void ( *pf_gtk_callback ) ( void );
void ( *pf_gdk_callback ) ( void );
......
......@@ -44,13 +44,13 @@
#include "input_ext-intf.h"
#include "interface.h"
#include "intf_plst.h"
#include "intf_playlist.h"
#include "intf_msg.h"
#include "gtk_callbacks.h"
#include "gtk_interface.h"
#include "gtk_support.h"
#include "gtk_sys.h"
#include "intf_gtk.h"
#include "main.h"
......@@ -90,7 +90,9 @@ on_menubar_exit_activate (GtkMenuItem *menuitem,
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
vlc_mutex_lock( &p_intf->change_lock );
p_intf->b_die = 1;
vlc_mutex_unlock( &p_intf->change_lock );
}
void
......@@ -187,8 +189,8 @@ on_toolbar_prev_clicked (GtkButton *button,
if( p_intf->p_input != NULL )
{
/* FIXME: temporary hack */
intf_PlstPrev( p_main->p_playlist );
intf_PlstPrev( p_main->p_playlist );
intf_PlaylistPrev( p_main->p_playlist );
intf_PlaylistPrev( p_main->p_playlist );
p_intf->p_input->b_eof = 1;
}
}
......@@ -240,7 +242,9 @@ on_popup_exit_activate (GtkMenuItem *menuitem,
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
vlc_mutex_lock( &p_intf->change_lock );
p_intf->b_die = 1;
vlc_mutex_unlock( &p_intf->change_lock );
}
void
......@@ -254,7 +258,7 @@ on_fileopen_ok_clicked (GtkButton *button,
gtk_widget_hide (filesel);
filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (filesel));
intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, (char*)filename );
intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, (char*)filename );
}
......@@ -362,48 +366,6 @@ on_toolbar_fast_clicked (GtkButton *button,
}
gboolean
on_hscale_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
GtkAdjustment *p_adj = gtk_range_get_adjustment( GTK_RANGE(widget) );
off_t i_seek;
vlc_mutex_lock( &p_intf->p_sys->change_lock );
if( p_intf->p_input != NULL )
{
i_seek = (p_adj->value *
p_intf->p_input->stream.p_selected_area->i_size) / 100;
input_Seek( p_intf->p_input, i_seek );
}
p_intf->p_sys->b_scale_isfree = 1;
vlc_mutex_unlock( &p_intf->p_sys->change_lock );
return FALSE;
}
gboolean
on_hscale_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
vlc_mutex_lock( &p_intf->p_sys->change_lock );
p_intf->p_sys->b_scale_isfree = 0;
vlc_mutex_unlock( &p_intf->p_sys->change_lock );
return FALSE;
}
void
on_intf_modules_destroy (GtkObject *object,
gpointer user_data)
......@@ -477,7 +439,7 @@ on_intf_window_drag_data_received (GtkWidget *widget,
p_intf->p_input->b_eof = 1;
}
intf_PlstJumpto( p_main->p_playlist, end-1 );
intf_PlaylistJumpto( p_main->p_playlist, end-1 );
}
......@@ -572,7 +534,7 @@ on_disc_ok_clicked (GtkButton *button,
/* Build source name and add it to playlist */
sprintf( psz_source, "%s:%s", psz_method, psz_device );
intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
gtk_widget_hide( p_intf->p_sys->p_disc );
}
......@@ -731,7 +693,11 @@ on_intf_window_destroy (GtkWidget *widget,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
vlc_mutex_lock( &p_intf->change_lock );
p_intf->b_die = 1;
vlc_mutex_unlock( &p_intf->change_lock );
return TRUE;
}
......@@ -764,7 +730,6 @@ on_playlist_clist_drag_motion (GtkWidget *widget,
GtkCList * clist;
gint row,col;
int dummy;
gchar * text[2];
GdkColor color;
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_playlist" );
......@@ -806,3 +771,135 @@ on_playlist_clist_drag_motion (GtkWidget *widget,
return TRUE;
}
void
on_intf_network_destroy (GtkObject *object,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(object), "intf_network" );
p_intf->p_sys->p_network = NULL;
}
void
on_network_ok_clicked (GtkButton *button,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_network" );
char *psz_source, *psz_server, *psz_protocol;
unsigned int i_port;
psz_server = gtk_entry_get_text( GTK_ENTRY( lookup_widget(
GTK_WIDGET(button), "network_server" ) ) );
/* Check which protocol was activated */
if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
"network_ts" ) )->active )
{
psz_protocol = "ts";
}
else if( GTK_TOGGLE_BUTTON( lookup_widget( GTK_WIDGET(button),
"network_rtp" ) )->active )
{
psz_protocol = "rtp";
}
else
{
intf_ErrMsg( "intf error: unknown protocol toggle button position" );
return;
}
/* Get the port number and make sure it will not overflow 5 characters */
i_port = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(
lookup_widget( GTK_WIDGET(button), "network_port" ) ) );
if( i_port > 65535 )
{
intf_ErrMsg( "intf error: invalid port %i", i_port );
}
/* Allocate room for "protocol://server:port" */
psz_source = malloc( strlen( psz_protocol ) + strlen( psz_server ) + 10 );
if( psz_source == NULL )
{
return;
}
/* Build source name and add it to playlist */
sprintf( psz_source, "%s://%s:%i", psz_protocol, psz_server, i_port );
intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, psz_source );
free( psz_source );
gtk_widget_hide( p_intf->p_sys->p_network );
}
void
on_network_cancel_clicked (GtkButton *button,
gpointer user_data)
{
gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
}
void
on_menubar_network_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
gtk_widget_show( p_intf->p_sys->p_network );
gdk_window_raise( p_intf->p_sys->p_network->window );
}
void
on_popup_network_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_popup" );
gtk_widget_show( p_intf->p_sys->p_network );
gdk_window_raise( p_intf->p_sys->p_network->window );
}
void
on_toolbar_network_clicked (GtkButton *button,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_window" );
gtk_widget_show( p_intf->p_sys->p_network );
gdk_window_raise( p_intf->p_sys->p_network->window );
}
gboolean
on_slider_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
vlc_mutex_lock( &p_intf->change_lock );
p_intf->p_sys->b_slider_free = 1;
vlc_mutex_unlock( &p_intf->change_lock );
return FALSE;
}
gboolean
on_slider_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
vlc_mutex_lock( &p_intf->change_lock );
p_intf->p_sys->b_slider_free = 0;
vlc_mutex_unlock( &p_intf->change_lock );
return FALSE;
}
......@@ -52,14 +52,8 @@ void
on_toolbar_next_clicked (GtkButton *button,
gpointer user_data);
gboolean
on_hscale_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
gboolean
on_hscale_button_press_event (GtkWidget *widget,
GdkEventButton *event,
void
on_toolbar_network_clicked (GtkButton *button,
gpointer user_data);
void
......@@ -284,3 +278,33 @@ on_playlist_clist_drag_motion (GtkWidget *widget,
gint y,
guint time,
gpointer user_data);
void
on_intf_network_destroy (GtkObject *object,
gpointer user_data);
void
on_network_ok_clicked (GtkButton *button,
gpointer user_data);
void
on_network_cancel_clicked (GtkButton *button,
gpointer user_data);
void
on_menubar_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_popup_network_activate (GtkMenuItem *menuitem,
gpointer user_data);
gboolean
on_slider_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
gboolean
on_slider_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
This diff is collapsed.
......@@ -8,3 +8,4 @@ GtkWidget* create_intf_about (void);
GtkWidget* create_intf_fileopen (void);
GtkWidget* create_intf_disc (void);
GtkWidget* create_intf_playlist (void);
GtkWidget* create_intf_network (void);
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*****************************************************************************
* gtk_sys.h: private Gtk+ interface description
* intf_gtk.h: private Gtk+ interface description
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: gtk_sys.h,v 1.5 2001/03/09 19:38:47 octplane Exp $
* $Id: intf_gtk.h,v 1.1 2001/03/15 01:42:20 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -36,25 +36,18 @@ static __inline__ intf_thread_t * GetIntf( GtkWidget *item, char * psz_parent )
"p_intf" ) );
}
/*****************************************************************************
* intf_sys_t: description and status of Gtk+ interface
*****************************************************************************/
typedef struct intf_sys_s
{
/* special actions */
vlc_mutex_t change_lock; /* the change lock */
boolean_t b_popup_changed; /* display menu ? */
boolean_t b_window_changed; /* window display toggled ? */
boolean_t b_playlist_changed; /* playlist display toggled ? */
boolean_t b_menus_update; /* menus have changed ? */
boolean_t b_scale_isfree; /* user isn't dragging scale ? */
boolean_t b_slider_free; /* slider status */
/* intf_Manage callback timeout */
int i_timeout;
int i_list_timeout;
/* Playlist selected item */
......@@ -68,8 +61,17 @@ typedef struct intf_sys_s
GtkWidget * p_about; /* about window */
GtkWidget * p_fileopen; /* file open window */
GtkWidget * p_disc; /* disc selection window */
GtkWidget * p_network; /* network stream window */
/* The slider */
GtkAdjustment * p_adj; /* slider adjustment object */
float f_adj_oldvalue; /* previous value */
/* The window labels */
GtkLabel * p_label_date;
GtkLabel * p_label_status;
/* XXX: ugly kludge */
/* XXX: Ugly kludge, see intf_gnome.c */
void ( *pf_gtk_callback ) ( void );
void ( *pf_gdk_callback ) ( void );
......
......@@ -2,7 +2,7 @@
* input_ps.c: PS demux and packet management
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input_ps.c,v 1.10 2001/03/02 15:51:22 massiot Exp $
* $Id: input_ps.c,v 1.11 2001/03/15 01:42:20 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
......@@ -371,7 +371,7 @@ static int PSRead( input_thread_t * p_input,
/* It is common for MPEG-1 streams to pad with zeros
* (although it is forbidden by the recommendation), so
* don't bother everybody in this case. */
intf_WarnMsg( 1, "Garbage at input (%x)", i_startcode );
intf_WarnMsg( 1, "Garbage at input (%.8x)", i_startcode );
}
while( (i_startcode & 0xFFFFFF00) != 0x100L )
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -177,7 +177,7 @@ char * input_OffsetToTime( input_thread_t * p_input, char * psz_buffer,
else
{
/* Divide by zero is not my friend. */
sprintf( psz_buffer, "NA" );
sprintf( psz_buffer, "-:--:--" );
return( psz_buffer );
}
}
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
* mpeg_system.c: TS, PS and PES management
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: mpeg_system.c,v 1.44 2001/03/15 00:37:04 stef Exp $
* $Id: mpeg_system.c,v 1.45 2001/03/15 01:42:20 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr>
......@@ -877,7 +877,7 @@ void input_DemuxPS( input_thread_t * p_input, data_packet_t * p_data )
default:
/* This should not happen */
b_trash = 1;
intf_WarnMsg( 1, "Unwanted packet received with start code %x",
intf_WarnMsg( 1, "Unwanted packet received with start code 0x%.8x",
i_code );
}
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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