diff options
Diffstat (limited to 'community/gmerlin')
-rw-r--r-- | community/gmerlin/PKGBUILD | 45 | ||||
-rw-r--r-- | community/gmerlin/cdio-api-fixes.patch | 104 | ||||
-rw-r--r-- | community/gmerlin/gmerlin-texi.patch | 1846 | ||||
-rw-r--r-- | community/gmerlin/gmerlin.install | 25 |
4 files changed, 2020 insertions, 0 deletions
diff --git a/community/gmerlin/PKGBUILD b/community/gmerlin/PKGBUILD new file mode 100644 index 000000000..03e8ac35c --- /dev/null +++ b/community/gmerlin/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 91613 2013-05-25 11:46:26Z bpiotrowski $ +# Maintainer: Federico Cinelli <cinelli@aur.archlinux.org> + +pkgname=gmerlin +pkgver=1.2.0 +pkgrel=4 +pkgdesc="Multimedia architecture for Linux" +arch=('i686' 'x86_64') +url="http://openmovieeditor.sourceforge.net/HomePage" +license=('GPL') +depends=('gavl' 'gtk2' 'libxv' 'libvisual' 'libcdio-paranoia' 'musicbrainz' 'mjpegtools' 'hicolor-icon-theme' 'libquicktime' 'jack') +makedepends=('alsa-lib' 'pulseaudio' 'v4l-utils' 'mesa-libgl') +optdepends=('alsa-lib: for ALSA support' + 'jack: for JACK support' + 'libquicktime: for movie encoding' + 'pulseaudio: for PulseAudio support' + 'v4l-utils: for video conversion') +options=('!libtool') +install=gmerlin.install +source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz + cdio-api-fixes.patch + gmerlin-texi.patch) +md5sums=('2f2a0880e738e71486f04c929ba067f4' + 'd0e407f01435394a0cfe04acb3c1a4cc' + '33a4dce06b7560fc839055c5a872435f') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + patch -Np1 -i "$srcdir/cdio-api-fixes.patch" + patch -Np1 -i "$srcdir/gmerlin-texi.patch" + + rm -rf cpuinfo.sh + + ./configure --prefix=/usr --without-doxygen + sed -i 's|LIBS = -lgavl|LIBS = -lgavl -ldl -lpthread -lgtk-x11-2.0 -lgobject-2.0 -lglib-2.0 -lxml2 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lX11|' {lib,tests,apps/*}/Makefile + sed -i 's|ln -sf $(DESTDIR)$(pkgdatadir)|ln -sf $(pkgdatadir)|' icons/Makefile + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR="$pkgdir" install +} diff --git a/community/gmerlin/cdio-api-fixes.patch b/community/gmerlin/cdio-api-fixes.patch new file mode 100644 index 000000000..14c934b16 --- /dev/null +++ b/community/gmerlin/cdio-api-fixes.patch @@ -0,0 +1,104 @@ +diff -upr gmerlin-1.2.0.orig/plugins/cdaudio/cdparanoia.c gmerlin-1.2.0/plugins/cdaudio/cdparanoia.c +--- gmerlin-1.2.0.orig/plugins/cdaudio/cdparanoia.c 2013-01-10 21:16:27.000000000 +0200 ++++ gmerlin-1.2.0/plugins/cdaudio/cdparanoia.c 2013-01-10 21:25:59.000000000 +0200 +@@ -28,8 +28,8 @@ + + #include "cdaudio.h" + #define DO_NOT_WANT_PARANOIA_COMPATIBILITY +-#include <cdio/cdda.h> +-#include <cdio/paranoia.h> ++#include <cdio/paranoia/cdda.h> ++#include <cdio/paranoia/paranoia.h> + + /* + * Ripping support +diff -upr gmerlin-1.2.0.orig/plugins/cdaudio/cdtext.c gmerlin-1.2.0/plugins/cdaudio/cdtext.c +--- gmerlin-1.2.0.orig/plugins/cdaudio/cdtext.c 2013-01-10 21:16:27.000000000 +0200 ++++ gmerlin-1.2.0/plugins/cdaudio/cdtext.c 2013-01-10 21:25:27.000000000 +0200 +@@ -34,7 +34,7 @@ + #include "cdaudio.h" + + #define GET_FIELD(dst, key) \ +- field = cdtext_get_const(key, cdtext); ++ field = cdtext_get_const(cdtext, key, i+1); + + #define GET_FIELD_DEFAULT(dst,key) \ + field = cdtext_get_const(key, cdtext); \ +@@ -64,30 +64,26 @@ int bg_cdaudio_get_metadata_cdtext(CdIo_ + + /* Get information for the whole disc */ + +- cdtext = cdio_get_cdtext (cdio, 0); ++ cdtext = cdio_get_cdtext (cdio); + + if(!cdtext) + return 0; + +- artist = cdtext_get_const(CDTEXT_PERFORMER, cdtext); +- author = cdtext_get_const(CDTEXT_COMPOSER, cdtext); /* Composer overwrites songwriter */ ++ artist = cdtext_get_const(cdtext, CDTEXT_FIELD_PERFORMER, 0); ++ author = cdtext_get_const(cdtext, CDTEXT_FIELD_COMPOSER, 0); /* Composer overwrites songwriter */ + + if(!author) +- author = cdtext_get_const(CDTEXT_SONGWRITER, cdtext); ++ author = cdtext_get_const(cdtext, CDTEXT_FIELD_SONGWRITER, 0); + +- album = cdtext_get_const(CDTEXT_TITLE, cdtext); +- genre = cdtext_get_const(CDTEXT_GENRE, cdtext); +- comment = cdtext_get_const(CDTEXT_MESSAGE, cdtext); ++ album = cdtext_get_const(cdtext, CDTEXT_FIELD_TITLE, 0); ++ genre = cdtext_get_const(cdtext, CDTEXT_FIELD_GENRE, 0); ++ comment = cdtext_get_const(cdtext, CDTEXT_FIELD_MESSAGE, 0); + + for(i = 0; i < idx->num_tracks; i++) + { + if(idx->tracks[i].is_audio) + { +- cdtext = cdio_get_cdtext (cdio, i+1); +- if(!cdtext) +- return 0; +- +- GET_FIELD(title, CDTEXT_TITLE); ++ GET_FIELD(title, CDTEXT_FIELD_TITLE); + + if(!title) + return 0; +@@ -95,7 +91,7 @@ int bg_cdaudio_get_metadata_cdtext(CdIo_ + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_TITLE, title); + +- if((field = cdtext_get_const(CDTEXT_PERFORMER, cdtext))) ++ if((field = cdtext_get_const(cdtext, CDTEXT_FIELD_PERFORMER, i+1))) + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_ARTIST, field); + else +@@ -103,10 +99,10 @@ int bg_cdaudio_get_metadata_cdtext(CdIo_ + GAVL_META_ARTIST, artist); + + +- if((field = cdtext_get_const(CDTEXT_COMPOSER, cdtext))) ++ if((field = cdtext_get_const(cdtext, CDTEXT_FIELD_COMPOSER, i+1))) + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_AUTHOR, field); +- else if((field = cdtext_get_const(CDTEXT_SONGWRITER, cdtext))) ++ else if((field = cdtext_get_const(cdtext, CDTEXT_FIELD_SONGWRITER, i+1))) + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_AUTHOR, field); + else if(author) +@@ -114,14 +110,14 @@ int bg_cdaudio_get_metadata_cdtext(CdIo_ + GAVL_META_AUTHOR, author); + + +- if((field = cdtext_get_const(CDTEXT_GENRE, cdtext))) ++ if((field = cdtext_get_const(cdtext, CDTEXT_FIELD_GENRE, i+1))) + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_GENRE, field); + else + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_GENRE, genre); + +- if((field = cdtext_get_const(CDTEXT_MESSAGE, cdtext))) ++ if((field = cdtext_get_const(cdtext, CDTEXT_FIELD_MESSAGE, i+1))) + gavl_metadata_set(&info[idx->tracks[i].index].metadata, + GAVL_META_COMMENT, field); + else diff --git a/community/gmerlin/gmerlin-texi.patch b/community/gmerlin/gmerlin-texi.patch new file mode 100644 index 000000000..b352bf3ff --- /dev/null +++ b/community/gmerlin/gmerlin-texi.patch @@ -0,0 +1,1846 @@ +diff -Naur gmerlin-1.2.0.orig/doc/gmerlin.orig.texi gmerlin-1.2.0/doc/gmerlin.orig.texi +--- gmerlin-1.2.0.orig/doc/gmerlin.orig.texi 1969-12-31 16:00:00.000000000 -0800 ++++ gmerlin-1.2.0/doc/gmerlin.orig.texi 2013-02-27 16:04:03.847930671 -0800 +@@ -0,0 +1,1830 @@ ++\input texinfo @c -*-texinfo-*- ++@comment %**start of header ++@setfilename gmerlin.info ++@include version.texi ++@settitle Gmerlin @value{VERSION} ++@dircategory Gmerlin ++@direntry ++* Gmerlin: (gmerlin). Gmerlin multimedia applications ++@end direntry ++ ++ ++@syncodeindex pg cp ++@comment %**end of header ++@copying ++This manual is for Gmerlin ++(version @value{VERSION}, @value{UPDATED}). ++ ++Copyright @copyright{} 2001-2008 Members of the Gmerlin project. ++ ++@quotation ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.1 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,'' ++and with the Back-Cover Texts as in (a) below. A copy of the ++license is included in the section entitled ``GNU Free Documentation ++License.'' ++ ++(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify ++this GNU Manual, like GNU software. Copies published by the Free ++Software Foundation raise funds for GNU development.'' ++@end quotation ++@end copying ++@titlepage ++@title Gmerlin ++@subtitle for version @value{VERSION}, @value{UPDATED} ++@author Burkhard Plaum (@email{gmerlin@@users.sourceforge.net}) ++@page ++@vskip 0pt plus 1filll ++@insertcopying ++@end titlepage ++ ++@contents ++ ++@ifnottex ++@node Top, Basics, (dir), (dir) ++@top Gmerlin userguide ++Gmerlin user guide. ++ ++@insertcopying ++@end ifnottex ++ ++@menu ++* Basics:: ++* Installation:: ++* General usage information:: ++* Applications:: ++* Plugins:: ++* FAQ:: ++* Get involved:: ++@end menu ++ ++@node Basics, Installation, Top, Top ++@chapter Basics ++This manual should help you to get familiar with gmerlin software. The ++gmerlin software is quite modular, because it consists of multiple ++packages, most of which can be used independently. In this document, ++it is assumed, that you have all packages installed (See Installation below). ++ ++@node Installation, General usage information, Basics, Top ++@chapter Installation ++ ++@menu ++* Requirements:: ++* Compilation and installation:: ++* Binary codecs:: ++@end menu ++ ++@node Requirements ++@section Requirements ++ ++For compiling x264, you need @uref{http://nasm.sourceforge.net/, nasm} ++(@uref{http://www.tortall.net/projects/yasm/, yasm} on x86_64). ++They are included in ++most distributions. Required libraries can be installed from source or from ++binary packages. In the latter case, you must install the development ++packages (e.g. libfoo-devel-1.2.3-4.i386.rpm) also. This is what you need: ++ ++@table @emph ++ ++@item @uref{http://www.alsa-project.org/, Alsa} ++It's the recommended audio architecture ++ ++@item @uref{http://www.tux.org/~ricdude/EsounD.html, esound} ++Only needed if neither Alsa nor OSS work for you. ++ ++@item @uref{http://flac.sourceforge.net/, flac} ++For en-/decoding flac files (optional). ++ ++@item @uref{http://www.gtk.org/, gtk-2.4.x} ++This is needed for compiling the GUI applications. Without it you'll ++get just the core library, which won't be of much use. ++ ++@item @uref{http://www.ijg.org/, libjpeg} ++For reading and writing single JPEG images (strongly recommended) ++ ++@item @uref{http://www.libpng.org/pub/png/libpng.html, libpng} ++For reading and writing single PNG images (strongly recommended). ++Also for decoding png encoded Quicktime and AVI files ++ ++@item @uref{http://www.remotesensing.org/libtiff/, libtiff} ++For reading and writing single TIFF images (Optional) ++ ++@item @uref{http://www.xmlsoft.org/, libxml} ++Required. All kinds of configuration files as well as the media ++tree are xml based. ++ ++@item @uref{http://www.vorbis.com/, vorbis} ++Needed for en-/decoding Vorbis files. Also required for the ++theora encoding. ++ ++@item @uref{http://musicbrainz.org/products/client/index.html, libmusicbrainz} ++Needed for getting Audio CD metadata using ++@uref{http://musicbrainz.org/, musicbrainz} ++ ++@item @uref{http://libcddb.sourceforge.net/, libcddb} ++Needed for getting Audio CD metadata from CDDB servers ++ ++@item Headers for libXv and libXinerama ++These are usually shipped with X11 but some distributions pack the header ++files separately (e.g. libxv-dev, libxinerama-dev). libXv is needed for ++hardware accelerated video playback, libXinerama adds support for ++multi-screen configurations. ++ ++@item @uref{http://www.samba.org/, libsmbclient} ++For loading smb:// URLs (optional). ++ ++@item @uref{http://sourceforge.net/projects/libvisual, libvisual} ++For using libvisual plugins (optional). ++ ++@item @uref{http://www.ladspa.org, Ladspa plugins} ++Optional for audio filters/effects. Good experiences were made with ++the plugin packages @uref{http://www.ladspa.org/cmt/,cmt}, ++@uref{http://plugin.org.uk, swh-plugins} and ++@uref{http://tap-plugins.sourceforge.net, tap-plugins}. Gmerlin looks for them ++at runtime, so you can install them at any time. ++ ++@end table ++ ++From now on, there are 2 ways to proceed: ++@itemize @bullet ++@item You can download the ++@uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=151779, gmerlin-dependencies} ++package, unpack it and install it using the instructions in the README file. ++A full dependencies install will provide you with the complete codec support, ++but some packages you already have might be installed a second time. ++Everything, however, gets into /opt/gmerlin, so there will be no conflicts. ++ ++@item To have more control over the process, download and install the ++libraries listed below manually. ++@end itemize ++ ++@table @emph ++@item @uref{http://www.gnu.org/software/libcdio/, libcdio} ++Neccessary for the VCD, Audio CD and DVD plugins. ++ ++@item @uref{http://www.audiocoding.com/, faad2} ++Needed for MPEG-4 audio support (mp4, aac files). ++ ++@item @uref{http://www.audiocoding.com/, faac} ++Needed for MPEG-4 audio encoding (.aac files) and for AAC encoding via ++libquicktime. ++ ++@item @uref{http://www.ffmpeg.org/, FFmpeg} ++Many codecs, strongly recommended. You should get a sufficiently new ++version from @uref{http://ffmpeg.mplayerhq.hu/download.html, ffmpeg SVN} ++and use --enable-shared when calling configure. Another option is the ++version in the ++@uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=151779, gmerlin-dependencies} package. ++ ++@item @uref{http://www.mp3dev.org/, lame} ++For encoding mp3 files and AVIs with mp3 audio streams with libquicktime. ++ ++@item @uref{http://mad.sourceforge.net/, mad} ++For playing MPEG-1/2 audio (e.g. mp3) ++ ++@item @uref{http://freshmeat.net/redir/libdvdread/17926/url_homepage/downloads.shtml, libdvdread} ++For playing DVDs. Gmerlins method of accessing DVD drives doesn't ++differ much from others. Thus, DVD playback howtos found in the web ++apply for gmerlin as well. ++ ++@item @uref{http://developers.videolan.org/x264.html, x264} ++For H.264 encoding with libquicktime. ++ ++@item @uref{http://www.videolan.org/developers/libdca.html, libdca} ++For decoding DTS streams. ++ ++@item @uref{http://libmpeg2.sourceforge.net/, libmpeg2} ++For decoding MPEG-1/2 Video (like .mpg files and DVD video) ++ ++@item @uref{http://liba52.sourceforge.net/, liba52} ++For playing AC3 (aka DVD audio) streams. ++ ++@item @uref{http://www.musepack.net/, libmpcdec} ++For playing musepack files (optional). ++ ++@item @uref{http://www.theora.org/, theora} ++For en-/decoding theora video (optional). ++ ++@item @uref{http://www.speex.org/, speex} ++For en-/decoding Speex streams (optional). ++ ++@item @uref{http://libquicktime.sourceforge.net/, libquicktime} ++Optional, for the libquicktime based encoding and decoding plugins. ++Mostly necessary if you want to encode video. For decoding Quicktime, ++gmerlin_avdecoder is a lot better. ++ ++@item @uref{http://mjpeg.sourceforge.net/, mjpegtools} ++Optional for en-/decoding yuv4mpeg streams and for encoding high ++quality MPEG video using mpeg2enc and friends. ++ ++@end table ++ ++@node Compilation and installation ++@section Compilation and installation ++ ++If you downloaded a release, make sure, that you have the latest ++version of all packages. Alternatively, you can download the latest ++@uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=151778, gmerlin-all-in-one} ++package. It contains all source packages together ++with optional scripts to build and install them. Check the included ++README file. ++ ++We always try to be compatible ther GNU build system. This means, that ++all gmerlin packages are compiled using the usual ++@code{./configure; make; su; make install} prodecure. Type ++@code{./configure --help} to see the supported options. ++ ++The order is the following: ++ ++@itemize ++@item @uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=50349, gavl} ++@item @uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=14511, gmerlin} ++@item @uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=124659, gmerlin_avdecoder} ++@item @uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=152799, gmerlin-encoders} ++@item @uref{http://sourceforge.net/project/showfiles.php?group_id=19684&package_id=124661, gmerlin-visualizer} ++@end itemize ++ ++@node Binary codecs ++@section Binary codecs ++ ++These must be downloaded from the @uref{http://www1.mplayerhq.hu/MPlayer/releases/codecs/, MPlayer codec page}. Download the file ++essential-YYYYMMDD.tar.bz2, where YYYYMMDD is some date. Unpack the ++.tar.bz2 and move the included files to /usr/lib/codecs. At this ++location, the DLLs will also be found by other players. ++ ++@node General usage information, Applications, Installation, Top ++@chapter General usage information ++ ++@menu ++* Configuration data:: ++* GUI:: ++* GML Syntax: gml. ++* Setting parameters from the commandline:: ++@end menu ++ ++@node Configuration data ++@section Configuration data ++ ++They are saved in the directory @code{~/.gmerlin}, which has subdirectories ++for all applications. The directory "generic" stores common configuration ++data for applications, which have no config dialog. Plugins used by these ++programs can be configured with the gmerlin_plugincfg application. If a ++program misbehaves, especially after a version upgrade, delete the file ++@code{~/.gmerlin/application_dir/config.xml}, where @code{application_dir} ++corresponds to the application. Normally, this shouldn't be necessary. ++ ++@node GUI ++@section GUI ++ ++@menu ++* Introduction: gui_intro. ++* Static and dynamic parameters: gui_statdyn. ++* Configuring input plugins: gui_i. ++* Configuring filters: gui_f. ++* Log messages: gui_log. ++* Tips: gui_tips. ++@end menu ++ ++@node gui_intro ++@subsection Introduction ++ ++We try to make this as consistent as possible across the applications. ++In many windows, you'll see context sensitive menus when you right ++click somewhere. Furthermore, tooltips are enabled in all programs by ++default. You can, however, switch them off if they bother you. ++ ++@node gui_statdyn ++@subsection Static and dynamic parameters ++ ++All GUI applications have their own configuration data. ++This means, that plugin configurations are not shared between ++these applications. ++ ++There is a strict separation between static and plugin dependent ++configurations. ++ ++Most applications have one or more config dialogs ++@ifhtml ++( ++@image{../img/config_16} ++) ++@end ifhtml ++which let you change settings either for several subsystems of the ++application or for plugins, depending on the context. ++To change the plugins themselves, there are separate plugin dialogs ++@ifhtml ++( ++@image{../img/plugin_16} ++) ++@end ifhtml ++which let you select and configure plugins. ++ ++It might be a bit tricky to find out if a special option can be set ++via the the plugin dialog or via ++the global config dialog. The general rule is: All features, which are ++supported by the core architecture, are configured in some global ++dialog. You can expect them to be present on every gmerlin installation ++of the same version. The plugin options vary depending on what plugins ++are installed (that's the reason, why they are separated). ++ ++@node gui_i ++@subsection Configuring input plugins ++ ++@ifhtml ++@image{../img/gui_i} ++@end ifhtml ++ ++This dialog lets you control, how input plugins (or image reader plugins) ++are loaded. The widgets on the right are valid for the plugin, which is selected ++on the left. You have the following options: ++ ++@table @b ++@item Parameters ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++Lets you set parameters of the plugin. These will be valid when an instance of ++the plugin is opened the next time. If you configure hardware plugins in the player, ++you must close and reopen all device albums for the changes to become effective. ++For plugins, which have no options, this button is disabled. ++@item Info ++@ifhtml ++@image{../img/info_16} ++@end ifhtml ++Pops up a window showing much of the information, which is known to the plugin ++registry. ++@item Priority ++This lets you change the priority of the plugin, if multiple plugins are ++available for a gml. The value can be between 1 and 10. Usually, the default ++priorities are ok. But for image files, the priorities of the ``Image stills input plugin'' and the ``Image video input plugin'' decide, whether images are displayed ++as a slideshow or a video. ++@item Protocols ++Lets you configure the supported network protocols. The protocols should rarely ++be changed and changes are overwritten by a new install of the plugin. For plugins, ++which don't support network streams, the protocols cannot be changed. ++@item Extensions ++Lets you configure the file extensions, which are associated with the plugin. ++If you change the extensions, they are overwritten by a new install of the plugin. ++That's a good reason to report missing file extensions to the developers. ++@end table ++ ++@node gui_f ++@subsection Configuring filters ++ ++@ifhtml ++@image{../img/gui_f} ++@end ifhtml ++ ++This dialog lets you build a filter chain to apply additional changes to the ++A/V data. The GUI player will apply most changes during playback (reinitializing the ++playback pipelines if necessary), the transcoder can change filter chains only per ++track. The filters are processed in top-to-bottom order. ++ ++You have the following buttons: ++ ++@table @b ++@item Add filter ++@ifhtml ++@image{../img/add_16} ++@end ifhtml ++Pops up a dialog, which will let you add new filters to the chain. ++Filter are always added to the end of the chain. ++@item Remove filter ++@ifhtml ++@image{../img/trash_16} ++@end ifhtml ++Deletes the currently selected filter ++@item Configure filter ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++Set parameters of the currently selected filter ++@item Move to top ++@ifhtml ++@image{../img/top_16} ++@end ifhtml ++Move filter to the top (= the beginning) of the chain ++@item Move up ++@ifhtml ++@image{../img/up_16} ++@end ifhtml ++Move filter up by one ++@item Move down ++@ifhtml ++@image{../img/down_16} ++@end ifhtml ++Move filter down by one ++@item Move to top ++@ifhtml ++@image{../img/bottom_16} ++@end ifhtml ++Move filter to the bottom (= the end) of the chain ++@end table ++ ++@b{Note for the player} ++ ++Even though filter parameters are changed on the fly, ++pressing ``cancel'', without pressing ``apply'' before will ++revert all changes you made. ++ ++@node gui_log ++@subsection Log messages ++ ++@ifhtml ++@image{../img/gui_log} ++ ++@end ifhtml ++Messages from pretty much everywhere in the applications are sent through the ++logging mechanism, and finally show up in the log window. It's the first place to ++look, if something does not work as expected (e.g. an URL does not load). ++There are 4 different types of messages, @b{error}, @b{warning}, @b{info} and ++@b{debug}. In the configuration for the log window, you can select, which message ++you want to see, the colors of the messages and the history size. ++@node gui_tips ++@subsection Tips ++ ++@itemize ++@item Many buttons, which are associated with a list, are disabled unless you select an item in the list ++@item Doubleclicking onto the background of a slider (@strong{not} the slider itself) resets it to the ++ factory default ++@end itemize ++ ++@node gml ++@section GML Syntax ++ ++GMLs (Gmerlin media locations) are pretty much similar to URLs or ++MRLs with the difference, that device plugins support passing the device. ++This makes it possible to use gmls with hardware setups, which have ++multiple devices for each plugin. ++ ++A gml can be: ++ ++@table @bullet ++@item A regular filename ++Optionally preceeded with ``file://''. This means, that @b{/files/music.mp3} is the same as ++@b{file:///files/music.mp3}. ++@item A dash ``-'' or the string ``stdin://'' for reading from stdin ++@item Any valid network URL ++Examples: @b{http://webstream.example.com:8080}, @b{ftp://user:pass@@ftp.example.com/music.mp3} ++@item A "hardare protocol" followed by the device like @b{cda:///dev/hdc}. ++Known hardware protocols are @b{cda} (Audio CD), @b{vcd}, @b{dvd} and ++@b{dvb}. The supported protocols may vary according to your installation. ++@end table ++ ++ ++@node Setting parameters from the commandline ++@section Setting parameters from the commandline ++ ++Gmerlin configuration handling provides the same features for both GUI ++applications and commandline programs. The natural result is, that the ++commandline syntax is a bit more complicated, since parameters can be ++nested. ++ ++In General options have the form ++ ++@code{'parameter1=value1:parameter2=value2...'} ++ ++The quotes are necessary, if the string contains characters, which ++have a special meaning for the shell. ++ ++The syntax of values depends on the type: ++@table @strong ++@item Boolean ++Value can be either 0 or 1. ++@item Integer values ++An integer number. ++@item Float values ++A floating point (i.e. fractional) number. ++@item Strings ++A string. Colons ':' should be escaped with '\'. ++@item Time ++Time is in the format @code{@{[[HH:]MM:]SS@}} while the seconds can be ++fractional. Hours and Minutes are optional, thus any format of ++@code{@{5.5@}}, @code{@{0:05.5@}} or @code{@{0:00:05.5}@} is valid for a time ++of 5.5 seconds. Writing @code{0} instead of @code{00} is also ok. ++@item Enumeration with suboptions ++Value is in the form ++@code{string[@{subparameter1=subvalue1:subparameter2=subvalue2...@}]}. ++The subparameters are optional. E.g. if the option is for selecting a ++plugin, setting string to @code{foo} will select the plugin @code{foo} and ++pass the subparameters (if avaliable) to the @code{foo} plugin. ++@item List or chain with suboptions ++This is like enumeration with suboptions with the difference, that ++you can concatenate multiple options together with colons (:) and ++must enclose everything with braces. For example: ++ ++@code{@{opt1@{param1=value1@}:opt2@{param2=value2@}@}} ++ ++If you use @code{-help}, you'll also see supported ranges for ++numeric types, or supported options for strings (if available). ++ ++@end table ++ ++@node Applications, Plugins, General usage information, Top ++@chapter Applications ++ ++@menu ++* GUI Player:: ++* Player remote control:: ++* GUI Transcoder:: ++* Transcoder remote control:: ++* Commandline player:: ++* Commandline recorder:: ++* Alsamixer:: ++* Visualizer:: ++* Keyboard daemon:: ++@end menu ++ ++@node GUI Player ++@section GUI Player ++Type @code{gmerlin} with optionally any number of files or URLs to start this. ++ ++@menu ++* Invoking gmerlin: gmerlin_player_usage. ++* Main window:: ++* Media tree:: ++* Video window:: ++* Track information: gmerlin_player_trackinfo. ++* Configuring playback pipelines: gmerlin_player_avconfig. ++* Shortcuts: gmerlin_player_shortcuts. ++@end menu ++ ++@node gmerlin_player_usage ++@subsection Invoking gmerlin ++ ++@include gmerlin_player.texi ++ ++@node Main window ++@subsection Main window ++@ifhtml ++@image{../img/player_mainwin} ++ ++@end ifhtml ++ ++It's a usual player window, with self explanatory buttons. ++ ++@menu ++* Main menu: player_mainmenu. ++* Display: player_display. ++@end menu ++ ++@node player_mainmenu ++@subsubsection Main menu ++ ++The menu button will show the main menu of the player. Here, you can ++control practically the whole application: ++ ++@table @b ++@item Audio, video and subtitles ++ See @ref{gmerlin_player_avconfig, Configuring playback pipelines}. ++@item Chapters ++@ifhtml ++@image{../img/player_chapters} ++ ++@end ifhtml ++Chapters in gmerlin are just seekpoints with optional labels. ++If an input plugin supports chapters (e.g. of DVDs), gmerlin will ++make them available through the chapter menu. ++@item Visualizations ++@ifhtml ++@image{../img/player_vis} ++ ++@end ifhtml ++If the upper menu item is enabled and the video window isn't used otherwise, ++Visualizations will be turned on. ++The audio stream of an Audio/video track can be visualized by disabling the video stream ++of that file (See @ref{gmerlin_player_avconfig, Configuring playback pipelines}). ++ ++Then you can set some plugin-independent options ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++and finally the plugin itself ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++. The menu for visualization plugin works exactly the same as for output plugins ++(See @ref{gmerlin_player_avconfig, Configuring playback pipelines}). ++ ++@item Windows ++@ifhtml ++@image{../img/player_windows} ++ ++@end ifhtml ++Here, you can show or hide the @ref{gui_log, Log window}, the ++@ref{gmerlin_player_trackinfo, Track info window} and the @ref{Media tree}. ++ ++@item Options ++@ifhtml ++@image{../img/player_options} ++ ++@end ifhtml ++Here, you can set @b{Preferences} ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++, configure @ref{gui_i, Input plugins} ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++, select ++@b{skins} or configure the @ref{Keyboard daemon}. ++ ++@item Commands ++@ifhtml ++@image{../img/player_commands} ++ ++@end ifhtml ++Here you have some commonly used commands. The good news about the ++shortcuts is, that they work in the ++media tree and in the video window as well. ++ ++Only exception are the shortcuts, which map to ASCII-characters ++(Pause and Seek to start), they don't work in the media tree and in albums. ++ ++Use this menu as a quick-help for all global ++shortcuts. ++ ++@item Accessories ++@ifhtml ++@image{../img/player_accessories} ++ ++@end ifhtml ++Here, you can conventiently fire up some other gmerlin applications ++like the @ref{GUI Transcoder}, the @ref{Visualizer} and the ++@ref{Alsamixer}. ++ ++@end table ++ ++@node player_display ++@subsubsection Display ++ ++@ifhtml ++@image{../img/player_display} ++ ++@end ifhtml ++The display is divided into several areas. Left of the ++time display, gmerlin shows an icon denoting the current ++operation mode (playing, paused etc.). Right of the time display, ++you have 2 fields. By left-clicking into the upper field, you can ++change the displayed time value. Options are ++@table @b ++@item Default ++Time is counted since track start ++@item ALL ++Time is counted since album start ++@item REM ++Remaining time until track end ++@item ALL REM ++Remaining time until album end ++@end table ++ ++In the lower field, you can left-click to change the repeat mode. ++Options are @b{no repeat}, @b{repeat current track} and ++@b{repeat current album}. ++ ++At the bottom, there is the scrolltext. It displayes the name of the currently played ++track (which can change e.g. for live radio stations), or a brief error messages if ++something goes wrong. Note, that in the latter case, you get more information from the ++@ref{gui_log, Log Window}. ++ ++@node Media tree ++@subsection Media tree ++ ++@ifhtml ++@image{../img/player_tree_tabbed} ++@end ifhtml ++ ++The media tree can be used to store and organize your media collection. ++It consists of virtual folders called @emph{albums}. You can create albums, ++subalbums and move stuff between them like you want. The media files ++always stay at the same place in the filesystem. The albums can be either ++in own windows (Windowed mode) or as tabs in the tree window (tabbed mode). You ++cah switch this with the right-click menu of the tree widget. ++The tree- and album windows remember their screen positions. ++ ++@menu ++* Tree widget: player_treewidget. ++* Album widget: player_albumwidget. ++@end menu ++ ++@node player_treewidget ++@subsubsection Tree widget ++ ++@b{Doubleclicking} an album opens it if it was closed or vice versa. ++ ++@b{Creating albums} is done by right selecting the parent album in ++the tree and click the ``New album'' button ++@ifhtml ++@image{../img/folder_new_16} ++@end ifhtml ++or ``Album->New'' in the right-click menu. In the new empty album, you can then ++load files or URLs. Another option to import whole directory trees, is to ++click ``Album->New from directory''. It will pop up a directory selection dialog. ++The directory can optionally be scanned recursively. The tracks are either in one ++(flat) album, or in subalbums according to the directory structure. ++Note that importing large directories takes some time. ++ ++@b{Deleting albums} is done by selecting them in the tree and ++clicking the ``remove'' button ++@ifhtml ++@image{../img/trash_16} ++@end ifhtml ++(or by choosing Album->Remove in the right click menu. Please note ++the following: ++ ++@itemize @bullet ++@item Removing albums is done without confirmation ++@item All subalbums are removed as well ++@item This (as well as removing tracks) cannot be undone ++@item Good news: gmerlin @b{never} removes media files from disk ++@end itemize ++ ++@b{Moving albums} is done with Drag & Drop ++ ++@b{Loading files or URLs} into an open or closed album can be done by ++dragging it from a filemanager or webbrowser into the target album in the tree widget. ++ ++Some @b{special albums} are automatically created in addition to the ++regular albums (which are created by you): ++ ++@itemize @bullet ++@item @emph{Incoming:} ++@ifhtml ++@image{../img/incoming_closed_16} ++@end ifhtml ++ ++It's the destination for tracks, which come from ++the comandline or from the remote. ++ ++@item @emph{Favourites:} ++@ifhtml ++@image{../img/favourites_closed_16} ++@end ifhtml ++ ++Each regular album has a Favourites button ++@ifhtml ++@image{../img/favourites_16} ++@end ifhtml ++, which ++lets you copy the selected tracks to the favourites. It's useful for ++quickly making a selection of tracks from multiple different albums. ++ ++@item @emph{Plugin and device albums:} ++@ifhtml ++@image{../img/hardware_16} ++@end ifhtml ++ ++Each plugin, which handles devices like removable disc drives ++@ifhtml ++@image{../img/drive_running_16} ++@end ifhtml ++or tuners ++@ifhtml ++@image{../img/tuner_16} ++@end ifhtml ++will create a plugin album. The available devices are ++then autoscanned and added as subalbums. Device albums are a bit limited: ++You can delete or reorder tracks, but you cannot move tracks from/to other ++albums. ++ ++@end itemize ++ ++@node player_albumwidget ++@subsubsection Album widget ++ ++The album widget can either be in an own window (when the tree is in tabbed mode) ++or in a notebook right of the tree widget. It lists all tracks of that album. ++At the bottom there is a toolbar and a display of the total playback time of the album. ++ ++A @b{track} in gmerlin is a piece of media, which can have an arbitrary number of audio-, ++video- and subtitle @b{streams}. A track can be divided into @b{chapters} (which are just ++seekpoints). Some files (like ALBW wrapped mp3s or concatenated Ogg streams), will show ++up as multiple tracks. You can move them around in the whole tree as if they were separate ++files. ++ ++@b{Doubleclicking} an album opens it if it was closed or vice versa. ++ ++The @b{right click menu} offers lots of options and shortcuts, not all of them are ++documented here. ++ ++@b{Adding tracks} can happen in multiple ways: ++ ++@itemize @bullet ++@item Drag Files or URLs from filenanagers or webbrowsers into an album ++@item Use the buttons ++@ifhtml ++@image{../img/folder_open_16} ++@end ifhtml ++@ifhtml ++@image{../img/earth_16} ++@end ifhtml ++in the album toolbar, or the right click menu ++@end itemize ++ ++@b{Drag and Drop} is supported: ++@itemize @bullet ++@item From most webbrowsers and filenmanagers into the album (see above) ++@item From one regular album to another. By default, tracks are moved. ++ Press the @key{CTRL}-key before dragging, and the tracks will be copied. ++@item Inside all albums to sort the tracks ++@item From an album window into the tree window to transfer tracks to ++ another album ++@item From the album to text editors or graphics programs, which support ++dropping text. You'll get a string representation of the tracks, which ++will make designing disk covers easier. ++@end itemize ++ ++@b{Error tracks} are tracks, which failed to load last time you tried. ++They are marked red but remain in the album. If they are on removable ++disks or in the network, you might retry playing them when they become ++available. To delete all error tracks, go to ``Select error tracks'' in the ++right click menu to select them. Then, press @kbd{@key{CTRL}+DELETE} ++to get rid of them. ++ ++For keyboard commands, see @ref{gmerlin_player_shortcuts, Shortcuts}. ++ ++@node Video window ++@subsection Video window ++ ++This comes only when gmerlin has to show some video or still images. It ++is created and owned by the video output plugin (i.e. it has nothing to ++do with the core GUI). Currently, only an X11 plugin is available. It ++has some special features: You can zoom or squeeze the image to make ++your favourite tradeoff between aspect ratio distortion, black borders ++or cropped images. All global gmerlin @ref{gmerlin_player_shortcuts, Shortcuts} work ++also in the video window, as well as some special ones. ++ ++@node gmerlin_player_trackinfo ++@subsection Track information ++@ifhtml ++@image{../img/player_trackinfo} ++ ++@end ifhtml ++ ++Here, you see detailed information of the currently (or last) played track ++in a tree structure. The right-click menu lets you copy either the whole contents or ++the currently selected row to the clipboard as plain text. ++ ++@node gmerlin_player_avconfig ++@subsection Configuring playback pipelines ++ ++The configuration for audio, video and subtitle handling is almost the same. ++ ++@b{Stream menu} ++ ++For each category, you have a stream menu. ++ ++@ifhtml ++@image{../img/player_avconfig_menu} ++@end ifhtml ++ ++In the upper part, you can select the available streams. ++You can also switch the stream off. ++ ++In the lower part, you can set global (= plugin independent) options ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++, Filters ++@ifhtml ++@image{../img/filter_16} ++@end ifhtml ++ (See @ref{gui_f, Configuring filters}) ++and the output plugin ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++. ++ ++@b{Output plugin menu} ++ ++@ifhtml ++@image{../img/player_avconfig_plugin} ++@end ifhtml ++ ++In the upper part, you can change the output plugin (even during playback). ++In the lower part, you can configure ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++the plugin or show information ++@ifhtml ++@image{../img/info_16} ++@end ifhtml ++about the plugin. ++ ++@node gmerlin_player_shortcuts ++@subsection Shortcuts ++ ++The following global shortcuts are available in the main window, the media ++tree including albums and the video window: ++ ++@table @kbd ++@item @key{CTRL}+G ++Pop up current album and goto current track ++ ++@item @key{CTRL}+O ++Pop up preferences dialog ++ ++@item @key{CTRL}+P ++Pop up input plugin dialog ++ ++@item @key{CTRL}+Q ++Quit program ++ ++@item @key{CTRL}+PAGEDOWN ++Goto next track ++ ++@item @key{CTRL}+PAGEUP ++Goto previous track ++ ++@item @key{CTRL}+@key{SHIFT}+PAGEDOWN ++Goto next chapter ++ ++@item @key{CTRL}+@key{SHIFT}+PAGEUP ++Goto previous chapter ++ ++@item @key{CTRL}+RIGHT ++Seek forward ++ ++@item @key{CTRL}+LEFT ++Seek backward ++ ++@item @key{SHIFT}+RIGHT ++Decrease volume ++ ++@item @key{SHIFT}+LEFT ++Increase volume ++ ++@item @key{CTRL}+M ++Toggle mute ++ ++@item 0 ++(Zero) Seek to start. This is not available in the media tree and the albums. ++ ++@item Space ++Toggle pause. This is not available in the media tree and the albums. ++ ++@item @key{CTRL}+G ++Goto current track. This raises the current album and moves to the ++current track within that album. ++ ++@item F9 ++Copy current track to favourites ++ ++@item @key{CTRL}+Q ++Quit gmerlin ++@end table ++ ++The following additional chortcuts are available in the @ref{Video window}: ++ ++@table @kbd ++ ++@item CTRL+PLUS/MINUS ++Increase/decrease aspect ratio (squeeze). Zoom and squeeze are a simple way to choose your ++personal tradeoff between aspect ratio distortion, missing image parts and black borders. ++ ++@item CTRL+MOUSEWHEEL ++Increase/decrease aspect ratio (squeeze). ++ ++@item ALT+PLUS/MINUS ++Increase/decrease zoom factor ++ ++@item ALT+MOUSEWHEEL ++Increase/decrease zoom factor ++ ++@item @key{CTRL}+HOME ++Reset zoom and squeeze ++ ++@item HOME ++Resize the window to the size of the video. If the video has nonsquare ++pixels, the window width is adjustetd accordingly. ++ ++@item @key{SHIFT}+HOME ++Shrink the window such that no black borders are visible abound the video ++ ++@item B/b ++Increase/decrease brightness. ++ ++@item S/s ++Increase/decrease saturation. ++ ++@item C/c ++Increase/decrease contrast. ++ ++Brightness, saturation and contrast work only, if the hardware and the currently used display driver ++support this. ++ ++@item TAB ++Toggle fullscreen/windowed mode ++@item f ++Toggle fullscreen/windowed mode ++@item Esc ++Exit fullscreen mode ++@end table ++ ++The following additional shortcuts are available inside @ref{player_albumwidget, albums}: ++ ++@table @kbd ++@item UP/DOWN ++Move the cursor one track up/down ++ ++@item PAGEUP/PAGEDOWN ++Move the cursor one page up/down ++ ++@item Mousewheel ++Scroll ++ ++@item SHIFT+UP/DOWN ++Move the cursor one track up/down and select track ++ ++@item SHIFT+PAGEUP/PAGEDOWN ++Move the cursor one page up/down and select tracks ++ ++@item @key{CTRL}+UP/DOWN ++Move the cursor one track up/down and unselect track ++ ++@item ALT+HOME ++Move selected tracks to the top ++ ++@item ALT+END ++Move selected tracks to the bottom ++ ++@item ALT+MOUSEWHEEL ++Increase/decrease zoom factor ++ ++ ++@item @key{CTRL}+C ++Copy selected tracks to clipboard ++ ++@item @key{CTRL}+X ++Cut selected tracks to clipboard ++ ++@item @key{CTRL}+V ++Paste tracks from clipboard at the current cursor position ++ ++@item @key{CTRL}+DELETE ++Delete selected tracks ++ ++@item @key{CTRL}+F ++Search for tracks ++ ++@item @key{CTRL}+I ++Display info about the currently selected track ++ ++@item F10 ++Copy selected tracks to favourites ++@end table ++ ++@node Player remote control ++@section Player remote control ++ ++@code{gmerlin_remote} is the command for remotely controlling the ++GUI player. It can be used as a helper application if webbrowsers ++or filenmanagers or for all kinds of remote control methods (including ++keyboard- or infrared-daemons), which can execute arbitrary shell ++commands. One example for a generic keyboard daemon, which can call ++@code{gmerlin_remote} is the @ref{Keyboard daemon, Gmerlin Keyboard daemon}. ++ ++@menu ++* Invoking gmerlin_remote: gmerlin_remote. ++* Examples: gmerlin_remote_examples. ++@end menu ++ ++@node gmerlin_remote ++@subsection Invoking gmerlin_remote ++ ++@include gmerlin_remote.texi ++ ++@node gmerlin_remote_examples ++@subsection Examples ++ ++@table @code ++@item gmerlin_remote -play ++Play the current track (same as pressing the ``play'' button) ++ ++@item gmerlin_remote -host remote.example.com -play ++Connect to @code{remote.example.com} and play the current track there ++ ++@item gmerlin_remote -seek-rel -10.0 ++Seek 10 seconds backwards ++ ++@item gmerlin_remote -next ++Go to next track ++ ++@item gmerlin_remote -chapter + ++Go to next chapter ++ ++@item gmerlin_remote -openplay cda:///dev/scd0 ++Open and play an audio CD in the first SCSI drive and start playing. ++Use commands like this in your desktop configuration for handling removable ++media. ++ ++@item gmerlin_remote -launch -addplay http://webradio.example.com/stream.ogg ++Add the given gml to the Incoming ++@ifhtml ++@image{../img/incoming_closed_16} ++@end ifhtml ++album (launching a new player if necessary) and play it. Use commands like this as ++MIME-Handler in webbrowsers and filemanagers. A shortcut for this command is the ++script ++@code{gmerlin_launcher}. ++@end table ++ ++ ++@node GUI Transcoder ++@section GUI Transcoder ++ ++@menu ++* Invoking gmerlin_transcoder: gmerlin_transcoder. ++* Quick intro: gmerlin_transcoder_intro. ++* Main window: gmerlin_transcoder_window. ++* Configuring encoder plugins: gmerlin_transcoder_enc. ++* Configuring tracks: gmerlin_transcoder_tracks. ++@end menu ++ ++@node gmerlin_transcoder ++@subsection Invoking gmerlin_transcoder ++ ++@include gmerlin_transcoder.texi ++ ++@node gmerlin_transcoder_intro ++@subsection Quick intro ++ ++Gmerlin transoder can transcode every supported input file ++to any of the supported output files. It has some unique features, ++which seperate it from other transcoding applications. Most notably: ++ ++@table @b ++@item Per stream settings ++All settings are configured for each stream separately. This means, ++different streams can have different formats, different filters and ++even different codecs (of course only if the container supports it) ++ ++@item Subtitle support ++There are plugins for exporting subitles to separate files or to the ++same file, where the A/V data gets written. Alternatively, you can ++blend subtitles onto the video frames (for containers, which don't ++support subtitles). ++ ++@item Profile support ++Finding out the right encoder parameters can be a time-consuming task. ++@code{gmerlin_transcoder} allows you to save all settings and load them later. ++Once you have found out your favourite encoder settings for a specific task, ++transcoding is a matter of ++@itemize @bullet ++@item Loading the profile ++@item Adding tracks to the tasklist ++@item Clicking the transcode button ++@end itemize ++ ++@item Postprocessing support ++There are postprocessors, which take the encoded files and ++make e.g. Audio CDs (with cdtext) from it. It also contains a frontend for cdrdao, ++so you can burn them as well. ++ ++@item Chapter support ++@code{gmerlin_transcoder} imports all chapter seekpoints from the source, and writes ++them into the file (currently only supported for Quicktime and mp4). ++You can also edit chapter lists or create new ones ++@item Language codes ++@code{gmerlin_transcoder} lets you import, edit and export language codes for ++the Audio- and subtitle streams ++@item 2 Pass encoding ++For plugins, which support it, we can do 2-transcoding. There is also a ++generic volume normalizer built in. ++@end table ++ ++There is a @ref{transcoder_tasklist, tasklist}, ++in which the tracks are queued. All newly loaded tracks ++get the globally configured settings (plugins, formats, filters). You can then ++fine-tune the tracks by configuring them individually. Changing track ++parameters for multiple tracks at once isn't possible. Instead, make the ++settings, save them to a profile and load the profile before loading the ++tracks. ++ ++@node gmerlin_transcoder_window ++@subsection Main window ++ ++@ifhtml ++@image{../img/transcoder_mainwin} ++@end ifhtml ++ ++The window contains of the following elements: ++ ++@menu ++* Menu bar: transcoder_menubar. ++* Display: transcoder_display. ++* Progress bar: transcoder_progressbar. ++* Tasklist: transcoder_tasklist. ++@end menu ++ ++@node transcoder_menubar ++@subsubsection Menu bar ++ ++Here you have all @b{global} commands and settings. ++The item @b{Tasklist} has @b{per track} commands and settings. ++ ++@b{File menu} ++ ++@table @b ++@item Load tasklist... ++@ifhtml ++@image{../img/folder_open_16} ++@end ifhtml ++Pops up a file selection dialog and loads the chosen tasklist. ++The tracks are appended to already existing tracks in the list. ++Has a shortcut in the @b{upper} toolbar. ++@item Save tasklist... ++@ifhtml ++@image{../img/save_16} ++@end ifhtml ++Pops up a file selection dialog for saving the current tasklist. ++Has a shortcut in the @b{upper} toolbar. ++@item Quit ++@ifhtml ++@image{../img/quit_16} ++@end ifhtml ++Stop the current transcoding action (if any) and quit ++Has a shortcut in the @b{upper} toolbar. ++@end table ++ ++@b{Options menu} ++@table @b ++@item Preferences ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++Here, you configure the GUI and the default settings for newly added tracks. ++The preferences are saved in the profile. ++ ++@item Configure plugins ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++Here, you set the default plugins for newly added tracks. You can ++configure input plugins (See @ref{gui_i, Configuring input plugins}) ++and encoders (See @ref{gmerlin_transcoder_enc, Configuring encoders}). ++The plugin settings are saved in the profile. ++ ++@item Load profile... ++@ifhtml ++@image{../img/folder_open_16} ++@end ifhtml ++Pops up a file selection dialog and loads the chosen profile. ++All configuration and plugin settings for new tracks will be ++changed immediately. ++@item Save profile... ++@ifhtml ++@image{../img/save_16} ++@end ifhtml ++Pops up a file selection dialog for saving the current configuration ++to a profile. ++ ++@end table ++ ++@b{Actions} ++ ++@table @b ++@item Start transcoding ++@ifhtml ++@image{../img/run_16} ++@end ifhtml ++This will start transcoding of the tracks in the trasklist in top-to-bottom ++order. While transcoding you can still add/delete/edit tracks in the list. ++Has a shortcut in the @b{upper} toolbar. ++@item Stop transcoding ++@ifhtml ++@image{../img/stop_16} ++@end ifhtml ++Stops transcoding. If the currently transcoded track is not a ++live stream, the produced files are deleted from disk (unless you disable ++this in the preferences). The currently decoded track is moved back to the ++top of the tasklist. ++Has a shortcut in the @b{upper} toolbar. ++@end table ++ ++@b{Tasklist} ++ ++This menu acts on the tasklist as a whole or the selected track(s). ++ ++@table @b ++@item Add... -> Files... ++@ifhtml ++@image{../img/folder_open_16} ++@end ifhtml ++Pops up a file selection dialog, which lets you add files (optionally ++with a specific input plugin) to the end of the tasklist. ++Has a shortcut in the @b{lower} toolbar. ++@item Add... -> URLs... ++@ifhtml ++@image{../img/earth_16} ++@end ifhtml ++Pops up a window, which lets you enter an URL (optionally ++with a specific input plugin) to the end of the tasklist. ++Has a shortcut in the @b{lower} toolbar. ++@item Add... -> Drives... ++@ifhtml ++@image{../img/drive_running_16} ++@end ifhtml ++Pops up a window, which lets open a removeable disk (e.g. ++and Audio CD) and append it's tracks to the end of the ++tasklist. You must specify the device @b{and} the plugin. ++Has a shortcut in the @b{lower} toolbar. ++@item Selected... -> Move up... ++@ifhtml ++@image{../img/top_16} ++@end ifhtml ++Move the selected tracks to the top of the list, so they will be ++transcoded first. ++@item Selected... -> Move down... ++@ifhtml ++@image{../img/down_16} ++@end ifhtml ++Move the selected tracks to the bottom of the list, so they will be ++transcoded last ++@item Selected... -> Remove... ++@ifhtml ++@image{../img/trash_16} ++@end ifhtml ++Remove the selected tracks (without confirmation or undo). ++Has a shortcut in the @b{lower} toolbar. ++@item Selected... -> Configure... ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++Configure the selected track. ++Has a shortcut in the @b{lower} toolbar. ++@item Selected... -> Edit chapters... ++@ifhtml ++@image{../img/chapter_16} ++@end ifhtml ++Pop up the chapter editor. If the source has chapters, you'll ++find them here. You can also add/delete/move chapters. Chapters ++can also have names (currently only supported by the libquicktime encoder). ++Has a shortcut in the @b{lower} toolbar. ++ ++@item Selected... -> Change encoders... ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++Here, you set the encoding plugins of the selected tracks. ++(See @ref{gmerlin_transcoder_enc, Configuring encoders}). ++Has a shortcut in the @b{lower} toolbar. ++ ++@item Edit... -> Cut ++@ifhtml ++@image{../img/cut_16} ++@end ifhtml ++Cut selected tracks to the clipboard. ++Has a shortcut in the @b{lower} toolbar. ++ ++@item Edit... -> Copy ++@ifhtml ++@image{../img/copy_16} ++@end ifhtml ++Copy selected tracks to the clipboard. ++Has a shortcut in the @b{lower} toolbar. ++ ++@item Edit... -> Paste ++@ifhtml ++@image{../img/paste_16} ++@end ifhtml ++Paste tracks or album entries from the @ref{GUI Player} ++from the clipboard. Has a shortcut in the @b{lower} toolbar. ++@item Postprocess... ++Pops up a dialog to configure postprocessing. ++Postprocessing plugins are invoked whenever ++the tasklist gets empty. It adds all tracks, which have ++been encoded since batch transcoding was started. ++Postprocessors make some sanity checks of the files they get, ++and won't try to burn e.g. audio CDs with MPEG data. ++@end table ++ ++@b{Windows} ++ ++Here, you can show and hide the @ref{gui_log, log window}. ++ ++@node transcoder_display ++@subsubsection Display ++Displays the currently performed action and the estimated ++remaining time for the current action. The time display in the lower right ++corner shows the total playback time of the tasklist. ++ ++@node transcoder_progressbar ++@subsubsection Progress bar ++Displays the progress of the current action. ++ ++@node transcoder_tasklist ++@subsubsection Tasklist ++ ++A queue for tracks to be transcoded. Right clicking into the ++list pops up a menu, which is the same as in the menubar. ++ ++New tracks can be added in various ways: ++ ++@itemize @bullet ++@item By dragging files or URLs from filenanagers or webbrowsers into the tasklist ++@item By using the buttons in lower toolbar or the right click menu ++@item From the @ref{GUI Player} by right clicking into an album end select Selected->Transcode. If multiple transcoders are open, the ++instance, which listens on the remote port (can be only one at a time), ++gets the track. ++@item By dragging tracks from a gmerlin album into the tasklist ++@end itemize ++ ++@node gmerlin_transcoder_enc ++@subsection Configuring encoders ++@ifhtml ++@image{../img/transcoder_enc} ++@end ifhtml ++ ++This dialog exists in the global settings as well as in the per track ++settings. It describes a complete encoder setup. ++ ++There are 2 different modes for encoding: Either all A/V streams go into ++one file, or into separate files (i.e. it's not possible to group some ++A/V streams and write others separately). You control this by clicking ++``Encode audio into video file'' checkbox. Subtitles can be written into ++the video file, or into a separate file. You can select this independently for ++text- and overlay subtitles with the corresponding checkbuttons. ++ ++Note, that some streams are always written to a separate file (regardless ++of the check-box settings) if the video encoder plugin doesn't support streams ++of that type. ++ ++Then, you can set encoder plugins for each stream type. The menu selects ++the plugin. Right of the menu, there are buttons for displaying plugin info ++@ifhtml ++@image{../img/info_16} ++@end ifhtml ++and setting global options ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++(like ID3 generation or fileformat flavours). These settings can be changed ++on a per track basis in the @ref{gmerlin_transcoder_tracks, ++ track configuration dialog}. ++ ++Finally, there are the default audio- ++@ifhtml ++@image{../img/audio_16} ++@end ifhtml ++and video ++@ifhtml ++@image{../img/video_16} ++@end ifhtml ++settings. Here, you mostly configure codec parameters like bitrates, etc. ++To further tweak these settings of a per stream base, you'll find the ++same options for each stream in the @ref{gmerlin_transcoder_tracks, ++ track configuration dialog}. ++ ++@node gmerlin_transcoder_tracks ++@subsection Configuring tracks ++@ifhtml ++@image{../img/transcoder_track} ++@end ifhtml ++ ++It's a standard gmerlin configuration dialog, which is built dynamically ++depending on the stream layout of the source and the encoder setup. On ++the left you see a tree structure of all settings: ++@table @b ++@item General ++Sets global settings like basename of the file and an optional subdirectory ++of the encoding directory, where the file(s) will be written. Note, that ++the toplevel destination directory is configured globally, not per track. ++ ++If you select ``postprocess only'', the input file will be sent directly ++to the postprocessing plugin. Enable this for files, which already have a ++format supported by the postprocessor. ++ ++Finally you can choose to transcode only a certain selection given by ++the start- and/or end time. ++ ++@item Metadata ++Here, any available metadata are imported from the input, and you can ++edit them. Note that not all medatada fields are supported by all output ++formats. Some formats don't support metadata at all. ++ ++@item Global encoder options ++For each enabled encoding plugin, you can configure global settings here. ++ ++@item Stream options ++For each stream, you have @b{Generic options}. Here you can en- or disable ++the stream, set the language and the format. In addition for subtitles, ++you can choose whether to convert text- to overlay subtitles, blend ++subtitles onto video frames or encode them separately. ++ ++For Audio and video streams, you can also set up @ref{gui_f, filters}. ++ ++For text subtitles, the @b{render options} let you configure the ++font and colors of the subtitles, if they are converted to overlay ++subtitles. ++ ++The @b{default format} of subtitles is for the rare case, that you want ++to convert subtitles to a video stream. It's only used if you encode subtitles ++but no corresponding video stream. ++ ++The last tree- node for each stream has always the codec option of the ++output plugin for the respective streams. Here, you can change encoder ++settings for each stream separately. ++@end table ++ ++@node Transcoder remote control ++@section Transcoder remote control ++ ++@menu ++* Invoking gmerlin_transcoder_remote: gmerlin_transcoder_remote. ++@end menu ++ ++@node gmerlin_transcoder_remote ++@subsection Invoking gmerlin_transcoder_remote ++ ++@include gmerlin_transcoder_remote.texi ++ ++ ++@node Commandline player ++@section Commandline player ++ ++@menu ++* Invoking gmerlin_play: gmerlin_play. ++@end menu ++ ++@node gmerlin_play ++@subsection Invoking gmerlin_play ++ ++@include gmerlin_play.texi ++ ++@node Commandline recorder ++@section Commandline recorder ++ ++@menu ++* Invoking gmerlin-record: gmerlin-record. ++@end menu ++ ++@node gmerlin-record ++@subsection Invoking gmerlin-record ++ ++@include gmerlin_record.texi ++ ++@node Alsamixer ++@section Alsamixer ++ ++@ifhtml ++@image{../img/alsamixer} ++@end ifhtml ++ ++Type @code{gmerlin_alsamixer} to start this. ++This is a mixer program, which is still convenient, if you have ++multiple soundcards with 100s of options each. It provides widgets ++for almost all soundcard parameters, which are supported by alsa. ++ ++By right clicking on a control, you get a menu where you can: ++ ++@itemize @bullet ++@item Move controls inside the window ++@ifhtml ++@image{../img/first_16} ++@image{../img/left_16} ++@image{../img/right_16} ++@image{../img/last_16} ++@end ifhtml ++ ++@item Move controls to own windows ++@ifhtml ++@image{../img/windowed_16} ++@end ifhtml ++. To move them back to main window, ++ simply close the control-windows. ++@item Pop up an options dialog ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++, where you can select which controls should be shown at all. ++@end itemize ++ ++All window configurations and coordinates are remembered. The actual mixer ++settings are @emph{not} remembered, since this is done globally by the ++Alsa startup scripts. ++ ++@node Visualizer ++@section Visualizer ++ ++@ifhtml ++@image{../img/visualizer} ++ ++@end ifhtml ++ ++Type @code{gmerlin_visualizer} to start this. ++Gmerlin visualizer opens your soundard for recording and displays a ++visualization in a window. It supports fullscreen and mouse- and ++keyboard interaction with visuals for visualization plugins, which ++support this. ++If you move the mouse or press the ``Menu key'', the toolbar will show ++up (either method can be disabled). It will be hidden again after ++the mouse is idle for some seconds. ++ ++In the @b{upper left row}, you can change the input plugin, show info ++about the plugin ++@ifhtml ++@image{../img/info_16} ++@end ifhtml ++or configure the visualization ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++. ++ ++In the @b{lower left row}, you can change the recording- and ++display plugins ++@ifhtml ++@image{../img/plugin_16} ++@end ifhtml ++, set global (plugin independent) options ++@ifhtml ++@image{../img/config_16} ++@end ifhtml ++, restart the visualization ++@ifhtml ++@image{../img/refresh_16} ++@end ifhtml ++, switch to fullscreen ++@ifhtml ++@image{../img/fullscreen_16} ++@end ifhtml ++or back ++@ifhtml ++@image{../img/windowed_16} ++@end ifhtml ++. Moreover you can show or hide the @ref{gui_log, Log window} ++@ifhtml ++@image{../img/log_16} ++@end ifhtml ++or exit ++@ifhtml ++@image{../img/quit_16} ++@end ifhtml ++the application. ++ ++The @b{VU-meter} at the right displays the recording level as it comes ++from the device (i.e. @b{before} the visualizer gain is applied). ++ ++You have the following @b{Shortcuts}: ++ ++@table @kbd ++@item f ++Toggle fullscreen mode ++@item Tab ++Toggle fullscreen mode ++@item Escape ++Exit fullscreen mode ++@item Menu ++Show toolbar ++@end table ++ ++All other keyboard- and mouse events are propagated to the display ++plugin and then to the visualization plugin. ++ ++@node Keyboard daemon ++@section Keyboard daemon ++@ifhtml ++@image{../img/kbd_mainwin} ++ ++@end ifhtml ++The gmerlin keyboard daemon is an X11 application, which grabs key combinations ++and executes commands. You will communicate mostly via ++the configuration utility @code{gmerlin_kbd_config}. It's independent of ++keyboard model definitions, because it allows to enter the keyboard combination ++in the config dialog directly. It's independent of gmerlin or any other ++multimedia architecture, since the actions can be arbitrary shell commands. ++ ++You can manually start and stop the keyboard daemon, add, edit and delete ++key combinations and tell the daemon to apply the changes. ++ ++To automatically start the keyboard daemon at each X11 start, find out ++where to enter start commands in your desktop configuration add the ++command @code{/usr/local/bin/gmerlin_kbd}. Change @code{/usr/local} to ++your install prefix if necessary. ++ ++Messages from the keyboard daemon show up in @file{/var/log/messages} or ++in another syslog file depending on your system setup. ++ ++@node Plugins, FAQ, Applications, Top ++@chapter Plugins ++ ++@include plugins.texi ++ ++@node FAQ, Get involved, Plugins, Top ++@chapter FAQ ++ ++@menu ++* General questions:: ++* Installation questions:: ++* Usage questions:: ++@end menu ++ ++@node General questions ++@section General questions ++ ++@node Installation questions ++@section Installation questions ++ ++@strong{Q:} @emph{Why do I have to install so many packages to get all features?} ++ ++@strong{A:} Because having one huge package is not good for people, who want to use ++only one small subset of the included libraries or applications. To make installation ++a bit easier, there are the gmerlin-dependencies and gmerlin-all-in-one packages. ++ ++@strong{Q:} @emph{How do I enable Ladspa plugins?} ++ ++@strong{A:} Gmerlin looks for Ladspa plugins in @code{/usr/lib/ladspa} and ++@code{/usr/local/lib/ladspa} by default. Additional paths can be set with the ++@code{LADSPA_PATH} enviromnent variable. ++ ++@strong{Q:} @emph{Which Ladspa plugins work with gmerlin?} ++ ++@strong{A:} All plugins, which have either 1 or 2 input and output ports. The numbers ++of input- and output ports must be equal. ++ ++@strong{Q:} How do I enable DVB? ++ ++@strong{A:} Gmerlin looks for DVB devices in /dev/dvb. Then, you must pass gmerlin ++ a channel configuration file created with the @uref{http://www.linuxtv.org/wiki/index.php/LinuxTV_dvb-apps,dvb-apps} ++ tools. Check the documentation coming with dvb-apps for how to create channel files. Gmerlin looks for channel maps ++ in the directories @code{$HOME/.szap}, @code{$HOME/.tzap}, @code{$HOME/.czap}, ++ @code{$HOME/.azap}, @code{$HOME/.mplayer} and @code{$HOME/.xine}. The first time, you load the DVB plugin, ++ and each time you changed your channel map, the plugin will tune to each transponder and get the full ++ information about the programs (the information provided by dvp-apps is not sufficient). This can take some time. ++ ++@node Usage questions ++@section Usage questions ++ ++@strong{Q:} @emph{Ok, I compiled gmerlin and started the player, now how do I play a file?} ++ ++@strong{A:} The easiest way is to open the Incoming or Favourites album ++and use one of the buttons at the bottom to open a file or URL. Or drag the ++file from a filemanager into an album. Later you might want to create ++your own albums. ++ ++@strong{Q:} @emph{Can I play a VCD image from harddisk before burning?} ++ ++@strong{A:} Yes. If you use vcdimager, you have 2 files: a .bin file and a .cue ++ file. If you load the .cue file with the avdecoder plugin, you'll be ++ able to play the VCD image. ++ ++@strong{Q:} @emph{Can I play a DVD image from harddisk or from a mounted DVD drive?} ++ ++@strong{A:} Yes, in the dvd directory, go to the subdirectory @code{video_ts} and load the ++ file @code{video_ts.ifo}. ++ ++@strong{Q:} @emph{Can I play an audio CD image from harddisk before burning?} ++ ++@strong{A:} Not yet. ++ ++@strong{Q:} @emph{How can I make gmerlin the default audio CD player on my Desktop environment?} ++ ++@strong{A:} First, find out how to configure the default audio CD player on your system. ++ Usually, you can set a command, which is executed, when a new audio cd is inserted. ++ Assuming your cdrom device is @code{/dev/hdd}, the command for opening and playing ++ an audio cd is: ++ ++ @code{gmerlin_remote -launch -openplay cda:///dev/hdd} ++ ++ If you just want ot open the CD (without starting playback), use: ++ ++ @code{gmerlin_remote -launch -open cda:///dev/hdd} ++ ++@strong{Q:} @emph{How can I make gmerlin the default DVD player on my Desktop environment?} ++ ++@strong{A:} Same as for audio CDs, but replace @code{cda://} with @code{dvd://}. ++ ++@strong{Q:} @emph{How can I configure gmerlin as a Mime handler for media files on my Desktop environment?} ++ ++@strong{A:} Find out how to set up mime handlers (e.g. right click onto a file and select ``Open with...''). ++ Then, enter the command @code{gmerlin_launcher}. ++ ++@strong{Q:} @emph{How can I map multimedia keys on my keyboard to gmerlin functions?} ++ ++@strong{A:} You need some way to configure custom shell commands for multimedia keys. Check the ++documentation of your Desktop system. To remote control gmerlin, use the commandline program ++@code{gmerlin_remote}. Type @code{gmerlin_remote -help} for supported options and commands. ++ ++@node Get involved, , FAQ, Top ++@chapter Get involved ++ ++Contribution to gmerlin can happen at several skill levels: ++ ++@itemize @bullet ++@item Report bugs and installation problems, tell about features you'd like to see. ++@item Tell us about files, which cannot be played. An URL and some infos (other applications ++ which play the file fine) can help a lot. ++@item Make skins. In /usr/local/gmerlin/skins/Default/skin.xml, you'll find an example skin description file. ++@item Assembler gurus can write more speed optimized routines for gavl ++@item Mathematics gurus can write more accurate routines for the higher quality ++levels of gavl. ++@end itemize ++ ++@bye ++ +diff -Naur gmerlin-1.2.0.orig/doc/gmerlin.texi gmerlin-1.2.0/doc/gmerlin.texi +--- gmerlin-1.2.0.orig/doc/gmerlin.texi 2013-02-27 16:56:41.202827892 -0800 ++++ gmerlin-1.2.0/doc/gmerlin.texi 2013-02-27 16:58:29.743890528 -0800 +@@ -461,7 +461,7 @@ + + A gml can be: + +-@table @bullet ++@table @b + @item A regular filename + Optionally preceeded with ``file://''. This means, that @b{/files/music.mp3} is the same as + @b{file:///files/music.mp3}. diff --git a/community/gmerlin/gmerlin.install b/community/gmerlin/gmerlin.install new file mode 100644 index 000000000..c7625c2f1 --- /dev/null +++ b/community/gmerlin/gmerlin.install @@ -0,0 +1,25 @@ +infodir=usr/share/info +filelist=(gmerlin.info) + +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor + [[ -x usr/bin/install-info ]] || return 0 + for file in "${filelist[@]}"; do + install-info "$infodir/$file.gz" "$infodir/dir" 2> /dev/null + done +} + +post_upgrade() { + post_install "$1" +} + +pre_remove() { + [[ -x usr/bin/install-info ]] || return 0 + for file in "${filelist[@]}"; do + install-info --delete "$infodir/$file.gz" "$infodir/dir" 2> /dev/null + done +} + +post_remove() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} |