RaWrapper for Linux

Version 0.1
01/03/99

Max Spring (sepp@cs.tu-berlin.de)


Download: rawrapper-0.1.tar.gz

COPYRIGHT

RaWrapper is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2

INTRODUCTION

RaWrapper is a simple program which allows to control X11-based audio stream players, like RealNetwork's RealPlayer, from the command line, without the necessity of having a regular X server running. RaWrapper is inspired by Toby Reed's <toby@eskimo.com> Traplayer v0.5 available at:

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/traplayer-0.5.tar.gz

Launching the audio player itself is a fairly simple task by using the virtual framebuffer X server Xfvb from XFree86:

ftp://ftp.xfree86.org/pub/XFree86/3.3.3/binaries/Linux-ix86-glibc/Xvfb.tgz
or
ftp://ftp.xfree86.org/pub/XFree86/3.3.3/binaries/Linux-ix86-libc5/Xvfb.tgz

The actual problem in controlling the player is to detect whether the player is playing the audio properly or not, so that in case it doesn't the player can be killed.

The problem I found with Traplayer is that it is doing this detection by using the error code of a 'head -c 1 /dev/dsp', i.e. if the audio player is playing, the 'head' command will return an error, since /dev/dsp can be opened by only one process at a time. This caused a problem from time to time, if the audio player was trying to open /dev/dsp in the exact time between the head's open and close, so that the audio player complained with a message "audio device not accessible".

Besides the fact that Traplayer is a shell script and RaWrapper is written in C, RaWrapper takes also a different approach in detecting whether the player is idle. Via the means of the /proc pseudo file system, RaWrapper monitors the audio player's number of used file handles and consumed cpu time.

If the number of open file handles is not what it is usually, or the cpu time is zero, the audio player is killed after a certain amount of timeout seconds.

FILES

The package rawrapper-0.1.tar.gz consists of the following files:

COPYING - GNU General Public License v2
README - This file
Makefile - Simple Makefile for easier compilation
rawrapper - A binary for Linux i386
rawrapper.c- The C source file

COMMAND LINE ARGUMENTS

Usage: rawrapper [option] location
Options (defaults shown in parentheses):
-h show usage
-v verbose
-display <string> display for audio player (localhost:2.0)
-d <int> display number (2)
-xp <filespec> Xvfb path (/usr/X11R6/bin/Xvfb)
-fp <dirspec> font path (/usr/X11R6/lib/X11/fonts/misc)
-s <string> screen size (360x200x8)
-fn <name> default font (7x14)
-rp <filespec> audio player path (/opt/rvplayer5.0/rvplayer)
-fd <int> fd count when playing (9)
-to <int> time out in seconds (60)

OPTIONS

-h
Will display usage information; same as starting RaWrapper without any arguments at all.

-v
Will display some additional information useful for debugging.

-display <string>
By default, RaWrapper launches a Xvfb pseudo X server with a display number 2 and lets the audio player connect to that X server. For debugging purposes it is sometimes useful to specify here the name of a regular X server, e.g. "localhost:0.0", so the audio player can be seen.

-d Is supposed to be used to specify a different display number in case 2
is already in use. The Xvfb I have here seems to have problems with that.

-xp <filespec>
Defines the full path of the Xvfb executable.

-fp <dirspec>
Defines the full path of the directory containing the fonts which are supposed to be used by Xvfb.

-s <string>
Defines the geometry of the pseudo X server in the format of WIDTHxHEIGHTxCOLORDEPTH.

-fn <name>
Defines the default font which is supposed to be used by the audio player. "7x14" should be availabe on most systems; "nil2" might reduce the geometry of the audio player.

-rp <filespec>
Defines the full path of the audio player executable. RaWrapper will create an environment variable "LD_LIBRARY_PATH" with the name of the directory containing that executable before it launches the audio player.

-fd <int>
Defines the number of file handles which are usually open when the audio player properly plays audio. Can be figured out by using option "-v".

-to <int>
Defines the number of seconds until the audio player process (and the Xvfb process) is killed after RaPlayer has detected that the audio player is idle.

EXIT CODE

0 - Termination without error.
1 - RaWrapper received a SIGTERM, or SIGINT.
2 - RaWrapper terminated with a timeout.


Last modified: Mon Jan 4 07:11:43 MET 1999